0s autopkgtest [20:30:59]: starting date and time: 2024-11-23 20:30:59+0000 0s autopkgtest [20:30:59]: git checkout: 0acbae0a WIP show VirtSubproc stderr in real-time 0s autopkgtest [20:30:59]: host juju-7f2275-prod-proposed-migration-environment-2; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.bqkxhars/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:tiktoken,src:python3-defaults --apt-upgrade tiktoken --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 '--env=ADT_TEST_TRIGGERS=tiktoken/0.8.0-1build1 python3-defaults/3.12.7-1' -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest-s390x --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-2@bos03-s390x-15.secgroup --name adt-plucky-s390x-tiktoken-20241123-203059-juju-7f2275-prod-proposed-migration-environment-2-e6d601a2-42c2-42f2-99c2-9d18481b7e6a --image adt/ubuntu-plucky-s390x-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-2 --net-id=net_prod-proposed-migration-s390x -e TERM=linux -e ''"'"'http_proxy=http://squid.internal:3128'"'"'' -e ''"'"'https_proxy=http://squid.internal:3128'"'"'' -e ''"'"'no_proxy=127.0.0.1,127.0.1.1,login.ubuntu.com,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,keyserver.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,10.24.0.0/24,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com'"'"'' --mirror=http://ftpmaster.internal/ubuntu/ 104s autopkgtest [20:32:43]: testbed dpkg architecture: s390x 104s autopkgtest [20:32:43]: testbed apt version: 2.9.8 104s autopkgtest [20:32:43]: @@@@@@@@@@@@@@@@@@@@ test bed setup 105s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease [73.9 kB] 105s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/universe Sources [930 kB] 105s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/main Sources [54.8 kB] 105s Get:4 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse Sources [13.6 kB] 105s Get:5 http://ftpmaster.internal/ubuntu plucky-proposed/restricted Sources [9704 B] 105s Get:6 http://ftpmaster.internal/ubuntu plucky-proposed/main s390x Packages [70.6 kB] 105s Get:7 http://ftpmaster.internal/ubuntu plucky-proposed/restricted s390x Packages [756 B] 105s Get:8 http://ftpmaster.internal/ubuntu plucky-proposed/universe s390x Packages [760 kB] 105s Get:9 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse s390x Packages [6452 B] 105s Fetched 1920 kB in 1s (2415 kB/s) 105s Reading package lists... 108s Reading package lists... 108s Building dependency tree... 108s Reading state information... 108s Calculating upgrade... 108s The following package was automatically installed and is no longer required: 108s libsgutils2-1.46-2 108s Use 'sudo apt autoremove' to remove it. 108s The following NEW packages will be installed: 108s libsgutils2-1.48 108s The following packages will be upgraded: 108s bash bpftrace curl debconf debconf-i18n distro-info gir1.2-girepository-2.0 108s gir1.2-glib-2.0 hostname libaudit-common libaudit1 libcurl3t64-gnutls 108s libcurl4t64 libgirepository-1.0-1 libglib2.0-0t64 libglib2.0-data 108s libpam-modules libpam-modules-bin libpam-runtime libpam0g libplymouth5 108s libpython3-stdlib libselinux1 libsemanage-common libsemanage2 linux-base 108s lxd-installer openssh-client openssh-server openssh-sftp-server plymouth 108s plymouth-theme-ubuntu-text python3 python3-blinker python3-debconf 108s python3-jsonschema-specifications python3-minimal python3-rpds-py 108s python3-yaml sg3-utils sg3-utils-udev vim-common vim-tiny xxd 108s 44 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 108s Need to get 11.4 MB of archives. 108s After this operation, 2418 kB of additional disk space will be used. 108s Get:1 http://ftpmaster.internal/ubuntu plucky/main s390x bash s390x 5.2.32-1ubuntu2 [845 kB] 109s Get:2 http://ftpmaster.internal/ubuntu plucky/main s390x hostname s390x 3.25 [11.2 kB] 109s Get:3 http://ftpmaster.internal/ubuntu plucky/main s390x libaudit-common all 1:4.0.2-2ubuntu1 [6578 B] 109s Get:4 http://ftpmaster.internal/ubuntu plucky/main s390x libaudit1 s390x 1:4.0.2-2ubuntu1 [52.5 kB] 109s Get:5 http://ftpmaster.internal/ubuntu plucky/main s390x debconf-i18n all 1.5.87ubuntu1 [204 kB] 109s Get:6 http://ftpmaster.internal/ubuntu plucky-proposed/main s390x python3-minimal s390x 3.12.7-1 [27.4 kB] 109s Get:7 http://ftpmaster.internal/ubuntu plucky-proposed/main s390x python3 s390x 3.12.7-1 [24.0 kB] 109s Get:8 http://ftpmaster.internal/ubuntu plucky-proposed/main s390x libpython3-stdlib s390x 3.12.7-1 [10.0 kB] 109s Get:9 http://ftpmaster.internal/ubuntu plucky/main s390x python3-debconf all 1.5.87ubuntu1 [4156 B] 109s Get:10 http://ftpmaster.internal/ubuntu plucky/main s390x debconf all 1.5.87ubuntu1 [124 kB] 109s Get:11 http://ftpmaster.internal/ubuntu plucky/main s390x libpam0g s390x 1.5.3-7ubuntu4 [70.0 kB] 109s Get:12 http://ftpmaster.internal/ubuntu plucky/main s390x libselinux1 s390x 3.7-3ubuntu1 [85.2 kB] 109s Get:13 http://ftpmaster.internal/ubuntu plucky/main s390x libpam-modules-bin s390x 1.5.3-7ubuntu4 [56.2 kB] 109s Get:14 http://ftpmaster.internal/ubuntu plucky/main s390x libpam-modules s390x 1.5.3-7ubuntu4 [294 kB] 109s Get:15 http://ftpmaster.internal/ubuntu plucky/main s390x openssh-sftp-server s390x 1:9.9p1-3ubuntu2 [38.2 kB] 109s Get:16 http://ftpmaster.internal/ubuntu plucky/main s390x openssh-server s390x 1:9.9p1-3ubuntu2 [552 kB] 109s Get:17 http://ftpmaster.internal/ubuntu plucky/main s390x openssh-client s390x 1:9.9p1-3ubuntu2 [955 kB] 109s Get:18 http://ftpmaster.internal/ubuntu plucky/main s390x libpam-runtime all 1.5.3-7ubuntu4 [40.8 kB] 109s Get:19 http://ftpmaster.internal/ubuntu plucky/main s390x libsemanage-common all 3.7-2build1 [7186 B] 109s Get:20 http://ftpmaster.internal/ubuntu plucky/main s390x libsemanage2 s390x 3.7-2build1 [97.1 kB] 109s Get:21 http://ftpmaster.internal/ubuntu plucky/main s390x distro-info s390x 1.12 [20.0 kB] 109s Get:22 http://ftpmaster.internal/ubuntu plucky/main s390x gir1.2-girepository-2.0 s390x 1.82.0-2 [25.0 kB] 109s Get:23 http://ftpmaster.internal/ubuntu plucky/main s390x gir1.2-glib-2.0 s390x 2.82.2-3 [180 kB] 109s Get:24 http://ftpmaster.internal/ubuntu plucky/main s390x libglib2.0-0t64 s390x 2.82.2-3 [1575 kB] 109s Get:25 http://ftpmaster.internal/ubuntu plucky/main s390x libgirepository-1.0-1 s390x 1.82.0-2 [84.9 kB] 109s Get:26 http://ftpmaster.internal/ubuntu plucky/main s390x libglib2.0-data all 2.82.2-3 [51.7 kB] 109s Get:27 http://ftpmaster.internal/ubuntu plucky/main s390x python3-yaml s390x 6.0.2-1build1 [188 kB] 109s Get:28 http://ftpmaster.internal/ubuntu plucky/main s390x vim-tiny s390x 2:9.1.0861-1ubuntu1 [664 kB] 109s Get:29 http://ftpmaster.internal/ubuntu plucky/main s390x vim-common all 2:9.1.0861-1ubuntu1 [395 kB] 109s Get:30 http://ftpmaster.internal/ubuntu plucky/main s390x xxd s390x 2:9.1.0861-1ubuntu1 [66.6 kB] 109s Get:31 http://ftpmaster.internal/ubuntu plucky/main s390x libplymouth5 s390x 24.004.60-2ubuntu3 [150 kB] 109s Get:32 http://ftpmaster.internal/ubuntu plucky/main s390x plymouth-theme-ubuntu-text s390x 24.004.60-2ubuntu3 [10.1 kB] 109s Get:33 http://ftpmaster.internal/ubuntu plucky/main s390x plymouth s390x 24.004.60-2ubuntu3 [144 kB] 109s Get:34 http://ftpmaster.internal/ubuntu plucky/main s390x bpftrace s390x 0.21.2-2ubuntu3 [1718 kB] 109s Get:35 http://ftpmaster.internal/ubuntu plucky/main s390x curl s390x 8.9.1-2ubuntu3 [241 kB] 109s Get:36 http://ftpmaster.internal/ubuntu plucky/main s390x libcurl4t64 s390x 8.9.1-2ubuntu3 [386 kB] 109s Get:37 http://ftpmaster.internal/ubuntu plucky/main s390x libcurl3t64-gnutls s390x 8.9.1-2ubuntu3 [379 kB] 109s Get:38 http://ftpmaster.internal/ubuntu plucky/main s390x libsgutils2-1.48 s390x 1.48-0ubuntu1 [120 kB] 109s Get:39 http://ftpmaster.internal/ubuntu plucky/main s390x linux-base all 4.10.1ubuntu1 [34.8 kB] 109s Get:40 http://ftpmaster.internal/ubuntu plucky/main s390x lxd-installer all 10 [5264 B] 109s Get:41 http://ftpmaster.internal/ubuntu plucky/main s390x python3-blinker all 1.9.0-1 [10.7 kB] 109s Get:42 http://ftpmaster.internal/ubuntu plucky/main s390x python3-rpds-py s390x 0.21.0-2ubuntu1 [368 kB] 109s Get:43 http://ftpmaster.internal/ubuntu plucky/main s390x python3-jsonschema-specifications all 2023.12.1-2 [9116 B] 109s Get:44 http://ftpmaster.internal/ubuntu plucky/main s390x sg3-utils s390x 1.48-0ubuntu1 [1027 kB] 109s Get:45 http://ftpmaster.internal/ubuntu plucky/main s390x sg3-utils-udev all 1.48-0ubuntu1 [6608 B] 110s Preconfiguring packages ... 110s Fetched 11.4 MB in 1s (9428 kB/s) 110s (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 ... 55541 files and directories currently installed.) 110s Preparing to unpack .../bash_5.2.32-1ubuntu2_s390x.deb ... 110s Unpacking bash (5.2.32-1ubuntu2) over (5.2.32-1ubuntu1) ... 110s Setting up bash (5.2.32-1ubuntu2) ... 110s update-alternatives: using /usr/share/man/man7/bash-builtins.7.gz to provide /usr/share/man/man7/builtins.7.gz (builtins.7.gz) in auto mode 110s (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 ... 55541 files and directories currently installed.) 110s Preparing to unpack .../hostname_3.25_s390x.deb ... 110s Unpacking hostname (3.25) over (3.23+nmu2ubuntu2) ... 110s Setting up hostname (3.25) ... 110s (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 ... 55541 files and directories currently installed.) 110s Preparing to unpack .../libaudit-common_1%3a4.0.2-2ubuntu1_all.deb ... 110s Unpacking libaudit-common (1:4.0.2-2ubuntu1) over (1:4.0.1-1ubuntu2) ... 110s Setting up libaudit-common (1:4.0.2-2ubuntu1) ... 110s (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 ... 55541 files and directories currently installed.) 110s Preparing to unpack .../libaudit1_1%3a4.0.2-2ubuntu1_s390x.deb ... 110s Unpacking libaudit1:s390x (1:4.0.2-2ubuntu1) over (1:4.0.1-1ubuntu2) ... 110s Setting up libaudit1:s390x (1:4.0.2-2ubuntu1) ... 110s (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 ... 55541 files and directories currently installed.) 110s Preparing to unpack .../debconf-i18n_1.5.87ubuntu1_all.deb ... 110s Unpacking debconf-i18n (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 110s Preparing to unpack .../python3-minimal_3.12.7-1_s390x.deb ... 110s Unpacking python3-minimal (3.12.7-1) over (3.12.6-0ubuntu1) ... 110s Setting up python3-minimal (3.12.7-1) ... 110s (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 ... 55541 files and directories currently installed.) 110s Preparing to unpack .../python3_3.12.7-1_s390x.deb ... 110s Unpacking python3 (3.12.7-1) over (3.12.6-0ubuntu1) ... 110s Preparing to unpack .../libpython3-stdlib_3.12.7-1_s390x.deb ... 110s Unpacking libpython3-stdlib:s390x (3.12.7-1) over (3.12.6-0ubuntu1) ... 110s Preparing to unpack .../python3-debconf_1.5.87ubuntu1_all.deb ... 110s Unpacking python3-debconf (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 110s Preparing to unpack .../debconf_1.5.87ubuntu1_all.deb ... 110s Unpacking debconf (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 110s Setting up debconf (1.5.87ubuntu1) ... 110s (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 ... 55541 files and directories currently installed.) 110s Preparing to unpack .../libpam0g_1.5.3-7ubuntu4_s390x.deb ... 110s Unpacking libpam0g:s390x (1.5.3-7ubuntu4) over (1.5.3-7ubuntu2) ... 110s Setting up libpam0g:s390x (1.5.3-7ubuntu4) ... 110s (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 ... 55541 files and directories currently installed.) 110s Preparing to unpack .../libselinux1_3.7-3ubuntu1_s390x.deb ... 110s Unpacking libselinux1:s390x (3.7-3ubuntu1) over (3.5-2ubuntu5) ... 110s Setting up libselinux1:s390x (3.7-3ubuntu1) ... 111s (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 ... 55541 files and directories currently installed.) 111s Preparing to unpack .../libpam-modules-bin_1.5.3-7ubuntu4_s390x.deb ... 111s Unpacking libpam-modules-bin (1.5.3-7ubuntu4) over (1.5.3-7ubuntu2) ... 111s Setting up libpam-modules-bin (1.5.3-7ubuntu4) ... 111s pam_namespace.service is a disabled or a static unit not running, not starting it. 111s (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 ... 55541 files and directories currently installed.) 111s Preparing to unpack .../libpam-modules_1.5.3-7ubuntu4_s390x.deb ... 111s Unpacking libpam-modules:s390x (1.5.3-7ubuntu4) over (1.5.3-7ubuntu2) ... 111s Setting up libpam-modules:s390x (1.5.3-7ubuntu4) ... 111s (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 ... 55541 files and directories currently installed.) 111s Preparing to unpack .../openssh-sftp-server_1%3a9.9p1-3ubuntu2_s390x.deb ... 111s Unpacking openssh-sftp-server (1:9.9p1-3ubuntu2) over (1:9.7p1-7ubuntu5) ... 111s Preparing to unpack .../openssh-server_1%3a9.9p1-3ubuntu2_s390x.deb ... 111s Unpacking openssh-server (1:9.9p1-3ubuntu2) over (1:9.7p1-7ubuntu5) ... 111s Preparing to unpack .../openssh-client_1%3a9.9p1-3ubuntu2_s390x.deb ... 111s Unpacking openssh-client (1:9.9p1-3ubuntu2) over (1:9.7p1-7ubuntu5) ... 111s Preparing to unpack .../libpam-runtime_1.5.3-7ubuntu4_all.deb ... 111s Unpacking libpam-runtime (1.5.3-7ubuntu4) over (1.5.3-7ubuntu2) ... 111s Setting up libpam-runtime (1.5.3-7ubuntu4) ... 111s (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 ... 55543 files and directories currently installed.) 111s Preparing to unpack .../libsemanage-common_3.7-2build1_all.deb ... 111s Unpacking libsemanage-common (3.7-2build1) over (3.5-1build6) ... 111s Setting up libsemanage-common (3.7-2build1) ... 111s (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 ... 55542 files and directories currently installed.) 111s Preparing to unpack .../libsemanage2_3.7-2build1_s390x.deb ... 111s Unpacking libsemanage2:s390x (3.7-2build1) over (3.5-1build6) ... 111s Setting up libsemanage2:s390x (3.7-2build1) ... 111s (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 ... 55542 files and directories currently installed.) 111s Preparing to unpack .../00-distro-info_1.12_s390x.deb ... 111s Unpacking distro-info (1.12) over (1.9) ... 111s Preparing to unpack .../01-gir1.2-girepository-2.0_1.82.0-2_s390x.deb ... 111s Unpacking gir1.2-girepository-2.0:s390x (1.82.0-2) over (1.80.1-4) ... 111s Preparing to unpack .../02-gir1.2-glib-2.0_2.82.2-3_s390x.deb ... 111s Unpacking gir1.2-glib-2.0:s390x (2.82.2-3) over (2.82.1-0ubuntu1) ... 111s Preparing to unpack .../03-libglib2.0-0t64_2.82.2-3_s390x.deb ... 111s Unpacking libglib2.0-0t64:s390x (2.82.2-3) over (2.82.1-0ubuntu1) ... 111s Preparing to unpack .../04-libgirepository-1.0-1_1.82.0-2_s390x.deb ... 111s Unpacking libgirepository-1.0-1:s390x (1.82.0-2) over (1.80.1-4) ... 111s Preparing to unpack .../05-libglib2.0-data_2.82.2-3_all.deb ... 111s Unpacking libglib2.0-data (2.82.2-3) over (2.82.1-0ubuntu1) ... 111s Preparing to unpack .../06-python3-yaml_6.0.2-1build1_s390x.deb ... 111s Unpacking python3-yaml (6.0.2-1build1) over (6.0.2-1) ... 111s Preparing to unpack .../07-vim-tiny_2%3a9.1.0861-1ubuntu1_s390x.deb ... 111s Unpacking vim-tiny (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 111s Preparing to unpack .../08-vim-common_2%3a9.1.0861-1ubuntu1_all.deb ... 111s Unpacking vim-common (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 111s Preparing to unpack .../09-xxd_2%3a9.1.0861-1ubuntu1_s390x.deb ... 111s Unpacking xxd (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 111s Preparing to unpack .../10-libplymouth5_24.004.60-2ubuntu3_s390x.deb ... 111s Unpacking libplymouth5:s390x (24.004.60-2ubuntu3) over (24.004.60-1ubuntu11) ... 111s Preparing to unpack .../11-plymouth-theme-ubuntu-text_24.004.60-2ubuntu3_s390x.deb ... 111s Unpacking plymouth-theme-ubuntu-text (24.004.60-2ubuntu3) over (24.004.60-1ubuntu11) ... 111s Preparing to unpack .../12-plymouth_24.004.60-2ubuntu3_s390x.deb ... 112s Unpacking plymouth (24.004.60-2ubuntu3) over (24.004.60-1ubuntu11) ... 112s Preparing to unpack .../13-bpftrace_0.21.2-2ubuntu3_s390x.deb ... 112s Unpacking bpftrace (0.21.2-2ubuntu3) over (0.21.2-2ubuntu2) ... 112s Preparing to unpack .../14-curl_8.9.1-2ubuntu3_s390x.deb ... 112s Unpacking curl (8.9.1-2ubuntu3) over (8.9.1-2ubuntu2) ... 112s Preparing to unpack .../15-libcurl4t64_8.9.1-2ubuntu3_s390x.deb ... 112s Unpacking libcurl4t64:s390x (8.9.1-2ubuntu3) over (8.9.1-2ubuntu2) ... 112s Preparing to unpack .../16-libcurl3t64-gnutls_8.9.1-2ubuntu3_s390x.deb ... 112s Unpacking libcurl3t64-gnutls:s390x (8.9.1-2ubuntu3) over (8.9.1-2ubuntu2) ... 112s Selecting previously unselected package libsgutils2-1.48:s390x. 112s Preparing to unpack .../17-libsgutils2-1.48_1.48-0ubuntu1_s390x.deb ... 112s Unpacking libsgutils2-1.48:s390x (1.48-0ubuntu1) ... 112s Preparing to unpack .../18-linux-base_4.10.1ubuntu1_all.deb ... 112s Unpacking linux-base (4.10.1ubuntu1) over (4.5ubuntu9) ... 112s Preparing to unpack .../19-lxd-installer_10_all.deb ... 112s Unpacking lxd-installer (10) over (9) ... 112s Preparing to unpack .../20-python3-blinker_1.9.0-1_all.deb ... 112s Unpacking python3-blinker (1.9.0-1) over (1.8.2-1) ... 112s Preparing to unpack .../21-python3-rpds-py_0.21.0-2ubuntu1_s390x.deb ... 112s Unpacking python3-rpds-py (0.21.0-2ubuntu1) over (0.20.0-0ubuntu3) ... 112s Preparing to unpack .../22-python3-jsonschema-specifications_2023.12.1-2_all.deb ... 112s Unpacking python3-jsonschema-specifications (2023.12.1-2) over (2023.12.1-1ubuntu1) ... 112s Preparing to unpack .../23-sg3-utils_1.48-0ubuntu1_s390x.deb ... 112s Unpacking sg3-utils (1.48-0ubuntu1) over (1.46-3ubuntu5) ... 112s Preparing to unpack .../24-sg3-utils-udev_1.48-0ubuntu1_all.deb ... 112s Unpacking sg3-utils-udev (1.48-0ubuntu1) over (1.46-3ubuntu5) ... 112s Setting up distro-info (1.12) ... 112s Setting up linux-base (4.10.1ubuntu1) ... 112s Setting up libcurl4t64:s390x (8.9.1-2ubuntu3) ... 112s Setting up bpftrace (0.21.2-2ubuntu3) ... 112s Setting up openssh-client (1:9.9p1-3ubuntu2) ... 112s Setting up libcurl3t64-gnutls:s390x (8.9.1-2ubuntu3) ... 112s Setting up libsgutils2-1.48:s390x (1.48-0ubuntu1) ... 112s Setting up debconf-i18n (1.5.87ubuntu1) ... 112s Setting up xxd (2:9.1.0861-1ubuntu1) ... 112s Setting up libglib2.0-0t64:s390x (2.82.2-3) ... 112s No schema files found: doing nothing. 112s Setting up libglib2.0-data (2.82.2-3) ... 112s Setting up vim-common (2:9.1.0861-1ubuntu1) ... 112s Setting up gir1.2-glib-2.0:s390x (2.82.2-3) ... 112s Setting up lxd-installer (10) ... 112s Setting up libplymouth5:s390x (24.004.60-2ubuntu3) ... 112s Setting up libgirepository-1.0-1:s390x (1.82.0-2) ... 112s Setting up curl (8.9.1-2ubuntu3) ... 112s Setting up libpython3-stdlib:s390x (3.12.7-1) ... 112s Setting up sg3-utils (1.48-0ubuntu1) ... 112s Setting up openssh-sftp-server (1:9.9p1-3ubuntu2) ... 112s Setting up openssh-server (1:9.9p1-3ubuntu2) ... 112s Installing new version of config file /etc/ssh/moduli ... 112s Replacing config file /etc/ssh/sshd_config with new version 113s Setting up plymouth (24.004.60-2ubuntu3) ... 113s update-initramfs: Generating /boot/initrd.img-6.11.0-8-generic 113s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 115s Using config file '/etc/zipl.conf' 115s Building bootmap in '/boot' 115s Adding IPL section 'ubuntu' (default) 115s Preparing boot device for LD-IPL: vda (0000). 115s Done. 115s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 115s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 116s Setting up python3 (3.12.7-1) ... 116s Setting up vim-tiny (2:9.1.0861-1ubuntu1) ... 116s Setting up sg3-utils-udev (1.48-0ubuntu1) ... 116s update-initramfs: deferring update (trigger activated) 116s Setting up plymouth-theme-ubuntu-text (24.004.60-2ubuntu3) ... 116s update-initramfs: deferring update (trigger activated) 116s Setting up gir1.2-girepository-2.0:s390x (1.82.0-2) ... 116s Setting up python3-rpds-py (0.21.0-2ubuntu1) ... 116s Setting up python3-jsonschema-specifications (2023.12.1-2) ... 116s Setting up python3-blinker (1.9.0-1) ... 116s Setting up python3-debconf (1.5.87ubuntu1) ... 116s Setting up python3-yaml (6.0.2-1build1) ... 116s Processing triggers for man-db (2.13.0-1) ... 117s Processing triggers for debianutils (5.21) ... 117s Processing triggers for install-info (7.1.1-1) ... 118s Processing triggers for initramfs-tools (0.142ubuntu35) ... 118s update-initramfs: Generating /boot/initrd.img-6.11.0-8-generic 118s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 119s Using config file '/etc/zipl.conf' 119s Building bootmap in '/boot' 119s Adding IPL section 'ubuntu' (default) 119s Preparing boot device for LD-IPL: vda (0000). 119s Done. 120s Processing triggers for libc-bin (2.40-1ubuntu3) ... 120s Processing triggers for ufw (0.36.2-8) ... 120s Reading package lists... 120s Building dependency tree... 120s Reading state information... 120s The following packages will be REMOVED: 120s libsgutils2-1.46-2* 120s 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. 120s After this operation, 294 kB disk space will be freed. 120s (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 ... 55573 files and directories currently installed.) 120s Removing libsgutils2-1.46-2:s390x (1.46-3ubuntu5) ... 120s Processing triggers for libc-bin (2.40-1ubuntu3) ... 121s Hit:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease 121s Hit:2 http://ftpmaster.internal/ubuntu plucky InRelease 121s Hit:3 http://ftpmaster.internal/ubuntu plucky-updates InRelease 121s Hit:4 http://ftpmaster.internal/ubuntu plucky-security InRelease 122s Reading package lists... 122s Reading package lists... 122s Building dependency tree... 122s Reading state information... 122s Calculating upgrade... 122s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 122s Reading package lists... 122s Building dependency tree... 122s Reading state information... 122s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 123s autopkgtest [20:33:02]: rebooting testbed after setup commands that affected boot 127s autopkgtest-virt-ssh: WARNING: ssh connection failed. Retrying in 3 seconds... 145s autopkgtest [20:33:24]: testbed running kernel: Linux 6.11.0-8-generic #8-Ubuntu SMP Mon Sep 16 12:49:35 UTC 2024 148s autopkgtest [20:33:27]: @@@@@@@@@@@@@@@@@@@@ apt-source tiktoken 150s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed/universe tiktoken 0.8.0-1build1 (dsc) [2247 B] 150s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/universe tiktoken 0.8.0-1build1 (tar) [31.6 kB] 150s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/universe tiktoken 0.8.0-1build1 (diff) [3908 B] 150s gpgv: Signature made Mon Nov 18 15:38:19 2024 UTC 150s gpgv: using RSA key 25E3FF2D7F469DBE7D0D4E50AFCFEC8E669CE1C2 150s gpgv: Can't check signature: No public key 150s dpkg-source: warning: cannot verify inline signature for ./tiktoken_0.8.0-1build1.dsc: no acceptable signature found 150s autopkgtest [20:33:29]: testing package tiktoken version 0.8.0-1build1 151s autopkgtest [20:33:30]: build not needed 152s autopkgtest [20:33:31]: test pybuild-autopkgtest: preparing testbed 153s Reading package lists... 153s Building dependency tree... 153s Reading state information... 153s Starting pkgProblemResolver with broken count: 0 153s Starting 2 pkgProblemResolver with broken count: 0 153s Done 153s The following additional packages will be installed: 153s autoconf automake autopoint autotools-dev binutils-mingw-w64-i686 153s binutils-mingw-w64-x86-64 build-essential cargo cargo-1.80 cmake cmake-data 153s cpp cpp-14 cpp-14-s390x-linux-gnu cpp-s390x-linux-gnu debhelper debugedit 153s dh-autoreconf dh-python dh-strip-nondeterminism dwz fontconfig-config 153s fonts-dejavu-core fonts-dejavu-mono g++ g++-14 g++-14-s390x-linux-gnu 153s g++-s390x-linux-gnu gcc gcc-14 gcc-14-s390x-linux-gnu gcc-s390x-linux-gnu 153s gettext intltool-debian libarchive-zip-perl libasan8 libbrotli-dev 153s libbz2-dev libcc1-0 libdebhelper-perl libexpat1-dev 153s libfile-stripnondeterminism-perl libfontconfig-dev libfontconfig1 153s libfreetype-dev libfreetype6 libgcc-14-dev libgit2-1.7 libgomp1 153s libhttp-parser2.9 libisl23 libitm1 libjsoncpp25 libmpc3 libpfm4 libpkgconf3 153s libpng-dev libpython3-all-dev libpython3-dev libpython3.12-dev libpython3.13 153s libpython3.13-dev libpython3.13-minimal libpython3.13-stdlib librhash0 153s librust-ab-glyph-dev librust-ab-glyph-rasterizer+libm-dev 153s librust-ab-glyph-rasterizer-dev librust-addr2line-dev librust-adler-dev 153s librust-ahash-dev librust-aho-corasick-dev librust-allocator-api2-dev 153s librust-anes-dev librust-anstream-dev librust-anstyle-dev 153s librust-anstyle-parse-dev librust-anstyle-query-dev librust-anyhow-dev 153s librust-approx-dev librust-arbitrary-dev librust-array-init-dev 153s librust-arrayvec-dev librust-async-attributes-dev librust-async-channel-dev 153s librust-async-executor-dev librust-async-fs-dev 153s librust-async-global-executor-dev librust-async-io-dev 153s librust-async-lock-dev librust-async-net-dev librust-async-process-dev 153s librust-async-signal-dev librust-async-std-dev librust-async-task-dev 153s librust-atomic-dev librust-atomic-waker-dev librust-autocfg-dev 153s librust-backtrace-dev librust-base64-dev librust-bit-set+std-dev 153s librust-bit-set-dev librust-bit-vec-dev librust-bitflags-1-dev 153s librust-bitflags-dev librust-bitvec-dev librust-blobby-dev 153s librust-block-buffer-dev librust-blocking-dev librust-bstr-dev 153s librust-bumpalo-dev librust-bytecheck-derive-dev librust-bytecheck-dev 153s librust-bytemuck-derive-dev librust-bytemuck-dev librust-byteorder-dev 153s librust-bytes-dev librust-cast-dev librust-cc-dev librust-cfg-if-0.1-dev 153s librust-cfg-if-dev librust-chrono-dev librust-chrono-tz-build-dev 153s librust-chrono-tz-dev librust-ciborium-dev librust-ciborium-io-dev 153s librust-ciborium-ll-dev librust-clap-builder-dev librust-clap-derive-dev 153s librust-clap-dev librust-clap-lex-dev librust-cmake-dev 153s librust-color-quant-dev librust-colorchoice-dev 153s librust-compiler-builtins+core-dev 153s librust-compiler-builtins+rustc-dep-of-std-dev librust-compiler-builtins-dev 153s librust-concurrent-queue-dev librust-const-cstr-dev librust-const-oid-dev 153s librust-const-random-dev librust-const-random-macro-dev 153s librust-convert-case-dev librust-core-maths-dev librust-cpp-demangle-dev 153s librust-cpufeatures-dev librust-crc32fast-dev librust-criterion-dev 153s librust-critical-section-dev librust-crossbeam-deque-dev 153s librust-crossbeam-epoch+std-dev librust-crossbeam-epoch-dev 153s librust-crossbeam-utils-dev librust-crunchy-dev librust-crypto-common-dev 153s librust-csv-core-dev librust-csv-dev librust-ctor-dev librust-deranged-dev 153s librust-derive-arbitrary-dev librust-derive-more-0.99-dev librust-digest-dev 153s librust-dirs-next-dev librust-dirs-sys-next-dev librust-dlib-dev 153s librust-either-dev librust-env-logger-dev librust-equivalent-dev 153s librust-erased-serde-dev librust-errno-dev librust-eui48-dev 153s librust-event-listener-dev librust-event-listener-strategy-dev 153s librust-eyre+default-dev librust-eyre-dev librust-fallible-iterator-dev 153s librust-fancy-regex-dev librust-fastrand-dev librust-flate2-dev 153s librust-float-ord-dev librust-fnv-dev librust-font-kit-dev 153s librust-freetype-dev librust-freetype-sys-dev librust-funty-dev 153s librust-futures-channel-dev librust-futures-core-dev librust-futures-dev 153s librust-futures-executor-dev librust-futures-io-dev librust-futures-lite-dev 153s librust-futures-macro-dev librust-futures-sink-dev librust-futures-task-dev 153s librust-futures-util-dev librust-generic-array-dev librust-geo-types-dev 153s librust-getrandom-dev librust-ghost-dev librust-gif-dev librust-gimli-dev 153s librust-half-dev librust-hashbrown-dev librust-heck-dev librust-hmac-dev 153s librust-humantime-dev librust-iana-time-zone-dev librust-image-dev 153s librust-indenter-dev librust-indexmap-dev librust-indoc-dev 153s librust-inventory-dev librust-is-terminal-dev librust-itertools-dev 153s librust-itoa-dev librust-jobserver-dev librust-jpeg-decoder-dev 153s librust-js-sys-dev librust-kv-log-macro-dev librust-lazy-static-dev 153s librust-libc-dev librust-libloading-dev librust-libm-dev 153s librust-libwebp-sys-dev librust-libz-sys-dev librust-linux-raw-sys-dev 153s librust-lock-api-dev librust-log-dev librust-md-5-dev librust-md5-asm-dev 153s librust-memchr-dev librust-memmap2-dev librust-memoffset-dev 153s librust-miniz-oxide-dev librust-mio-dev librust-no-panic-dev 153s librust-num-bigint-dev librust-num-complex-dev librust-num-conv-dev 153s librust-num-cpus-dev librust-num-integer-dev librust-num-rational-dev 153s librust-num-threads-dev librust-num-traits-dev librust-object-dev 153s librust-once-cell-dev librust-oorandom-dev librust-owned-ttf-parser-dev 153s librust-owning-ref-dev librust-parking-dev librust-parking-lot-core-dev 153s librust-parking-lot-dev librust-parse-zoneinfo-dev 153s librust-pathfinder-geometry-dev librust-pathfinder-simd-dev 153s librust-phf+uncased-dev librust-phf-codegen-dev librust-phf-dev 153s librust-phf-generator-dev librust-phf-shared+uncased-dev 153s librust-phf-shared-dev librust-pin-project-lite-dev librust-pin-utils-dev 153s librust-pkg-config-dev librust-plotters-backend-dev 153s librust-plotters-bitmap-dev librust-plotters-dev librust-plotters-svg-dev 153s librust-png-dev librust-polling-dev librust-portable-atomic-dev 153s librust-postgres-derive-dev librust-postgres-protocol-dev 153s librust-postgres-types-dev librust-powerfmt-dev librust-powerfmt-macros-dev 153s librust-ppv-lite86-dev librust-proc-macro2-dev librust-proptest-dev 153s librust-ptr-meta-derive-dev librust-ptr-meta-dev 153s librust-pure-rust-locales-dev librust-pyo3-build-config-dev librust-pyo3-dev 153s librust-pyo3-ffi-dev librust-pyo3-macros-backend-dev librust-pyo3-macros-dev 153s librust-python3-dll-a-dev librust-qoi-dev librust-quick-error-dev 153s librust-quickcheck-dev librust-quote-dev librust-radium-dev 153s librust-rand-chacha-dev librust-rand-core+getrandom-dev 153s librust-rand-core+serde-dev librust-rand-core+std-dev librust-rand-core-dev 153s librust-rand-dev librust-rand-xorshift-dev librust-rayon-core-dev 153s librust-rayon-dev librust-regex-automata-dev librust-regex-dev 153s librust-regex-syntax-dev librust-rend-dev librust-rkyv-derive-dev 153s librust-rkyv-dev librust-rust-decimal-dev librust-rustc-demangle-dev 153s librust-rustc-hash-dev librust-rustc-std-workspace-core-dev 153s librust-rustc-version-dev librust-rustix-dev 153s librust-rusty-fork+wait-timeout-dev librust-rusty-fork-dev 153s librust-ruzstd-dev librust-ryu-dev librust-same-file-dev 153s librust-scopeguard-dev librust-seahash-dev librust-semver-dev 153s librust-serde-derive-dev librust-serde-dev librust-serde-fmt-dev 153s librust-serde-json-dev librust-serde-test-dev librust-sha1-asm-dev 153s librust-sha1-dev librust-sha2-asm-dev librust-sha2-dev librust-shlex-dev 153s librust-signal-hook-registry-dev librust-simdutf8-dev librust-siphasher-dev 153s librust-slab-dev librust-slog-dev librust-smallvec-dev librust-smol-dev 153s librust-smol-str-dev librust-socket2-dev librust-spin-dev 153s librust-stable-deref-trait-dev librust-static-assertions-dev 153s librust-stringprep-dev librust-strsim-dev librust-subtle-dev 153s librust-sval-buffer-dev librust-sval-derive-dev librust-sval-dev 153s librust-sval-dynamic-dev librust-sval-fmt-dev librust-sval-ref-dev 153s librust-sval-serde-dev librust-syn-1-dev librust-syn-dev librust-tap-dev 153s librust-target-lexicon-dev librust-tempfile-dev librust-termcolor-dev 153s librust-terminal-size-dev librust-tiff-dev librust-time-core-dev 153s librust-time-dev librust-time-macros-dev librust-tiny-keccak-dev 153s librust-tinytemplate-dev librust-tinyvec+tinyvec-macros-dev 153s librust-tinyvec-dev librust-tinyvec-macros-dev librust-tokio-dev 153s librust-tokio-macros-dev librust-tracing-attributes-dev 153s librust-tracing-core-dev librust-tracing-dev librust-traitobject-dev 153s librust-ttf-parser-dev librust-twox-hash-dev librust-typemap-dev 153s librust-typenum-dev librust-unarray-dev librust-uncased-dev 153s librust-unicase-dev librust-unicode-bidi-dev librust-unicode-ident-dev 153s librust-unicode-normalization-dev librust-unicode-segmentation-dev 153s librust-unicode-width-dev librust-unindent-dev librust-unsafe-any-dev 153s librust-utf8parse-dev librust-uuid-dev librust-valuable-derive-dev 153s librust-valuable-dev librust-value-bag-dev librust-value-bag-serde1-dev 153s librust-value-bag-sval2-dev librust-version-check-dev 153s librust-wait-timeout-dev librust-walkdir-dev 153s librust-wasm-bindgen+default-dev librust-wasm-bindgen+spans-dev 153s librust-wasm-bindgen-backend-dev librust-wasm-bindgen-dev 153s librust-wasm-bindgen-macro+spans-dev librust-wasm-bindgen-macro-dev 153s librust-wasm-bindgen-macro-support+spans-dev 153s librust-wasm-bindgen-macro-support-dev librust-wasm-bindgen-shared-dev 153s librust-web-sys-dev librust-webp-dev librust-weezl-dev librust-winapi-dev 153s librust-winapi-i686-pc-windows-gnu-dev librust-winapi-util-dev 153s librust-winapi-x86-64-pc-windows-gnu-dev librust-wyz-dev 153s librust-yeslogic-fontconfig-sys-dev librust-zerocopy-derive-dev 153s librust-zerocopy-dev librust-zeroize-derive-dev librust-zeroize-dev 153s libsharpyuv-dev libsharpyuv0 libstd-rust-1.80 libstd-rust-1.80-dev 153s libstdc++-14-dev libtool libubsan1 libwebp-dev libwebp7 libwebpdecoder3 153s libwebpdemux2 libwebpmux3 llvm llvm-19 llvm-19-linker-tools llvm-19-runtime 153s llvm-runtime m4 pkg-config pkgconf pkgconf-bin po-debconf 153s pybuild-plugin-autopkgtest pybuild-plugin-pyproject python3-all 153s python3-build python3-dateutil python3-hypothesis python3-iniconfig 153s python3-installer python3-packaging python3-pluggy python3-pyproject-hooks 153s python3-pytest python3-regex python3-semantic-version 153s python3-setuptools-rust python3-sortedcontainers python3-tiktoken 153s python3-toml python3-wheel python3.12-dev python3.13 python3.13-minimal 153s rustc rustc-1.80 uuid-dev zlib1g-dev 153s Suggested packages: 153s autoconf-archive gnu-standards autoconf-doc cargo-1.80-doc cmake-doc 153s cmake-format elpa-cmake-mode ninja-build cpp-doc gcc-14-locales cpp-14-doc 153s dh-make flit gcc-14-doc gcc-multilib manpages-dev flex bison gdb gcc-doc 153s gdb-s390x-linux-gnu gettext-doc libasprintf-dev libgettextpo-dev 153s freetype2-doc librust-adler+compiler-builtins-dev librust-adler+core-dev 153s librust-adler+rustc-dep-of-std-dev librust-backtrace+cpp-demangle-dev 153s librust-backtrace+rustc-serialize-dev librust-backtrace+serde-dev 153s librust-backtrace+verify-winapi-dev librust-backtrace+winapi-dev 153s librust-cfg-if-0.1+core-dev librust-cfg-if+core-dev 153s librust-compiler-builtins+c-dev gnuplot-nox librust-csv-core+libc-dev 153s librust-either+serde-dev librust-getrandom+compiler-builtins-dev 153s librust-getrandom+core-dev librust-getrandom+rustc-dep-of-std-dev 153s librust-libc+rustc-dep-of-std-dev librust-libc+rustc-std-workspace-core-dev 153s librust-phf+phf-macros-dev librust-phf+serde-dev librust-phf+unicase-dev 153s librust-phf-shared+unicase-dev librust-rand-xorshift+serde-dev 153s librust-rustc-demangle+compiler-builtins-dev librust-rustc-demangle+core-dev 153s librust-rustc-demangle+rustc-dep-of-std-dev librust-ryu+no-panic-dev 153s librust-slog+erased-serde-dev librust-tinyvec+arbitrary-dev 153s librust-tinyvec+serde-dev librust-uncased+serde-dev 153s librust-uncased+with-serde-alloc-dev 153s librust-wasm-bindgen-backend+extra-traits-dev librust-wasm-bindgen+serde-dev 153s librust-wasm-bindgen+serde-serialize-dev librust-wasm-bindgen+serde-json-dev 153s librust-wasm-bindgen+strict-macro-dev 153s librust-wasm-bindgen+xxx-debug-only-print-generated-code-dev 153s librust-wasm-bindgen-macro+strict-macro-dev 153s librust-wasm-bindgen-macro-support+extra-traits-dev librust-weezl+async-dev 153s librust-weezl+futures-dev libstdc++-14-doc libtool-doc gfortran 153s | fortran95-compiler gcj-jdk llvm-19-doc m4-doc libmail-box-perl python3-pip 153s python3-venv python-build-doc python-hypothesis-doc python-installer-doc 153s python-semantic-version-doc python-sortedcontainers-doc python3.13-venv 153s python3.13-doc binfmt-support llvm-18 lld-18 clang-18 153s Recommended packages: 153s bzip2-doc libarchive-cpio-perl libpng-tools librust-phf+std-dev 153s librust-subtle+default-dev libltdl-dev llvm-19-dev libmail-sendmail-perl 153s python3-click 154s The following NEW packages will be installed: 154s autoconf automake autopkgtest-satdep autopoint autotools-dev 154s binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 build-essential cargo 154s cargo-1.80 cmake cmake-data cpp cpp-14 cpp-14-s390x-linux-gnu 154s cpp-s390x-linux-gnu debhelper debugedit dh-autoreconf dh-python 154s dh-strip-nondeterminism dwz fontconfig-config fonts-dejavu-core 154s fonts-dejavu-mono g++ g++-14 g++-14-s390x-linux-gnu g++-s390x-linux-gnu gcc 154s gcc-14 gcc-14-s390x-linux-gnu gcc-s390x-linux-gnu gettext intltool-debian 154s libarchive-zip-perl libasan8 libbrotli-dev libbz2-dev libcc1-0 154s libdebhelper-perl libexpat1-dev libfile-stripnondeterminism-perl 154s libfontconfig-dev libfontconfig1 libfreetype-dev libfreetype6 libgcc-14-dev 154s libgit2-1.7 libgomp1 libhttp-parser2.9 libisl23 libitm1 libjsoncpp25 libmpc3 154s libpfm4 libpkgconf3 libpng-dev libpython3-all-dev libpython3-dev 154s libpython3.12-dev libpython3.13 libpython3.13-dev libpython3.13-minimal 154s libpython3.13-stdlib librhash0 librust-ab-glyph-dev 154s librust-ab-glyph-rasterizer+libm-dev librust-ab-glyph-rasterizer-dev 154s librust-addr2line-dev librust-adler-dev librust-ahash-dev 154s librust-aho-corasick-dev librust-allocator-api2-dev librust-anes-dev 154s librust-anstream-dev librust-anstyle-dev librust-anstyle-parse-dev 154s librust-anstyle-query-dev librust-anyhow-dev librust-approx-dev 154s librust-arbitrary-dev librust-array-init-dev librust-arrayvec-dev 154s librust-async-attributes-dev librust-async-channel-dev 154s librust-async-executor-dev librust-async-fs-dev 154s librust-async-global-executor-dev librust-async-io-dev 154s librust-async-lock-dev librust-async-net-dev librust-async-process-dev 154s librust-async-signal-dev librust-async-std-dev librust-async-task-dev 154s librust-atomic-dev librust-atomic-waker-dev librust-autocfg-dev 154s librust-backtrace-dev librust-base64-dev librust-bit-set+std-dev 154s librust-bit-set-dev librust-bit-vec-dev librust-bitflags-1-dev 154s librust-bitflags-dev librust-bitvec-dev librust-blobby-dev 154s librust-block-buffer-dev librust-blocking-dev librust-bstr-dev 154s librust-bumpalo-dev librust-bytecheck-derive-dev librust-bytecheck-dev 154s librust-bytemuck-derive-dev librust-bytemuck-dev librust-byteorder-dev 154s librust-bytes-dev librust-cast-dev librust-cc-dev librust-cfg-if-0.1-dev 154s librust-cfg-if-dev librust-chrono-dev librust-chrono-tz-build-dev 154s librust-chrono-tz-dev librust-ciborium-dev librust-ciborium-io-dev 154s librust-ciborium-ll-dev librust-clap-builder-dev librust-clap-derive-dev 154s librust-clap-dev librust-clap-lex-dev librust-cmake-dev 154s librust-color-quant-dev librust-colorchoice-dev 154s librust-compiler-builtins+core-dev 154s librust-compiler-builtins+rustc-dep-of-std-dev librust-compiler-builtins-dev 154s librust-concurrent-queue-dev librust-const-cstr-dev librust-const-oid-dev 154s librust-const-random-dev librust-const-random-macro-dev 154s librust-convert-case-dev librust-core-maths-dev librust-cpp-demangle-dev 154s librust-cpufeatures-dev librust-crc32fast-dev librust-criterion-dev 154s librust-critical-section-dev librust-crossbeam-deque-dev 154s librust-crossbeam-epoch+std-dev librust-crossbeam-epoch-dev 154s librust-crossbeam-utils-dev librust-crunchy-dev librust-crypto-common-dev 154s librust-csv-core-dev librust-csv-dev librust-ctor-dev librust-deranged-dev 154s librust-derive-arbitrary-dev librust-derive-more-0.99-dev librust-digest-dev 154s librust-dirs-next-dev librust-dirs-sys-next-dev librust-dlib-dev 154s librust-either-dev librust-env-logger-dev librust-equivalent-dev 154s librust-erased-serde-dev librust-errno-dev librust-eui48-dev 154s librust-event-listener-dev librust-event-listener-strategy-dev 154s librust-eyre+default-dev librust-eyre-dev librust-fallible-iterator-dev 154s librust-fancy-regex-dev librust-fastrand-dev librust-flate2-dev 154s librust-float-ord-dev librust-fnv-dev librust-font-kit-dev 154s librust-freetype-dev librust-freetype-sys-dev librust-funty-dev 154s librust-futures-channel-dev librust-futures-core-dev librust-futures-dev 154s librust-futures-executor-dev librust-futures-io-dev librust-futures-lite-dev 154s librust-futures-macro-dev librust-futures-sink-dev librust-futures-task-dev 154s librust-futures-util-dev librust-generic-array-dev librust-geo-types-dev 154s librust-getrandom-dev librust-ghost-dev librust-gif-dev librust-gimli-dev 154s librust-half-dev librust-hashbrown-dev librust-heck-dev librust-hmac-dev 154s librust-humantime-dev librust-iana-time-zone-dev librust-image-dev 154s librust-indenter-dev librust-indexmap-dev librust-indoc-dev 154s librust-inventory-dev librust-is-terminal-dev librust-itertools-dev 154s librust-itoa-dev librust-jobserver-dev librust-jpeg-decoder-dev 154s librust-js-sys-dev librust-kv-log-macro-dev librust-lazy-static-dev 154s librust-libc-dev librust-libloading-dev librust-libm-dev 154s librust-libwebp-sys-dev librust-libz-sys-dev librust-linux-raw-sys-dev 154s librust-lock-api-dev librust-log-dev librust-md-5-dev librust-md5-asm-dev 154s librust-memchr-dev librust-memmap2-dev librust-memoffset-dev 154s librust-miniz-oxide-dev librust-mio-dev librust-no-panic-dev 154s librust-num-bigint-dev librust-num-complex-dev librust-num-conv-dev 154s librust-num-cpus-dev librust-num-integer-dev librust-num-rational-dev 154s librust-num-threads-dev librust-num-traits-dev librust-object-dev 154s librust-once-cell-dev librust-oorandom-dev librust-owned-ttf-parser-dev 154s librust-owning-ref-dev librust-parking-dev librust-parking-lot-core-dev 154s librust-parking-lot-dev librust-parse-zoneinfo-dev 154s librust-pathfinder-geometry-dev librust-pathfinder-simd-dev 154s librust-phf+uncased-dev librust-phf-codegen-dev librust-phf-dev 154s librust-phf-generator-dev librust-phf-shared+uncased-dev 154s librust-phf-shared-dev librust-pin-project-lite-dev librust-pin-utils-dev 154s librust-pkg-config-dev librust-plotters-backend-dev 154s librust-plotters-bitmap-dev librust-plotters-dev librust-plotters-svg-dev 154s librust-png-dev librust-polling-dev librust-portable-atomic-dev 154s librust-postgres-derive-dev librust-postgres-protocol-dev 154s librust-postgres-types-dev librust-powerfmt-dev librust-powerfmt-macros-dev 154s librust-ppv-lite86-dev librust-proc-macro2-dev librust-proptest-dev 154s librust-ptr-meta-derive-dev librust-ptr-meta-dev 154s librust-pure-rust-locales-dev librust-pyo3-build-config-dev librust-pyo3-dev 154s librust-pyo3-ffi-dev librust-pyo3-macros-backend-dev librust-pyo3-macros-dev 154s librust-python3-dll-a-dev librust-qoi-dev librust-quick-error-dev 154s librust-quickcheck-dev librust-quote-dev librust-radium-dev 154s librust-rand-chacha-dev librust-rand-core+getrandom-dev 154s librust-rand-core+serde-dev librust-rand-core+std-dev librust-rand-core-dev 154s librust-rand-dev librust-rand-xorshift-dev librust-rayon-core-dev 154s librust-rayon-dev librust-regex-automata-dev librust-regex-dev 154s librust-regex-syntax-dev librust-rend-dev librust-rkyv-derive-dev 154s librust-rkyv-dev librust-rust-decimal-dev librust-rustc-demangle-dev 154s librust-rustc-hash-dev librust-rustc-std-workspace-core-dev 154s librust-rustc-version-dev librust-rustix-dev 154s librust-rusty-fork+wait-timeout-dev librust-rusty-fork-dev 154s librust-ruzstd-dev librust-ryu-dev librust-same-file-dev 154s librust-scopeguard-dev librust-seahash-dev librust-semver-dev 154s librust-serde-derive-dev librust-serde-dev librust-serde-fmt-dev 154s librust-serde-json-dev librust-serde-test-dev librust-sha1-asm-dev 154s librust-sha1-dev librust-sha2-asm-dev librust-sha2-dev librust-shlex-dev 154s librust-signal-hook-registry-dev librust-simdutf8-dev librust-siphasher-dev 154s librust-slab-dev librust-slog-dev librust-smallvec-dev librust-smol-dev 154s librust-smol-str-dev librust-socket2-dev librust-spin-dev 154s librust-stable-deref-trait-dev librust-static-assertions-dev 154s librust-stringprep-dev librust-strsim-dev librust-subtle-dev 154s librust-sval-buffer-dev librust-sval-derive-dev librust-sval-dev 154s librust-sval-dynamic-dev librust-sval-fmt-dev librust-sval-ref-dev 154s librust-sval-serde-dev librust-syn-1-dev librust-syn-dev librust-tap-dev 154s librust-target-lexicon-dev librust-tempfile-dev librust-termcolor-dev 154s librust-terminal-size-dev librust-tiff-dev librust-time-core-dev 154s librust-time-dev librust-time-macros-dev librust-tiny-keccak-dev 154s librust-tinytemplate-dev librust-tinyvec+tinyvec-macros-dev 154s librust-tinyvec-dev librust-tinyvec-macros-dev librust-tokio-dev 154s librust-tokio-macros-dev librust-tracing-attributes-dev 154s librust-tracing-core-dev librust-tracing-dev librust-traitobject-dev 154s librust-ttf-parser-dev librust-twox-hash-dev librust-typemap-dev 154s librust-typenum-dev librust-unarray-dev librust-uncased-dev 154s librust-unicase-dev librust-unicode-bidi-dev librust-unicode-ident-dev 154s librust-unicode-normalization-dev librust-unicode-segmentation-dev 154s librust-unicode-width-dev librust-unindent-dev librust-unsafe-any-dev 154s librust-utf8parse-dev librust-uuid-dev librust-valuable-derive-dev 154s librust-valuable-dev librust-value-bag-dev librust-value-bag-serde1-dev 154s librust-value-bag-sval2-dev librust-version-check-dev 154s librust-wait-timeout-dev librust-walkdir-dev 154s librust-wasm-bindgen+default-dev librust-wasm-bindgen+spans-dev 154s librust-wasm-bindgen-backend-dev librust-wasm-bindgen-dev 154s librust-wasm-bindgen-macro+spans-dev librust-wasm-bindgen-macro-dev 154s librust-wasm-bindgen-macro-support+spans-dev 154s librust-wasm-bindgen-macro-support-dev librust-wasm-bindgen-shared-dev 154s librust-web-sys-dev librust-webp-dev librust-weezl-dev librust-winapi-dev 154s librust-winapi-i686-pc-windows-gnu-dev librust-winapi-util-dev 154s librust-winapi-x86-64-pc-windows-gnu-dev librust-wyz-dev 154s librust-yeslogic-fontconfig-sys-dev librust-zerocopy-derive-dev 154s librust-zerocopy-dev librust-zeroize-derive-dev librust-zeroize-dev 154s libsharpyuv-dev libsharpyuv0 libstd-rust-1.80 libstd-rust-1.80-dev 154s libstdc++-14-dev libtool libubsan1 libwebp-dev libwebp7 libwebpdecoder3 154s libwebpdemux2 libwebpmux3 llvm llvm-19 llvm-19-linker-tools llvm-19-runtime 154s llvm-runtime m4 pkg-config pkgconf pkgconf-bin po-debconf 154s pybuild-plugin-autopkgtest pybuild-plugin-pyproject python3-all 154s python3-build python3-dateutil python3-hypothesis python3-iniconfig 154s python3-installer python3-packaging python3-pluggy python3-pyproject-hooks 154s python3-pytest python3-regex python3-semantic-version 154s python3-setuptools-rust python3-sortedcontainers python3-tiktoken 154s python3-toml python3-wheel python3.12-dev python3.13 python3.13-minimal 154s rustc rustc-1.80 uuid-dev zlib1g-dev 154s 0 upgraded, 471 newly installed, 0 to remove and 0 not upgraded. 154s Need to get 230 MB/230 MB of archives. 154s After this operation, 981 MB of additional disk space will be used. 154s Get:1 /tmp/autopkgtest.YA0KYX/1-autopkgtest-satdep.deb autopkgtest-satdep s390x 0 [860 B] 154s Get:2 http://ftpmaster.internal/ubuntu plucky/main s390x libpython3.13-minimal s390x 3.13.0-2 [877 kB] 154s Get:3 http://ftpmaster.internal/ubuntu plucky/main s390x python3.13-minimal s390x 3.13.0-2 [2172 kB] 154s Get:4 http://ftpmaster.internal/ubuntu plucky/main s390x m4 s390x 1.4.19-4build1 [256 kB] 154s Get:5 http://ftpmaster.internal/ubuntu plucky/main s390x autoconf all 2.72-3 [382 kB] 154s Get:6 http://ftpmaster.internal/ubuntu plucky/main s390x autotools-dev all 20220109.1 [44.9 kB] 154s Get:7 http://ftpmaster.internal/ubuntu plucky/main s390x automake all 1:1.16.5-1.3ubuntu1 [558 kB] 154s Get:8 http://ftpmaster.internal/ubuntu plucky/main s390x autopoint all 0.22.5-2 [616 kB] 154s Get:9 http://ftpmaster.internal/ubuntu plucky/main s390x libisl23 s390x 0.27-1 [704 kB] 154s Get:10 http://ftpmaster.internal/ubuntu plucky/main s390x libmpc3 s390x 1.3.1-1build2 [57.8 kB] 154s Get:11 http://ftpmaster.internal/ubuntu plucky/main s390x cpp-14-s390x-linux-gnu s390x 14.2.0-8ubuntu1 [9570 kB] 155s Get:12 http://ftpmaster.internal/ubuntu plucky/main s390x cpp-14 s390x 14.2.0-8ubuntu1 [1026 B] 155s Get:13 http://ftpmaster.internal/ubuntu plucky/main s390x cpp-s390x-linux-gnu s390x 4:14.1.0-2ubuntu1 [5452 B] 155s Get:14 http://ftpmaster.internal/ubuntu plucky/main s390x cpp s390x 4:14.1.0-2ubuntu1 [22.4 kB] 155s Get:15 http://ftpmaster.internal/ubuntu plucky/main s390x libcc1-0 s390x 14.2.0-8ubuntu1 [50.6 kB] 155s Get:16 http://ftpmaster.internal/ubuntu plucky/main s390x libgomp1 s390x 14.2.0-8ubuntu1 [151 kB] 155s Get:17 http://ftpmaster.internal/ubuntu plucky/main s390x libitm1 s390x 14.2.0-8ubuntu1 [30.9 kB] 155s Get:18 http://ftpmaster.internal/ubuntu plucky/main s390x libasan8 s390x 14.2.0-8ubuntu1 [2963 kB] 155s Get:19 http://ftpmaster.internal/ubuntu plucky/main s390x libubsan1 s390x 14.2.0-8ubuntu1 [1184 kB] 155s Get:20 http://ftpmaster.internal/ubuntu plucky/main s390x libgcc-14-dev s390x 14.2.0-8ubuntu1 [1037 kB] 155s Get:21 http://ftpmaster.internal/ubuntu plucky/main s390x gcc-14-s390x-linux-gnu s390x 14.2.0-8ubuntu1 [18.7 MB] 155s Get:22 http://ftpmaster.internal/ubuntu plucky/main s390x gcc-14 s390x 14.2.0-8ubuntu1 [518 kB] 155s Get:23 http://ftpmaster.internal/ubuntu plucky/main s390x gcc-s390x-linux-gnu s390x 4:14.1.0-2ubuntu1 [1204 B] 155s Get:24 http://ftpmaster.internal/ubuntu plucky/main s390x gcc s390x 4:14.1.0-2ubuntu1 [4996 B] 155s Get:25 http://ftpmaster.internal/ubuntu plucky/main s390x libstdc++-14-dev s390x 14.2.0-8ubuntu1 [2608 kB] 155s Get:26 http://ftpmaster.internal/ubuntu plucky/main s390x g++-14-s390x-linux-gnu s390x 14.2.0-8ubuntu1 [11.0 MB] 155s Get:27 http://ftpmaster.internal/ubuntu plucky/main s390x g++-14 s390x 14.2.0-8ubuntu1 [19.9 kB] 155s Get:28 http://ftpmaster.internal/ubuntu plucky/main s390x g++-s390x-linux-gnu s390x 4:14.1.0-2ubuntu1 [956 B] 155s Get:29 http://ftpmaster.internal/ubuntu plucky/main s390x g++ s390x 4:14.1.0-2ubuntu1 [1076 B] 155s Get:30 http://ftpmaster.internal/ubuntu plucky/main s390x build-essential s390x 12.10ubuntu1 [4930 B] 155s Get:31 http://ftpmaster.internal/ubuntu plucky/main s390x libhttp-parser2.9 s390x 2.9.4-6build1 [24.7 kB] 155s Get:32 http://ftpmaster.internal/ubuntu plucky/main s390x libgit2-1.7 s390x 1.7.2+ds-1ubuntu3 [553 kB] 155s Get:33 http://ftpmaster.internal/ubuntu plucky/main s390x libstd-rust-1.80 s390x 1.80.1+dfsg0ubuntu1-0ubuntu1 [26.1 MB] 156s Get:34 http://ftpmaster.internal/ubuntu plucky/main s390x libstd-rust-1.80-dev s390x 1.80.1+dfsg0ubuntu1-0ubuntu1 [43.6 MB] 157s Get:35 http://ftpmaster.internal/ubuntu plucky/main s390x rustc-1.80 s390x 1.80.1+dfsg0ubuntu1-0ubuntu1 [3730 kB] 157s Get:36 http://ftpmaster.internal/ubuntu plucky/main s390x cargo-1.80 s390x 1.80.1+dfsg0ubuntu1-0ubuntu1 [6792 kB] 157s Get:37 http://ftpmaster.internal/ubuntu plucky/main s390x libjsoncpp25 s390x 1.9.5-6build1 [82.5 kB] 157s Get:38 http://ftpmaster.internal/ubuntu plucky/main s390x librhash0 s390x 1.4.3-3build1 [133 kB] 157s Get:39 http://ftpmaster.internal/ubuntu plucky/main s390x cmake-data all 3.30.3-1 [2246 kB] 157s Get:40 http://ftpmaster.internal/ubuntu plucky/main s390x cmake s390x 3.30.3-1 [12.3 MB] 158s Get:41 http://ftpmaster.internal/ubuntu plucky/main s390x libdebhelper-perl all 13.20ubuntu1 [94.2 kB] 158s Get:42 http://ftpmaster.internal/ubuntu plucky/main s390x libtool all 2.4.7-8 [166 kB] 158s Get:43 http://ftpmaster.internal/ubuntu plucky/main s390x dh-autoreconf all 20 [16.1 kB] 158s Get:44 http://ftpmaster.internal/ubuntu plucky/main s390x libarchive-zip-perl all 1.68-1 [90.2 kB] 158s Get:45 http://ftpmaster.internal/ubuntu plucky/main s390x libfile-stripnondeterminism-perl all 1.14.0-1 [20.1 kB] 158s Get:46 http://ftpmaster.internal/ubuntu plucky/main s390x dh-strip-nondeterminism all 1.14.0-1 [5058 B] 158s Get:47 http://ftpmaster.internal/ubuntu plucky/main s390x debugedit s390x 1:5.1-1 [49.9 kB] 158s Get:48 http://ftpmaster.internal/ubuntu plucky/main s390x dwz s390x 0.15-1build6 [122 kB] 158s Get:49 http://ftpmaster.internal/ubuntu plucky/main s390x gettext s390x 0.22.5-2 [996 kB] 158s Get:50 http://ftpmaster.internal/ubuntu plucky/main s390x intltool-debian all 0.35.0+20060710.6 [23.2 kB] 158s Get:51 http://ftpmaster.internal/ubuntu plucky/main s390x po-debconf all 1.0.21+nmu1 [233 kB] 158s Get:52 http://ftpmaster.internal/ubuntu plucky/main s390x debhelper all 13.20ubuntu1 [893 kB] 159s Get:53 http://ftpmaster.internal/ubuntu plucky/universe s390x dh-python all 6.20241024 [112 kB] 159s Get:54 http://ftpmaster.internal/ubuntu plucky/main s390x fonts-dejavu-mono all 2.37-8 [502 kB] 159s Get:55 http://ftpmaster.internal/ubuntu plucky/main s390x fonts-dejavu-core all 2.37-8 [835 kB] 159s Get:56 http://ftpmaster.internal/ubuntu plucky/main s390x fontconfig-config s390x 2.15.0-1.1ubuntu2 [37.4 kB] 159s Get:57 http://ftpmaster.internal/ubuntu plucky/main s390x libbrotli-dev s390x 1.1.0-2build3 [395 kB] 159s Get:58 http://ftpmaster.internal/ubuntu plucky/main s390x libbz2-dev s390x 1.0.8-6 [39.1 kB] 159s Get:59 http://ftpmaster.internal/ubuntu plucky/main s390x libexpat1-dev s390x 2.6.4-1 [146 kB] 159s Get:60 http://ftpmaster.internal/ubuntu plucky/main s390x libfreetype6 s390x 2.13.3+dfsg-1 [431 kB] 160s Get:61 http://ftpmaster.internal/ubuntu plucky/main s390x libfontconfig1 s390x 2.15.0-1.1ubuntu2 [150 kB] 160s Get:62 http://ftpmaster.internal/ubuntu plucky/main s390x zlib1g-dev s390x 1:1.3.dfsg+really1.3.1-1ubuntu1 [898 kB] 160s Get:63 http://ftpmaster.internal/ubuntu plucky/main s390x libpng-dev s390x 1.6.44-2 [279 kB] 160s Get:64 http://ftpmaster.internal/ubuntu plucky/main s390x libfreetype-dev s390x 2.13.3+dfsg-1 [605 kB] 160s Get:65 http://ftpmaster.internal/ubuntu plucky/main s390x uuid-dev s390x 2.40.2-1ubuntu1 [52.4 kB] 160s Get:66 http://ftpmaster.internal/ubuntu plucky/main s390x libpkgconf3 s390x 1.8.1-4 [31.2 kB] 160s Get:67 http://ftpmaster.internal/ubuntu plucky/main s390x pkgconf-bin s390x 1.8.1-4 [21.5 kB] 160s Get:68 http://ftpmaster.internal/ubuntu plucky/main s390x pkgconf s390x 1.8.1-4 [16.7 kB] 160s Get:69 http://ftpmaster.internal/ubuntu plucky/main s390x libfontconfig-dev s390x 2.15.0-1.1ubuntu2 [172 kB] 160s Get:70 http://ftpmaster.internal/ubuntu plucky/main s390x libpython3.12-dev s390x 3.12.7-3 [5838 kB] 161s Get:71 http://ftpmaster.internal/ubuntu plucky-proposed/main s390x libpython3-dev s390x 3.12.7-1 [10.3 kB] 161s Get:72 http://ftpmaster.internal/ubuntu plucky/main s390x libpython3.13-stdlib s390x 3.13.0-2 [2086 kB] 162s Get:73 http://ftpmaster.internal/ubuntu plucky/main s390x libpython3.13 s390x 3.13.0-2 [2477 kB] 162s Get:74 http://ftpmaster.internal/ubuntu plucky/main s390x libpython3.13-dev s390x 3.13.0-2 [5586 kB] 163s Get:75 http://ftpmaster.internal/ubuntu plucky-proposed/main s390x libpython3-all-dev s390x 3.12.7-1 [918 B] 163s Get:76 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ab-glyph-rasterizer-dev s390x 0.1.7-1 [12.2 kB] 163s Get:77 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-libm-dev s390x 0.2.8-1 [101 kB] 163s Get:78 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ab-glyph-rasterizer+libm-dev s390x 0.1.7-1 [1064 B] 163s Get:79 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-core-maths-dev s390x 0.1.0-2 [7948 B] 163s Get:80 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ttf-parser-dev s390x 0.24.1-1 [148 kB] 164s Get:81 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-owned-ttf-parser-dev s390x 0.24.0-1 [129 kB] 164s Get:82 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ab-glyph-dev s390x 0.2.28-1 [20.7 kB] 164s Get:83 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-cfg-if-dev s390x 1.0.0-1 [10.5 kB] 164s Get:84 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-cpp-demangle-dev s390x 0.4.0-1 [66.1 kB] 164s Get:85 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-fallible-iterator-dev s390x 0.3.0-2 [20.3 kB] 164s Get:86 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-unicode-ident-dev s390x 1.0.13-1 [38.5 kB] 164s Get:87 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-proc-macro2-dev s390x 1.0.86-1 [44.8 kB] 164s Get:88 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-quote-dev s390x 1.0.37-1 [29.5 kB] 164s Get:89 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-syn-dev s390x 2.0.85-1 [219 kB] 164s Get:90 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-derive-arbitrary-dev s390x 1.3.2-1 [12.3 kB] 164s Get:91 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-arbitrary-dev s390x 1.3.2-1 [31.4 kB] 164s Get:92 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-equivalent-dev s390x 1.0.1-1 [8240 B] 164s Get:93 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-critical-section-dev s390x 1.1.3-1 [20.5 kB] 164s Get:94 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-serde-derive-dev s390x 1.0.210-1 [50.1 kB] 164s Get:95 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-serde-dev s390x 1.0.210-2 [66.4 kB] 164s Get:96 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-portable-atomic-dev s390x 1.9.0-4 [124 kB] 164s Get:97 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-libc-dev s390x 0.2.155-1 [367 kB] 164s Get:98 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-getrandom-dev s390x 0.2.12-1 [36.4 kB] 164s Get:99 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-smallvec-dev s390x 1.13.2-1 [35.5 kB] 164s Get:100 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-parking-lot-core-dev s390x 0.9.10-1 [32.6 kB] 164s Get:101 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-once-cell-dev s390x 1.20.2-1 [31.9 kB] 164s Get:102 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-crunchy-dev s390x 0.2.2-1 [5340 B] 164s Get:103 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-tiny-keccak-dev s390x 2.0.2-1 [20.9 kB] 164s Get:104 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-const-random-macro-dev s390x 0.1.16-2 [10.5 kB] 164s Get:105 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-const-random-dev s390x 0.1.17-2 [8590 B] 164s Get:106 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-version-check-dev s390x 0.9.5-1 [16.9 kB] 164s Get:107 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-byteorder-dev s390x 1.5.0-1 [22.4 kB] 164s Get:108 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-zerocopy-derive-dev s390x 0.7.32-2 [29.7 kB] 164s Get:109 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-zerocopy-dev s390x 0.7.32-1 [116 kB] 164s Get:110 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ahash-dev all 0.8.11-8 [37.9 kB] 164s Get:111 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-allocator-api2-dev s390x 0.2.16-1 [54.8 kB] 164s Get:112 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-compiler-builtins-dev s390x 0.1.101-1 [156 kB] 164s Get:113 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-either-dev s390x 1.13.0-1 [20.2 kB] 164s Get:114 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-crossbeam-utils-dev s390x 0.8.19-1 [41.1 kB] 164s Get:115 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-crossbeam-epoch-dev s390x 0.9.18-1 [42.3 kB] 164s Get:116 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-crossbeam-epoch+std-dev s390x 0.9.18-1 [1128 B] 164s Get:117 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-crossbeam-deque-dev s390x 0.8.5-1 [22.4 kB] 164s Get:118 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rayon-core-dev s390x 1.12.1-1 [63.7 kB] 164s Get:119 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rayon-dev s390x 1.10.0-1 [149 kB] 164s Get:120 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rustc-std-workspace-core-dev s390x 1.0.0-1 [3020 B] 164s Get:121 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-hashbrown-dev s390x 0.14.5-5 [110 kB] 164s Get:122 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-indexmap-dev s390x 2.2.6-1 [66.7 kB] 164s Get:123 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-stable-deref-trait-dev s390x 1.2.0-1 [9794 B] 164s Get:124 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-gimli-dev s390x 0.28.1-2 [209 kB] 164s Get:125 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-memmap2-dev s390x 0.9.3-1 [30.8 kB] 164s Get:126 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-crc32fast-dev s390x 1.4.2-1 [39.8 kB] 164s Get:127 http://ftpmaster.internal/ubuntu plucky/main s390x pkg-config s390x 1.8.1-4 [7362 B] 164s Get:128 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-pkg-config-dev s390x 0.3.27-1 [21.5 kB] 164s Get:129 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-libz-sys-dev s390x 1.1.20-1 [19.7 kB] 164s Get:130 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-adler-dev s390x 1.0.2-2 [15.3 kB] 164s Get:131 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-miniz-oxide-dev s390x 0.7.1-1 [51.5 kB] 164s Get:132 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-flate2-dev s390x 1.0.34-1 [94.5 kB] 164s Get:133 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-sval-derive-dev s390x 2.6.1-2 [11.0 kB] 164s Get:134 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-sval-dev s390x 2.6.1-2 [28.0 kB] 164s Get:135 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-sval-ref-dev s390x 2.6.1-1 [8942 B] 164s Get:136 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-erased-serde-dev s390x 0.3.31-1 [22.7 kB] 164s Get:137 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-serde-fmt-dev all 1.0.3-3 [6956 B] 164s Get:138 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-syn-1-dev s390x 1.0.109-2 [188 kB] 164s Get:139 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-no-panic-dev s390x 0.1.13-1 [11.3 kB] 164s Get:140 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-itoa-dev s390x 1.0.9-1 [13.1 kB] 164s Get:141 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ryu-dev s390x 1.0.15-1 [41.7 kB] 164s Get:142 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-serde-json-dev s390x 1.0.128-1 [128 kB] 164s Get:143 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-serde-test-dev s390x 1.0.171-1 [20.6 kB] 164s Get:144 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-value-bag-serde1-dev s390x 1.9.0-1 [7820 B] 165s Get:145 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-sval-buffer-dev s390x 2.6.1-1 [16.8 kB] 165s Get:146 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-sval-dynamic-dev s390x 2.6.1-1 [9542 B] 165s Get:147 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-sval-fmt-dev s390x 2.6.1-1 [12.0 kB] 165s Get:148 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-sval-serde-dev s390x 2.6.1-1 [13.2 kB] 165s Get:149 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-value-bag-sval2-dev s390x 1.9.0-1 [7862 B] 165s Get:150 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-value-bag-dev s390x 1.9.0-1 [37.6 kB] 165s Get:151 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-log-dev s390x 0.4.22-1 [43.0 kB] 165s Get:152 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-memchr-dev s390x 2.7.4-1 [71.8 kB] 165s Get:153 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ppv-lite86-dev s390x 0.2.16-1 [21.9 kB] 165s Get:154 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rand-core-dev s390x 0.6.4-2 [23.8 kB] 165s Get:155 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rand-chacha-dev s390x 0.3.1-2 [16.9 kB] 165s Get:156 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rand-core+getrandom-dev s390x 0.6.4-2 [1054 B] 165s Get:157 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rand-core+serde-dev s390x 0.6.4-2 [1108 B] 165s Get:158 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rand-core+std-dev s390x 0.6.4-2 [1052 B] 165s Get:159 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rand-dev s390x 0.8.5-1 [77.5 kB] 165s Get:160 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-unicode-segmentation-dev s390x 1.11.0-1 [74.2 kB] 165s Get:161 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-convert-case-dev s390x 0.6.0-2 [19.4 kB] 165s Get:162 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-semver-dev s390x 1.0.23-1 [30.6 kB] 165s Get:163 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rustc-version-dev s390x 0.4.0-1 [13.8 kB] 165s Get:164 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-derive-more-0.99-dev s390x 0.99.18-1 [49.9 kB] 165s Get:165 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-cfg-if-0.1-dev s390x 0.1.10-2 [10.2 kB] 165s Get:166 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-blobby-dev s390x 0.3.1-1 [11.3 kB] 165s Get:167 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-typenum-dev s390x 1.17.0-2 [41.2 kB] 165s Get:168 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-zeroize-derive-dev s390x 1.4.2-1 [12.7 kB] 165s Get:169 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-zeroize-dev s390x 1.8.1-1 [21.6 kB] 165s Get:170 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-generic-array-dev s390x 0.14.7-1 [16.9 kB] 165s Get:171 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-block-buffer-dev s390x 0.10.2-2 [12.2 kB] 165s Get:172 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-const-oid-dev s390x 0.9.3-1 [40.9 kB] 165s Get:173 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-crypto-common-dev s390x 0.1.6-1 [10.5 kB] 165s Get:174 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-subtle-dev s390x 2.6.1-1 [16.1 kB] 165s Get:175 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-digest-dev s390x 0.10.7-2 [20.9 kB] 165s Get:176 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-static-assertions-dev s390x 1.1.0-1 [19.0 kB] 165s Get:177 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-twox-hash-dev s390x 1.6.3-1 [21.6 kB] 165s Get:178 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ruzstd-dev s390x 0.5.0-1 [44.6 kB] 165s Get:179 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-object-dev s390x 0.32.2-1 [228 kB] 165s Get:180 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rustc-demangle-dev s390x 0.1.21-1 [27.7 kB] 165s Get:181 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-addr2line-dev s390x 0.21.0-2 [36.4 kB] 165s Get:182 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-aho-corasick-dev s390x 1.1.3-1 [146 kB] 165s Get:183 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-bitflags-1-dev s390x 1.3.2-5 [25.3 kB] 165s Get:184 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-anes-dev s390x 0.1.6-1 [21.1 kB] 165s Get:185 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-anstyle-dev s390x 1.0.8-1 [16.7 kB] 165s Get:186 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-arrayvec-dev s390x 0.7.4-2 [29.9 kB] 165s Get:187 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-utf8parse-dev s390x 0.2.1-1 [15.0 kB] 165s Get:188 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-anstyle-parse-dev s390x 0.2.1-1 [17.1 kB] 165s Get:189 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-anstyle-query-dev s390x 1.0.0-1 [9768 B] 165s Get:190 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-colorchoice-dev s390x 1.0.0-1 [8338 B] 165s Get:191 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-anstream-dev s390x 0.6.15-1 [25.7 kB] 165s Get:192 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-jobserver-dev s390x 0.1.32-1 [29.1 kB] 165s Get:193 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-shlex-dev s390x 1.3.0-1 [20.1 kB] 166s Get:194 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-cc-dev s390x 1.1.14-1 [73.6 kB] 166s Get:195 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-backtrace-dev s390x 0.3.69-2 [69.9 kB] 166s Get:196 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-anyhow-dev s390x 1.0.86-1 [44.3 kB] 166s Get:197 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-bytecheck-derive-dev s390x 0.6.12-1 [7086 B] 166s Get:198 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ptr-meta-derive-dev s390x 0.1.4-1 [3964 B] 166s Get:199 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ptr-meta-dev s390x 0.1.4-1 [7344 B] 166s Get:200 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-simdutf8-dev s390x 0.1.4-4 [27.2 kB] 166s Get:201 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-bytemuck-derive-dev s390x 1.5.0-2 [18.7 kB] 166s Get:202 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-bytemuck-dev s390x 1.14.0-1 [42.7 kB] 166s Get:203 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-atomic-dev s390x 0.6.0-1 [15.5 kB] 166s Get:204 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-md5-asm-dev s390x 0.5.0-2 [7516 B] 166s Get:205 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-md-5-dev s390x 0.10.6-1 [17.5 kB] 166s Get:206 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-cpufeatures-dev s390x 0.2.11-1 [14.9 kB] 166s Get:207 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-sha1-asm-dev s390x 0.5.1-2 [8060 B] 166s Get:208 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-sha1-dev s390x 0.10.6-1 [16.0 kB] 166s Get:209 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-slog-dev s390x 2.7.0-1 [44.0 kB] 166s Get:210 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-uuid-dev s390x 1.10.0-1 [44.2 kB] 166s Get:211 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-bytecheck-dev s390x 0.6.12-1 [10.2 kB] 166s Get:212 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-autocfg-dev s390x 1.1.0-1 [15.2 kB] 166s Get:213 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-num-traits-dev s390x 0.2.19-2 [46.2 kB] 166s Get:214 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-funty-dev s390x 2.0.0-1 [13.8 kB] 166s Get:215 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-radium-dev s390x 1.1.0-1 [14.9 kB] 166s Get:216 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-tap-dev s390x 1.0.1-1 [12.7 kB] 166s Get:217 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-traitobject-dev s390x 0.1.0-1 [4540 B] 166s Get:218 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-unsafe-any-dev s390x 0.4.2-2 [4626 B] 166s Get:219 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-typemap-dev s390x 0.3.3-2 [6724 B] 166s Get:220 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-wyz-dev s390x 0.5.1-1 [19.7 kB] 166s Get:221 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-bitvec-dev s390x 1.0.1-1 [179 kB] 166s Get:222 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-bytes-dev s390x 1.8.0-1 [56.9 kB] 166s Get:223 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rend-dev s390x 0.4.0-1 [10.3 kB] 166s Get:224 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rkyv-derive-dev s390x 0.7.44-1 [17.5 kB] 166s Get:225 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-seahash-dev s390x 4.1.0-1 [25.1 kB] 166s Get:226 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-smol-str-dev s390x 0.2.0-1 [15.2 kB] 166s Get:227 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-tinyvec-dev s390x 1.6.0-2 [37.7 kB] 166s Get:228 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-tinyvec-macros-dev s390x 0.1.0-1 [3852 B] 166s Get:229 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-tinyvec+tinyvec-macros-dev s390x 1.6.0-2 [1126 B] 166s Get:230 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rkyv-dev s390x 0.7.44-1 [94.4 kB] 166s Get:231 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-num-complex-dev s390x 0.4.6-2 [30.8 kB] 166s Get:232 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-approx-dev s390x 0.5.1-1 [16.0 kB] 166s Get:233 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-array-init-dev s390x 2.0.1-1 [12.3 kB] 166s Get:234 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-async-attributes-dev all 1.1.2-6 [6756 B] 166s Get:235 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-concurrent-queue-dev s390x 2.5.0-4 [23.9 kB] 166s Get:236 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-parking-dev s390x 2.2.0-1 [11.6 kB] 166s Get:237 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-pin-project-lite-dev s390x 0.2.13-1 [30.2 kB] 166s Get:238 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-event-listener-dev all 5.3.1-8 [29.6 kB] 166s Get:239 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-event-listener-strategy-dev s390x 0.5.2-3 [12.6 kB] 166s Get:240 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-futures-core-dev s390x 0.3.30-1 [16.7 kB] 166s Get:241 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-async-channel-dev all 2.3.1-8 [13.1 kB] 166s Get:242 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-async-task-dev all 4.7.1-3 [29.4 kB] 166s Get:243 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-fastrand-dev s390x 2.1.1-1 [17.8 kB] 166s Get:244 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-futures-io-dev s390x 0.3.31-1 [11.2 kB] 166s Get:245 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-futures-lite-dev s390x 2.3.0-2 [38.6 kB] 166s Get:246 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-slab-dev s390x 0.4.9-1 [21.2 kB] 166s Get:247 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-async-executor-dev all 1.13.1-1 [18.7 kB] 166s Get:248 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-async-lock-dev all 3.4.0-4 [29.3 kB] 166s Get:249 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-atomic-waker-dev s390x 1.1.2-1 [14.3 kB] 166s Get:250 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-tracing-attributes-dev s390x 0.1.27-1 [33.3 kB] 166s Get:251 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-valuable-derive-dev s390x 0.1.0-1 [5942 B] 166s Get:252 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-valuable-dev s390x 0.1.0-4 [23.5 kB] 166s Get:253 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-tracing-core-dev s390x 0.1.32-1 [53.8 kB] 166s Get:254 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-tracing-dev s390x 0.1.40-1 [69.5 kB] 167s Get:255 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-blocking-dev all 1.6.1-5 [17.5 kB] 167s Get:256 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-async-fs-dev all 2.1.2-4 [15.3 kB] 167s Get:257 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-bitflags-dev s390x 2.6.0-1 [41.1 kB] 167s Get:258 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-compiler-builtins+core-dev s390x 0.1.101-1 [1092 B] 167s Get:259 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-compiler-builtins+rustc-dep-of-std-dev s390x 0.1.101-1 [1104 B] 167s Get:260 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-errno-dev s390x 0.3.8-1 [13.0 kB] 167s Get:261 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-linux-raw-sys-dev s390x 0.4.14-1 [138 kB] 167s Get:262 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rustix-dev s390x 0.38.32-1 [274 kB] 167s Get:263 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-polling-dev s390x 3.4.0-1 [47.8 kB] 167s Get:264 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-async-io-dev s390x 2.3.3-4 [41.0 kB] 167s Get:265 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-mio-dev s390x 1.0.2-2 [87.6 kB] 167s Get:266 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-owning-ref-dev s390x 0.4.1-1 [13.7 kB] 167s Get:267 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-scopeguard-dev s390x 1.2.0-1 [13.3 kB] 167s Get:268 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-lock-api-dev s390x 0.4.12-1 [22.9 kB] 167s Get:269 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-parking-lot-dev s390x 0.12.3-1 [38.7 kB] 167s Get:270 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-signal-hook-registry-dev s390x 1.4.0-1 [19.2 kB] 167s Get:271 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-socket2-dev s390x 0.5.7-1 [48.3 kB] 167s Get:272 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-tokio-macros-dev s390x 2.4.0-2 [14.0 kB] 167s Get:273 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-tokio-dev s390x 1.39.3-3 [561 kB] 167s Get:274 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-async-global-executor-dev s390x 2.4.1-5 [14.6 kB] 167s Get:275 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-async-net-dev all 2.0.0-4 [14.6 kB] 167s Get:276 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-async-signal-dev s390x 0.2.10-1 [16.0 kB] 167s Get:277 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-async-process-dev all 2.3.0-1 [21.2 kB] 167s Get:278 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-kv-log-macro-dev all 1.0.8-4 [7290 B] 167s Get:279 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-pin-utils-dev s390x 0.1.0-1 [9340 B] 167s Get:280 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-async-std-dev all 1.13.0-1 [170 kB] 167s Get:281 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-base64-dev s390x 0.21.7-1 [65.1 kB] 167s Get:282 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-bit-vec-dev s390x 0.6.3-1 [21.1 kB] 167s Get:283 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-bit-set-dev s390x 0.5.2-1 [15.7 kB] 167s Get:284 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-bit-set+std-dev s390x 0.5.2-1 [1086 B] 167s Get:285 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-regex-syntax-dev s390x 0.8.2-1 [200 kB] 167s Get:286 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-regex-automata-dev s390x 0.4.7-1 [424 kB] 167s Get:287 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-bstr-dev s390x 1.7.0-2build1 [271 kB] 167s Get:288 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-bumpalo-dev s390x 3.16.0-1 [75.7 kB] 167s Get:289 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-cast-dev s390x 0.3.0-1 [13.1 kB] 167s Get:290 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-iana-time-zone-dev s390x 0.1.60-1 [25.1 kB] 167s Get:291 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-wasm-bindgen-shared-dev s390x 0.2.87-1 [9088 B] 167s Get:292 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-wasm-bindgen-backend-dev s390x 0.2.87-1 [27.0 kB] 167s Get:293 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-wasm-bindgen-macro-support-dev s390x 0.2.87-1 [21.2 kB] 167s Get:294 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-wasm-bindgen-macro-dev s390x 0.2.87-1 [16.6 kB] 167s Get:295 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-wasm-bindgen-dev s390x 0.2.87-1 [157 kB] 167s Get:296 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-wasm-bindgen-macro-support+spans-dev s390x 0.2.87-1 [1074 B] 167s Get:297 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-wasm-bindgen-macro+spans-dev s390x 0.2.87-1 [1058 B] 167s Get:298 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-wasm-bindgen+spans-dev s390x 0.2.87-1 [1040 B] 167s Get:299 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-wasm-bindgen+default-dev s390x 0.2.87-1 [1048 B] 167s Get:300 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-js-sys-dev s390x 0.3.64-1 [71.9 kB] 167s Get:301 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-pure-rust-locales-dev s390x 0.8.1-1 [112 kB] 167s Get:302 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-chrono-dev s390x 0.4.38-2 [172 kB] 167s Get:303 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-regex-dev s390x 1.10.6-1 [199 kB] 168s Get:304 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-parse-zoneinfo-dev s390x 0.3.0-1 [71.0 kB] 168s Get:305 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-siphasher-dev s390x 0.3.10-1 [12.0 kB] 168s Get:306 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-phf-shared-dev s390x 0.11.2-1 [15.6 kB] 168s Get:307 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-phf-dev s390x 0.11.2-1 [21.6 kB] 168s Get:308 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-uncased-dev s390x 0.9.6-2 [12.2 kB] 168s Get:309 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-phf-shared+uncased-dev s390x 0.11.2-1 [1030 B] 168s Get:310 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-phf+uncased-dev s390x 0.11.2-1 [1030 B] 168s Get:311 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ciborium-io-dev s390x 0.2.2-1 [8180 B] 168s Get:312 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-half-dev s390x 1.8.2-4 [34.8 kB] 168s Get:313 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ciborium-ll-dev s390x 0.2.2-1 [15.8 kB] 168s Get:314 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ciborium-dev s390x 0.2.2-2 [32.6 kB] 168s Get:315 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-clap-lex-dev s390x 0.7.2-2 [14.3 kB] 168s Get:316 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-strsim-dev s390x 0.11.1-1 [15.9 kB] 168s Get:317 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-terminal-size-dev s390x 0.3.0-2 [12.6 kB] 168s Get:318 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-unicase-dev s390x 2.7.0-1 [19.4 kB] 168s Get:319 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-unicode-width-dev s390x 0.1.14-1 [196 kB] 168s Get:320 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-clap-builder-dev s390x 4.5.15-2 [135 kB] 168s Get:321 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-heck-dev s390x 0.4.1-1 [13.3 kB] 168s Get:322 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-clap-derive-dev s390x 4.5.13-2 [29.3 kB] 168s Get:323 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-clap-dev s390x 4.5.16-1 [52.3 kB] 168s Get:324 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-csv-core-dev s390x 0.1.11-1 [25.9 kB] 168s Get:325 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-csv-dev s390x 1.3.0-1 [729 kB] 168s Get:326 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-futures-sink-dev s390x 0.3.31-1 [10.1 kB] 168s Get:327 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-futures-channel-dev s390x 0.3.30-1 [31.8 kB] 168s Get:328 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-futures-task-dev s390x 0.3.30-1 [13.5 kB] 168s Get:329 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-futures-macro-dev s390x 0.3.30-1 [13.3 kB] 168s Get:330 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-futures-util-dev s390x 0.3.30-2 [127 kB] 168s Get:331 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-num-cpus-dev s390x 1.16.0-1 [18.1 kB] 168s Get:332 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-futures-executor-dev s390x 0.3.30-1 [19.8 kB] 168s Get:333 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-futures-dev s390x 0.3.30-2 [53.2 kB] 168s Get:334 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-is-terminal-dev s390x 0.4.13-1 [8266 B] 168s Get:335 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-itertools-dev s390x 0.10.5-1 [101 kB] 168s Get:336 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-oorandom-dev s390x 11.1.3-1 [11.3 kB] 168s Get:337 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-winapi-i686-pc-windows-gnu-dev s390x 0.4.0-1 [3652 B] 168s Get:338 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-winapi-x86-64-pc-windows-gnu-dev s390x 0.4.0-1 [3660 B] 168s Get:339 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-winapi-dev s390x 0.3.9-1 [953 kB] 168s Get:340 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-dirs-sys-next-dev s390x 0.1.1-1 [12.1 kB] 168s Get:341 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-dirs-next-dev s390x 2.0.0-1 [13.1 kB] 168s Get:342 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-float-ord-dev s390x 0.3.2-1 [9400 B] 168s Get:343 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-cmake-dev s390x 0.1.45-1 [16.0 kB] 168s Get:344 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-freetype-sys-dev s390x 0.13.1-1 [11.8 kB] 168s Get:345 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-freetype-dev s390x 0.7.0-4 [20.4 kB] 168s Get:346 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-spin-dev s390x 0.9.8-4 [33.4 kB] 168s Get:347 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-lazy-static-dev s390x 1.5.0-1 [14.2 kB] 168s Get:348 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-pathfinder-simd-dev s390x 0.5.2-1 [20.1 kB] 168s Get:349 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-pathfinder-geometry-dev s390x 0.5.1-1 [13.2 kB] 168s Get:350 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-winapi-util-dev s390x 0.1.6-1 [14.0 kB] 168s Get:351 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-same-file-dev s390x 1.0.6-1 [11.5 kB] 168s Get:352 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-walkdir-dev s390x 2.5.0-1 [24.5 kB] 168s Get:353 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-const-cstr-dev s390x 0.3.0-1 [9070 B] 168s Get:354 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-libloading-dev s390x 0.8.5-1 [29.2 kB] 168s Get:355 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-dlib-dev s390x 0.5.2-2 [7974 B] 168s Get:356 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-yeslogic-fontconfig-sys-dev s390x 3.0.1-1 [8110 B] 168s Get:357 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-font-kit-dev s390x 0.11.0-2 [56.2 kB] 169s Get:358 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-color-quant-dev s390x 1.1.0-1 [8464 B] 169s Get:359 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-weezl-dev s390x 0.1.5-1 [30.3 kB] 169s Get:360 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-gif-dev s390x 0.11.3-1 [31.9 kB] 169s Get:361 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-jpeg-decoder-dev s390x 0.3.0-1 [717 kB] 169s Get:362 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-num-integer-dev s390x 0.1.46-1 [22.6 kB] 169s Get:363 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-humantime-dev s390x 2.1.0-1 [18.2 kB] 169s Get:364 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-termcolor-dev s390x 1.4.1-1 [19.7 kB] 169s Get:365 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-env-logger-dev s390x 0.10.2-2 [34.4 kB] 169s Get:366 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-quickcheck-dev s390x 1.0.3-3 [27.9 kB] 169s Get:367 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-num-bigint-dev s390x 0.4.6-1 [84.9 kB] 169s Get:368 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-num-rational-dev s390x 0.4.2-1 [28.7 kB] 169s Get:369 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-png-dev s390x 0.17.7-3 [63.4 kB] 169s Get:370 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-qoi-dev s390x 0.4.1-2 [56.7 kB] 169s Get:371 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-tiff-dev s390x 0.9.0-1 [1413 kB] 169s Get:372 http://ftpmaster.internal/ubuntu plucky/main s390x libsharpyuv0 s390x 1.4.0-0.1 [16.2 kB] 169s Get:373 http://ftpmaster.internal/ubuntu plucky/main s390x libwebp7 s390x 1.4.0-0.1 [204 kB] 169s Get:374 http://ftpmaster.internal/ubuntu plucky/main s390x libwebpdemux2 s390x 1.4.0-0.1 [12.2 kB] 169s Get:375 http://ftpmaster.internal/ubuntu plucky/main s390x libwebpmux3 s390x 1.4.0-0.1 [25.3 kB] 169s Get:376 http://ftpmaster.internal/ubuntu plucky/main s390x libwebpdecoder3 s390x 1.4.0-0.1 [89.8 kB] 169s Get:377 http://ftpmaster.internal/ubuntu plucky/main s390x libsharpyuv-dev s390x 1.4.0-0.1 [16.9 kB] 169s Get:378 http://ftpmaster.internal/ubuntu plucky/main s390x libwebp-dev s390x 1.4.0-0.1 [335 kB] 169s Get:379 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-libwebp-sys-dev s390x 0.9.5-1build1 [1357 kB] 170s Get:380 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-webp-dev s390x 0.2.6-1 [1846 kB] 170s Get:381 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-image-dev s390x 0.24.7-2 [229 kB] 170s Get:382 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-plotters-backend-dev s390x 0.3.7-1 [15.7 kB] 170s Get:383 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-plotters-bitmap-dev s390x 0.3.3-3 [17.1 kB] 170s Get:384 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-plotters-svg-dev s390x 0.3.5-1 [9260 B] 170s Get:385 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-web-sys-dev s390x 0.3.64-2 [581 kB] 170s Get:386 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-plotters-dev s390x 0.3.5-4 [118 kB] 170s Get:387 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-smol-dev all 2.0.2-1 [205 kB] 170s Get:388 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-tinytemplate-dev s390x 1.2.1-1 [26.8 kB] 170s Get:389 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-criterion-dev all 0.5.1-6 [104 kB] 170s Get:390 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-phf-generator-dev s390x 0.11.2-2 [12.3 kB] 170s Get:391 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-phf-codegen-dev s390x 0.11.2-1 [14.3 kB] 170s Get:392 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-chrono-tz-build-dev s390x 0.2.1-1 [12.1 kB] 170s Get:393 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-chrono-tz-dev s390x 0.8.6-2 [513 kB] 170s Get:394 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ctor-dev s390x 0.1.26-1 [12.0 kB] 170s Get:395 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-powerfmt-macros-dev s390x 0.1.0-1 [10.5 kB] 170s Get:396 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-powerfmt-dev s390x 0.2.0-1 [16.5 kB] 170s Get:397 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-deranged-dev s390x 0.3.11-1 [18.4 kB] 170s Get:398 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-eui48-dev s390x 1.1.0-2 [16.1 kB] 170s Get:399 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-indenter-dev s390x 0.3.3-1 [8642 B] 170s Get:400 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-eyre-dev s390x 0.6.12-1 [38.0 kB] 170s Get:401 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-eyre+default-dev s390x 0.6.12-1 [1050 B] 170s Get:402 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-fancy-regex-dev s390x 0.11.0-2 [54.7 kB] 170s Get:403 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-fnv-dev s390x 1.0.7-1 [12.8 kB] 170s Get:404 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-geo-types-dev s390x 0.7.11-2 [32.8 kB] 170s Get:405 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-ghost-dev s390x 0.1.5-1 [16.1 kB] 170s Get:406 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-hmac-dev s390x 0.12.1-1 [43.9 kB] 170s Get:407 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-indoc-dev s390x 2.0.5-1 [16.7 kB] 170s Get:408 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-inventory-dev s390x 0.3.2-1 [13.5 kB] 170s Get:409 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-memoffset-dev s390x 0.8.0-1 [10.9 kB] 170s Get:410 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-num-conv-dev s390x 0.1.0-1 [8990 B] 170s Get:411 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-num-threads-dev s390x 0.1.7-1 [9154 B] 170s Get:412 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-postgres-derive-dev s390x 0.4.5-1 [13.4 kB] 170s Get:413 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-sha2-asm-dev s390x 0.6.2-2 [14.4 kB] 170s Get:414 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-sha2-dev s390x 0.10.8-1 [25.6 kB] 170s Get:415 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-unicode-bidi-dev s390x 0.3.13-1 [39.8 kB] 170s Get:416 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-unicode-normalization-dev s390x 0.1.22-1 [104 kB] 170s Get:417 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-stringprep-dev s390x 0.1.2-1 [16.5 kB] 170s Get:418 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-postgres-protocol-dev s390x 0.6.6-2 [25.9 kB] 170s Get:419 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-time-core-dev s390x 0.1.2-1 [9136 B] 170s Get:420 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-time-macros-dev s390x 0.2.16-1 [25.1 kB] 170s Get:421 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-time-dev s390x 0.3.36-2 [99.4 kB] 170s Get:422 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-postgres-types-dev s390x 0.2.6-2 [30.1 kB] 171s Get:423 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rand-xorshift-dev s390x 0.3.0-2 [10.9 kB] 171s Get:424 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-quick-error-dev s390x 2.0.1-1 [15.6 kB] 171s Get:425 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-tempfile-dev s390x 3.10.1-1 [33.7 kB] 171s Get:426 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rusty-fork-dev s390x 0.3.0-1 [20.4 kB] 171s Get:427 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-wait-timeout-dev s390x 0.2.0-1 [14.1 kB] 171s Get:428 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rusty-fork+wait-timeout-dev s390x 0.3.0-1 [1136 B] 171s Get:429 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-unarray-dev s390x 0.1.4-1 [14.6 kB] 171s Get:430 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-proptest-dev s390x 1.5.0-2 [171 kB] 171s Get:431 http://ftpmaster.internal/ubuntu plucky/universe s390x llvm-19-runtime s390x 1:19.1.2-1ubuntu1 [623 kB] 171s Get:432 http://ftpmaster.internal/ubuntu plucky/universe s390x llvm-runtime s390x 1:19.0-60~exp1 [5608 B] 171s Get:433 http://ftpmaster.internal/ubuntu plucky/universe s390x llvm-19-linker-tools s390x 1:19.1.2-1ubuntu1 [1529 kB] 171s Get:434 http://ftpmaster.internal/ubuntu plucky/universe s390x libpfm4 s390x 4.13.0+git83-g91970fe-1 [37.3 kB] 171s Get:435 http://ftpmaster.internal/ubuntu plucky/universe s390x llvm-19 s390x 1:19.1.2-1ubuntu1 [21.1 MB] 173s Get:436 http://ftpmaster.internal/ubuntu plucky/universe s390x llvm s390x 1:19.0-60~exp1 [4144 B] 173s Get:437 http://ftpmaster.internal/ubuntu plucky/universe s390x binutils-mingw-w64-x86-64 s390x 2.43.1-4ubuntu1+12 [3502 kB] 173s Get:438 http://ftpmaster.internal/ubuntu plucky/universe s390x binutils-mingw-w64-i686 s390x 2.43.1-4ubuntu1+12 [3215 kB] 174s Get:439 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-python3-dll-a-dev s390x 0.2.10-1 [31.6 kB] 174s Get:440 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-target-lexicon-dev s390x 0.12.14-1 [25.1 kB] 174s Get:441 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-pyo3-build-config-dev s390x 0.22.6-1 [30.8 kB] 174s Get:442 http://ftpmaster.internal/ubuntu plucky/main s390x python3.12-dev s390x 3.12.7-3 [505 kB] 174s Get:443 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-pyo3-ffi-dev s390x 0.22.6-1build1 [62.6 kB] 174s Get:444 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-pyo3-macros-backend-dev s390x 0.22.6-1 [58.5 kB] 174s Get:445 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-pyo3-macros-dev s390x 0.22.6-1 [10.4 kB] 174s Get:446 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rust-decimal-dev s390x 1.36.0-1 [114 kB] 174s Get:447 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-unindent-dev s390x 0.2.3-1 [9186 B] 174s Get:448 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-pyo3-dev s390x 0.22.6-1 [415 kB] 174s Get:449 http://ftpmaster.internal/ubuntu plucky/universe s390x librust-rustc-hash-dev s390x 1.1.0-1 [10.8 kB] 174s Get:450 http://ftpmaster.internal/ubuntu plucky/universe s390x pybuild-plugin-autopkgtest all 6.20241024 [1746 B] 174s Get:451 http://ftpmaster.internal/ubuntu plucky/main s390x python3-packaging all 24.2-1 [51.5 kB] 174s Get:452 http://ftpmaster.internal/ubuntu plucky/universe s390x python3-pyproject-hooks all 1.2.0-1 [10.2 kB] 174s Get:453 http://ftpmaster.internal/ubuntu plucky/universe s390x python3-toml all 0.10.2-1 [16.5 kB] 174s Get:454 http://ftpmaster.internal/ubuntu plucky/universe s390x python3-wheel all 0.45.0-1 [57.7 kB] 174s Get:455 http://ftpmaster.internal/ubuntu plucky/universe s390x python3-build all 1.2.2-1 [31.0 kB] 174s Get:456 http://ftpmaster.internal/ubuntu plucky/universe s390x python3-installer all 0.7.0+dfsg1-3 [17.4 kB] 174s Get:457 http://ftpmaster.internal/ubuntu plucky/universe s390x pybuild-plugin-pyproject all 6.20241024 [1728 B] 174s Get:458 http://ftpmaster.internal/ubuntu plucky/main s390x python3.13 s390x 3.13.0-2 [719 kB] 174s Get:459 http://ftpmaster.internal/ubuntu plucky-proposed/main s390x python3-all s390x 3.12.7-1 [890 B] 174s Get:460 http://ftpmaster.internal/ubuntu plucky/main s390x python3-dateutil all 2.9.0-3 [80.2 kB] 174s Get:461 http://ftpmaster.internal/ubuntu plucky/main s390x python3-sortedcontainers all 2.4.0-2 [27.6 kB] 174s Get:462 http://ftpmaster.internal/ubuntu plucky/universe s390x python3-hypothesis all 6.119.3-1 [329 kB] 174s Get:463 http://ftpmaster.internal/ubuntu plucky/universe s390x python3-iniconfig all 1.1.1-2 [6024 B] 174s Get:464 http://ftpmaster.internal/ubuntu plucky/universe s390x python3-pluggy all 1.5.0-1 [21.0 kB] 174s Get:465 http://ftpmaster.internal/ubuntu plucky/universe s390x python3-pytest all 8.3.3-1 [251 kB] 174s Get:466 http://ftpmaster.internal/ubuntu plucky/universe s390x python3-regex s390x 0.1.20240724-1build1 [310 kB] 174s Get:467 http://ftpmaster.internal/ubuntu plucky/main s390x python3-semantic-version all 2.10.0-2 [15.1 kB] 174s Get:468 http://ftpmaster.internal/ubuntu plucky/main s390x rustc s390x 1.80.1ubuntu2 [2754 B] 174s Get:469 http://ftpmaster.internal/ubuntu plucky/main s390x cargo s390x 1.80.1ubuntu2 [2246 B] 174s Get:470 http://ftpmaster.internal/ubuntu plucky/universe s390x python3-setuptools-rust all 1.9.0+dfsg-2 [23.1 kB] 174s Get:471 http://ftpmaster.internal/ubuntu plucky-proposed/universe s390x python3-tiktoken s390x 0.8.0-1build1 [787 kB] 176s Fetched 230 MB in 21s (10.9 MB/s) 176s Selecting previously unselected package libpython3.13-minimal:s390x. 176s (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 ... 55568 files and directories currently installed.) 176s Preparing to unpack .../000-libpython3.13-minimal_3.13.0-2_s390x.deb ... 176s Unpacking libpython3.13-minimal:s390x (3.13.0-2) ... 176s Selecting previously unselected package python3.13-minimal. 176s Preparing to unpack .../001-python3.13-minimal_3.13.0-2_s390x.deb ... 176s Unpacking python3.13-minimal (3.13.0-2) ... 176s Selecting previously unselected package m4. 176s Preparing to unpack .../002-m4_1.4.19-4build1_s390x.deb ... 176s Unpacking m4 (1.4.19-4build1) ... 176s Selecting previously unselected package autoconf. 176s Preparing to unpack .../003-autoconf_2.72-3_all.deb ... 176s Unpacking autoconf (2.72-3) ... 176s Selecting previously unselected package autotools-dev. 176s Preparing to unpack .../004-autotools-dev_20220109.1_all.deb ... 176s Unpacking autotools-dev (20220109.1) ... 176s Selecting previously unselected package automake. 176s Preparing to unpack .../005-automake_1%3a1.16.5-1.3ubuntu1_all.deb ... 176s Unpacking automake (1:1.16.5-1.3ubuntu1) ... 176s Selecting previously unselected package autopoint. 176s Preparing to unpack .../006-autopoint_0.22.5-2_all.deb ... 176s Unpacking autopoint (0.22.5-2) ... 176s Selecting previously unselected package libisl23:s390x. 176s Preparing to unpack .../007-libisl23_0.27-1_s390x.deb ... 176s Unpacking libisl23:s390x (0.27-1) ... 176s Selecting previously unselected package libmpc3:s390x. 176s Preparing to unpack .../008-libmpc3_1.3.1-1build2_s390x.deb ... 176s Unpacking libmpc3:s390x (1.3.1-1build2) ... 176s Selecting previously unselected package cpp-14-s390x-linux-gnu. 176s Preparing to unpack .../009-cpp-14-s390x-linux-gnu_14.2.0-8ubuntu1_s390x.deb ... 176s Unpacking cpp-14-s390x-linux-gnu (14.2.0-8ubuntu1) ... 176s Selecting previously unselected package cpp-14. 176s Preparing to unpack .../010-cpp-14_14.2.0-8ubuntu1_s390x.deb ... 176s Unpacking cpp-14 (14.2.0-8ubuntu1) ... 176s Selecting previously unselected package cpp-s390x-linux-gnu. 176s Preparing to unpack .../011-cpp-s390x-linux-gnu_4%3a14.1.0-2ubuntu1_s390x.deb ... 176s Unpacking cpp-s390x-linux-gnu (4:14.1.0-2ubuntu1) ... 176s Selecting previously unselected package cpp. 176s Preparing to unpack .../012-cpp_4%3a14.1.0-2ubuntu1_s390x.deb ... 176s Unpacking cpp (4:14.1.0-2ubuntu1) ... 176s Selecting previously unselected package libcc1-0:s390x. 176s Preparing to unpack .../013-libcc1-0_14.2.0-8ubuntu1_s390x.deb ... 176s Unpacking libcc1-0:s390x (14.2.0-8ubuntu1) ... 176s Selecting previously unselected package libgomp1:s390x. 176s Preparing to unpack .../014-libgomp1_14.2.0-8ubuntu1_s390x.deb ... 176s Unpacking libgomp1:s390x (14.2.0-8ubuntu1) ... 176s Selecting previously unselected package libitm1:s390x. 176s Preparing to unpack .../015-libitm1_14.2.0-8ubuntu1_s390x.deb ... 176s Unpacking libitm1:s390x (14.2.0-8ubuntu1) ... 176s Selecting previously unselected package libasan8:s390x. 176s Preparing to unpack .../016-libasan8_14.2.0-8ubuntu1_s390x.deb ... 176s Unpacking libasan8:s390x (14.2.0-8ubuntu1) ... 176s Selecting previously unselected package libubsan1:s390x. 176s Preparing to unpack .../017-libubsan1_14.2.0-8ubuntu1_s390x.deb ... 176s Unpacking libubsan1:s390x (14.2.0-8ubuntu1) ... 176s Selecting previously unselected package libgcc-14-dev:s390x. 176s Preparing to unpack .../018-libgcc-14-dev_14.2.0-8ubuntu1_s390x.deb ... 176s Unpacking libgcc-14-dev:s390x (14.2.0-8ubuntu1) ... 176s Selecting previously unselected package gcc-14-s390x-linux-gnu. 176s Preparing to unpack .../019-gcc-14-s390x-linux-gnu_14.2.0-8ubuntu1_s390x.deb ... 176s Unpacking gcc-14-s390x-linux-gnu (14.2.0-8ubuntu1) ... 177s Selecting previously unselected package gcc-14. 177s Preparing to unpack .../020-gcc-14_14.2.0-8ubuntu1_s390x.deb ... 177s Unpacking gcc-14 (14.2.0-8ubuntu1) ... 177s Selecting previously unselected package gcc-s390x-linux-gnu. 177s Preparing to unpack .../021-gcc-s390x-linux-gnu_4%3a14.1.0-2ubuntu1_s390x.deb ... 177s Unpacking gcc-s390x-linux-gnu (4:14.1.0-2ubuntu1) ... 177s Selecting previously unselected package gcc. 177s Preparing to unpack .../022-gcc_4%3a14.1.0-2ubuntu1_s390x.deb ... 177s Unpacking gcc (4:14.1.0-2ubuntu1) ... 177s Selecting previously unselected package libstdc++-14-dev:s390x. 177s Preparing to unpack .../023-libstdc++-14-dev_14.2.0-8ubuntu1_s390x.deb ... 177s Unpacking libstdc++-14-dev:s390x (14.2.0-8ubuntu1) ... 177s Selecting previously unselected package g++-14-s390x-linux-gnu. 177s Preparing to unpack .../024-g++-14-s390x-linux-gnu_14.2.0-8ubuntu1_s390x.deb ... 177s Unpacking g++-14-s390x-linux-gnu (14.2.0-8ubuntu1) ... 177s Selecting previously unselected package g++-14. 177s Preparing to unpack .../025-g++-14_14.2.0-8ubuntu1_s390x.deb ... 177s Unpacking g++-14 (14.2.0-8ubuntu1) ... 177s Selecting previously unselected package g++-s390x-linux-gnu. 177s Preparing to unpack .../026-g++-s390x-linux-gnu_4%3a14.1.0-2ubuntu1_s390x.deb ... 177s Unpacking g++-s390x-linux-gnu (4:14.1.0-2ubuntu1) ... 177s Selecting previously unselected package g++. 177s Preparing to unpack .../027-g++_4%3a14.1.0-2ubuntu1_s390x.deb ... 177s Unpacking g++ (4:14.1.0-2ubuntu1) ... 177s Selecting previously unselected package build-essential. 177s Preparing to unpack .../028-build-essential_12.10ubuntu1_s390x.deb ... 177s Unpacking build-essential (12.10ubuntu1) ... 177s Selecting previously unselected package libhttp-parser2.9:s390x. 177s Preparing to unpack .../029-libhttp-parser2.9_2.9.4-6build1_s390x.deb ... 177s Unpacking libhttp-parser2.9:s390x (2.9.4-6build1) ... 177s Selecting previously unselected package libgit2-1.7:s390x. 177s Preparing to unpack .../030-libgit2-1.7_1.7.2+ds-1ubuntu3_s390x.deb ... 177s Unpacking libgit2-1.7:s390x (1.7.2+ds-1ubuntu3) ... 177s Selecting previously unselected package libstd-rust-1.80:s390x. 177s Preparing to unpack .../031-libstd-rust-1.80_1.80.1+dfsg0ubuntu1-0ubuntu1_s390x.deb ... 177s Unpacking libstd-rust-1.80:s390x (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 177s Selecting previously unselected package libstd-rust-1.80-dev:s390x. 177s Preparing to unpack .../032-libstd-rust-1.80-dev_1.80.1+dfsg0ubuntu1-0ubuntu1_s390x.deb ... 177s Unpacking libstd-rust-1.80-dev:s390x (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 178s Selecting previously unselected package rustc-1.80. 178s Preparing to unpack .../033-rustc-1.80_1.80.1+dfsg0ubuntu1-0ubuntu1_s390x.deb ... 178s Unpacking rustc-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 178s Selecting previously unselected package cargo-1.80. 178s Preparing to unpack .../034-cargo-1.80_1.80.1+dfsg0ubuntu1-0ubuntu1_s390x.deb ... 178s Unpacking cargo-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 178s Selecting previously unselected package libjsoncpp25:s390x. 178s Preparing to unpack .../035-libjsoncpp25_1.9.5-6build1_s390x.deb ... 178s Unpacking libjsoncpp25:s390x (1.9.5-6build1) ... 178s Selecting previously unselected package librhash0:s390x. 178s Preparing to unpack .../036-librhash0_1.4.3-3build1_s390x.deb ... 178s Unpacking librhash0:s390x (1.4.3-3build1) ... 178s Selecting previously unselected package cmake-data. 178s Preparing to unpack .../037-cmake-data_3.30.3-1_all.deb ... 178s Unpacking cmake-data (3.30.3-1) ... 178s Selecting previously unselected package cmake. 178s Preparing to unpack .../038-cmake_3.30.3-1_s390x.deb ... 178s Unpacking cmake (3.30.3-1) ... 179s Selecting previously unselected package libdebhelper-perl. 179s Preparing to unpack .../039-libdebhelper-perl_13.20ubuntu1_all.deb ... 179s Unpacking libdebhelper-perl (13.20ubuntu1) ... 179s Selecting previously unselected package libtool. 179s Preparing to unpack .../040-libtool_2.4.7-8_all.deb ... 179s Unpacking libtool (2.4.7-8) ... 179s Selecting previously unselected package dh-autoreconf. 179s Preparing to unpack .../041-dh-autoreconf_20_all.deb ... 179s Unpacking dh-autoreconf (20) ... 179s Selecting previously unselected package libarchive-zip-perl. 179s Preparing to unpack .../042-libarchive-zip-perl_1.68-1_all.deb ... 179s Unpacking libarchive-zip-perl (1.68-1) ... 179s Selecting previously unselected package libfile-stripnondeterminism-perl. 179s Preparing to unpack .../043-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... 179s Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... 179s Selecting previously unselected package dh-strip-nondeterminism. 179s Preparing to unpack .../044-dh-strip-nondeterminism_1.14.0-1_all.deb ... 179s Unpacking dh-strip-nondeterminism (1.14.0-1) ... 179s Selecting previously unselected package debugedit. 179s Preparing to unpack .../045-debugedit_1%3a5.1-1_s390x.deb ... 179s Unpacking debugedit (1:5.1-1) ... 179s Selecting previously unselected package dwz. 179s Preparing to unpack .../046-dwz_0.15-1build6_s390x.deb ... 179s Unpacking dwz (0.15-1build6) ... 179s Selecting previously unselected package gettext. 179s Preparing to unpack .../047-gettext_0.22.5-2_s390x.deb ... 179s Unpacking gettext (0.22.5-2) ... 179s Selecting previously unselected package intltool-debian. 179s Preparing to unpack .../048-intltool-debian_0.35.0+20060710.6_all.deb ... 179s Unpacking intltool-debian (0.35.0+20060710.6) ... 179s Selecting previously unselected package po-debconf. 179s Preparing to unpack .../049-po-debconf_1.0.21+nmu1_all.deb ... 179s Unpacking po-debconf (1.0.21+nmu1) ... 179s Selecting previously unselected package debhelper. 179s Preparing to unpack .../050-debhelper_13.20ubuntu1_all.deb ... 179s Unpacking debhelper (13.20ubuntu1) ... 179s Selecting previously unselected package dh-python. 179s Preparing to unpack .../051-dh-python_6.20241024_all.deb ... 179s Unpacking dh-python (6.20241024) ... 179s Selecting previously unselected package fonts-dejavu-mono. 179s Preparing to unpack .../052-fonts-dejavu-mono_2.37-8_all.deb ... 179s Unpacking fonts-dejavu-mono (2.37-8) ... 179s Selecting previously unselected package fonts-dejavu-core. 179s Preparing to unpack .../053-fonts-dejavu-core_2.37-8_all.deb ... 179s Unpacking fonts-dejavu-core (2.37-8) ... 179s Selecting previously unselected package fontconfig-config. 179s Preparing to unpack .../054-fontconfig-config_2.15.0-1.1ubuntu2_s390x.deb ... 179s Unpacking fontconfig-config (2.15.0-1.1ubuntu2) ... 179s Selecting previously unselected package libbrotli-dev:s390x. 179s Preparing to unpack .../055-libbrotli-dev_1.1.0-2build3_s390x.deb ... 179s Unpacking libbrotli-dev:s390x (1.1.0-2build3) ... 179s Selecting previously unselected package libbz2-dev:s390x. 179s Preparing to unpack .../056-libbz2-dev_1.0.8-6_s390x.deb ... 179s Unpacking libbz2-dev:s390x (1.0.8-6) ... 179s Selecting previously unselected package libexpat1-dev:s390x. 179s Preparing to unpack .../057-libexpat1-dev_2.6.4-1_s390x.deb ... 179s Unpacking libexpat1-dev:s390x (2.6.4-1) ... 179s Selecting previously unselected package libfreetype6:s390x. 179s Preparing to unpack .../058-libfreetype6_2.13.3+dfsg-1_s390x.deb ... 179s Unpacking libfreetype6:s390x (2.13.3+dfsg-1) ... 179s Selecting previously unselected package libfontconfig1:s390x. 179s Preparing to unpack .../059-libfontconfig1_2.15.0-1.1ubuntu2_s390x.deb ... 179s Unpacking libfontconfig1:s390x (2.15.0-1.1ubuntu2) ... 179s Selecting previously unselected package zlib1g-dev:s390x. 179s Preparing to unpack .../060-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1ubuntu1_s390x.deb ... 179s Unpacking zlib1g-dev:s390x (1:1.3.dfsg+really1.3.1-1ubuntu1) ... 179s Selecting previously unselected package libpng-dev:s390x. 179s Preparing to unpack .../061-libpng-dev_1.6.44-2_s390x.deb ... 179s Unpacking libpng-dev:s390x (1.6.44-2) ... 179s Selecting previously unselected package libfreetype-dev:s390x. 179s Preparing to unpack .../062-libfreetype-dev_2.13.3+dfsg-1_s390x.deb ... 179s Unpacking libfreetype-dev:s390x (2.13.3+dfsg-1) ... 179s Selecting previously unselected package uuid-dev:s390x. 179s Preparing to unpack .../063-uuid-dev_2.40.2-1ubuntu1_s390x.deb ... 179s Unpacking uuid-dev:s390x (2.40.2-1ubuntu1) ... 179s Selecting previously unselected package libpkgconf3:s390x. 179s Preparing to unpack .../064-libpkgconf3_1.8.1-4_s390x.deb ... 179s Unpacking libpkgconf3:s390x (1.8.1-4) ... 179s Selecting previously unselected package pkgconf-bin. 179s Preparing to unpack .../065-pkgconf-bin_1.8.1-4_s390x.deb ... 179s Unpacking pkgconf-bin (1.8.1-4) ... 179s Selecting previously unselected package pkgconf:s390x. 179s Preparing to unpack .../066-pkgconf_1.8.1-4_s390x.deb ... 179s Unpacking pkgconf:s390x (1.8.1-4) ... 179s Selecting previously unselected package libfontconfig-dev:s390x. 179s Preparing to unpack .../067-libfontconfig-dev_2.15.0-1.1ubuntu2_s390x.deb ... 179s Unpacking libfontconfig-dev:s390x (2.15.0-1.1ubuntu2) ... 179s Selecting previously unselected package libpython3.12-dev:s390x. 179s Preparing to unpack .../068-libpython3.12-dev_3.12.7-3_s390x.deb ... 179s Unpacking libpython3.12-dev:s390x (3.12.7-3) ... 179s Selecting previously unselected package libpython3-dev:s390x. 179s Preparing to unpack .../069-libpython3-dev_3.12.7-1_s390x.deb ... 179s Unpacking libpython3-dev:s390x (3.12.7-1) ... 179s Selecting previously unselected package libpython3.13-stdlib:s390x. 179s Preparing to unpack .../070-libpython3.13-stdlib_3.13.0-2_s390x.deb ... 179s Unpacking libpython3.13-stdlib:s390x (3.13.0-2) ... 179s Selecting previously unselected package libpython3.13:s390x. 179s Preparing to unpack .../071-libpython3.13_3.13.0-2_s390x.deb ... 179s Unpacking libpython3.13:s390x (3.13.0-2) ... 180s Selecting previously unselected package libpython3.13-dev:s390x. 180s Preparing to unpack .../072-libpython3.13-dev_3.13.0-2_s390x.deb ... 180s Unpacking libpython3.13-dev:s390x (3.13.0-2) ... 180s Selecting previously unselected package libpython3-all-dev:s390x. 180s Preparing to unpack .../073-libpython3-all-dev_3.12.7-1_s390x.deb ... 180s Unpacking libpython3-all-dev:s390x (3.12.7-1) ... 180s Selecting previously unselected package librust-ab-glyph-rasterizer-dev:s390x. 180s Preparing to unpack .../074-librust-ab-glyph-rasterizer-dev_0.1.7-1_s390x.deb ... 180s Unpacking librust-ab-glyph-rasterizer-dev:s390x (0.1.7-1) ... 180s Selecting previously unselected package librust-libm-dev:s390x. 180s Preparing to unpack .../075-librust-libm-dev_0.2.8-1_s390x.deb ... 180s Unpacking librust-libm-dev:s390x (0.2.8-1) ... 180s Selecting previously unselected package librust-ab-glyph-rasterizer+libm-dev:s390x. 180s Preparing to unpack .../076-librust-ab-glyph-rasterizer+libm-dev_0.1.7-1_s390x.deb ... 180s Unpacking librust-ab-glyph-rasterizer+libm-dev:s390x (0.1.7-1) ... 180s Selecting previously unselected package librust-core-maths-dev:s390x. 180s Preparing to unpack .../077-librust-core-maths-dev_0.1.0-2_s390x.deb ... 180s Unpacking librust-core-maths-dev:s390x (0.1.0-2) ... 180s Selecting previously unselected package librust-ttf-parser-dev:s390x. 180s Preparing to unpack .../078-librust-ttf-parser-dev_0.24.1-1_s390x.deb ... 180s Unpacking librust-ttf-parser-dev:s390x (0.24.1-1) ... 180s Selecting previously unselected package librust-owned-ttf-parser-dev:s390x. 180s Preparing to unpack .../079-librust-owned-ttf-parser-dev_0.24.0-1_s390x.deb ... 180s Unpacking librust-owned-ttf-parser-dev:s390x (0.24.0-1) ... 180s Selecting previously unselected package librust-ab-glyph-dev:s390x. 180s Preparing to unpack .../080-librust-ab-glyph-dev_0.2.28-1_s390x.deb ... 180s Unpacking librust-ab-glyph-dev:s390x (0.2.28-1) ... 180s Selecting previously unselected package librust-cfg-if-dev:s390x. 180s Preparing to unpack .../081-librust-cfg-if-dev_1.0.0-1_s390x.deb ... 180s Unpacking librust-cfg-if-dev:s390x (1.0.0-1) ... 180s Selecting previously unselected package librust-cpp-demangle-dev:s390x. 180s Preparing to unpack .../082-librust-cpp-demangle-dev_0.4.0-1_s390x.deb ... 180s Unpacking librust-cpp-demangle-dev:s390x (0.4.0-1) ... 180s Selecting previously unselected package librust-fallible-iterator-dev:s390x. 180s Preparing to unpack .../083-librust-fallible-iterator-dev_0.3.0-2_s390x.deb ... 180s Unpacking librust-fallible-iterator-dev:s390x (0.3.0-2) ... 180s Selecting previously unselected package librust-unicode-ident-dev:s390x. 180s Preparing to unpack .../084-librust-unicode-ident-dev_1.0.13-1_s390x.deb ... 180s Unpacking librust-unicode-ident-dev:s390x (1.0.13-1) ... 180s Selecting previously unselected package librust-proc-macro2-dev:s390x. 180s Preparing to unpack .../085-librust-proc-macro2-dev_1.0.86-1_s390x.deb ... 180s Unpacking librust-proc-macro2-dev:s390x (1.0.86-1) ... 180s Selecting previously unselected package librust-quote-dev:s390x. 180s Preparing to unpack .../086-librust-quote-dev_1.0.37-1_s390x.deb ... 180s Unpacking librust-quote-dev:s390x (1.0.37-1) ... 180s Selecting previously unselected package librust-syn-dev:s390x. 180s Preparing to unpack .../087-librust-syn-dev_2.0.85-1_s390x.deb ... 180s Unpacking librust-syn-dev:s390x (2.0.85-1) ... 180s Selecting previously unselected package librust-derive-arbitrary-dev:s390x. 180s Preparing to unpack .../088-librust-derive-arbitrary-dev_1.3.2-1_s390x.deb ... 180s Unpacking librust-derive-arbitrary-dev:s390x (1.3.2-1) ... 180s Selecting previously unselected package librust-arbitrary-dev:s390x. 180s Preparing to unpack .../089-librust-arbitrary-dev_1.3.2-1_s390x.deb ... 180s Unpacking librust-arbitrary-dev:s390x (1.3.2-1) ... 180s Selecting previously unselected package librust-equivalent-dev:s390x. 180s Preparing to unpack .../090-librust-equivalent-dev_1.0.1-1_s390x.deb ... 180s Unpacking librust-equivalent-dev:s390x (1.0.1-1) ... 180s Selecting previously unselected package librust-critical-section-dev:s390x. 180s Preparing to unpack .../091-librust-critical-section-dev_1.1.3-1_s390x.deb ... 180s Unpacking librust-critical-section-dev:s390x (1.1.3-1) ... 180s Selecting previously unselected package librust-serde-derive-dev:s390x. 180s Preparing to unpack .../092-librust-serde-derive-dev_1.0.210-1_s390x.deb ... 180s Unpacking librust-serde-derive-dev:s390x (1.0.210-1) ... 180s Selecting previously unselected package librust-serde-dev:s390x. 180s Preparing to unpack .../093-librust-serde-dev_1.0.210-2_s390x.deb ... 180s Unpacking librust-serde-dev:s390x (1.0.210-2) ... 180s Selecting previously unselected package librust-portable-atomic-dev:s390x. 180s Preparing to unpack .../094-librust-portable-atomic-dev_1.9.0-4_s390x.deb ... 180s Unpacking librust-portable-atomic-dev:s390x (1.9.0-4) ... 180s Selecting previously unselected package librust-libc-dev:s390x. 180s Preparing to unpack .../095-librust-libc-dev_0.2.155-1_s390x.deb ... 180s Unpacking librust-libc-dev:s390x (0.2.155-1) ... 180s Selecting previously unselected package librust-getrandom-dev:s390x. 180s Preparing to unpack .../096-librust-getrandom-dev_0.2.12-1_s390x.deb ... 180s Unpacking librust-getrandom-dev:s390x (0.2.12-1) ... 180s Selecting previously unselected package librust-smallvec-dev:s390x. 180s Preparing to unpack .../097-librust-smallvec-dev_1.13.2-1_s390x.deb ... 180s Unpacking librust-smallvec-dev:s390x (1.13.2-1) ... 180s Selecting previously unselected package librust-parking-lot-core-dev:s390x. 180s Preparing to unpack .../098-librust-parking-lot-core-dev_0.9.10-1_s390x.deb ... 180s Unpacking librust-parking-lot-core-dev:s390x (0.9.10-1) ... 180s Selecting previously unselected package librust-once-cell-dev:s390x. 180s Preparing to unpack .../099-librust-once-cell-dev_1.20.2-1_s390x.deb ... 180s Unpacking librust-once-cell-dev:s390x (1.20.2-1) ... 180s Selecting previously unselected package librust-crunchy-dev:s390x. 180s Preparing to unpack .../100-librust-crunchy-dev_0.2.2-1_s390x.deb ... 180s Unpacking librust-crunchy-dev:s390x (0.2.2-1) ... 180s Selecting previously unselected package librust-tiny-keccak-dev:s390x. 180s Preparing to unpack .../101-librust-tiny-keccak-dev_2.0.2-1_s390x.deb ... 180s Unpacking librust-tiny-keccak-dev:s390x (2.0.2-1) ... 180s Selecting previously unselected package librust-const-random-macro-dev:s390x. 180s Preparing to unpack .../102-librust-const-random-macro-dev_0.1.16-2_s390x.deb ... 180s Unpacking librust-const-random-macro-dev:s390x (0.1.16-2) ... 180s Selecting previously unselected package librust-const-random-dev:s390x. 180s Preparing to unpack .../103-librust-const-random-dev_0.1.17-2_s390x.deb ... 180s Unpacking librust-const-random-dev:s390x (0.1.17-2) ... 180s Selecting previously unselected package librust-version-check-dev:s390x. 180s Preparing to unpack .../104-librust-version-check-dev_0.9.5-1_s390x.deb ... 180s Unpacking librust-version-check-dev:s390x (0.9.5-1) ... 180s Selecting previously unselected package librust-byteorder-dev:s390x. 180s Preparing to unpack .../105-librust-byteorder-dev_1.5.0-1_s390x.deb ... 180s Unpacking librust-byteorder-dev:s390x (1.5.0-1) ... 180s Selecting previously unselected package librust-zerocopy-derive-dev:s390x. 180s Preparing to unpack .../106-librust-zerocopy-derive-dev_0.7.32-2_s390x.deb ... 180s Unpacking librust-zerocopy-derive-dev:s390x (0.7.32-2) ... 180s Selecting previously unselected package librust-zerocopy-dev:s390x. 180s Preparing to unpack .../107-librust-zerocopy-dev_0.7.32-1_s390x.deb ... 180s Unpacking librust-zerocopy-dev:s390x (0.7.32-1) ... 180s Selecting previously unselected package librust-ahash-dev. 180s Preparing to unpack .../108-librust-ahash-dev_0.8.11-8_all.deb ... 180s Unpacking librust-ahash-dev (0.8.11-8) ... 180s Selecting previously unselected package librust-allocator-api2-dev:s390x. 180s Preparing to unpack .../109-librust-allocator-api2-dev_0.2.16-1_s390x.deb ... 180s Unpacking librust-allocator-api2-dev:s390x (0.2.16-1) ... 180s Selecting previously unselected package librust-compiler-builtins-dev:s390x. 180s Preparing to unpack .../110-librust-compiler-builtins-dev_0.1.101-1_s390x.deb ... 180s Unpacking librust-compiler-builtins-dev:s390x (0.1.101-1) ... 180s Selecting previously unselected package librust-either-dev:s390x. 180s Preparing to unpack .../111-librust-either-dev_1.13.0-1_s390x.deb ... 180s Unpacking librust-either-dev:s390x (1.13.0-1) ... 180s Selecting previously unselected package librust-crossbeam-utils-dev:s390x. 180s Preparing to unpack .../112-librust-crossbeam-utils-dev_0.8.19-1_s390x.deb ... 180s Unpacking librust-crossbeam-utils-dev:s390x (0.8.19-1) ... 180s Selecting previously unselected package librust-crossbeam-epoch-dev:s390x. 180s Preparing to unpack .../113-librust-crossbeam-epoch-dev_0.9.18-1_s390x.deb ... 180s Unpacking librust-crossbeam-epoch-dev:s390x (0.9.18-1) ... 180s Selecting previously unselected package librust-crossbeam-epoch+std-dev:s390x. 180s Preparing to unpack .../114-librust-crossbeam-epoch+std-dev_0.9.18-1_s390x.deb ... 180s Unpacking librust-crossbeam-epoch+std-dev:s390x (0.9.18-1) ... 180s Selecting previously unselected package librust-crossbeam-deque-dev:s390x. 180s Preparing to unpack .../115-librust-crossbeam-deque-dev_0.8.5-1_s390x.deb ... 180s Unpacking librust-crossbeam-deque-dev:s390x (0.8.5-1) ... 180s Selecting previously unselected package librust-rayon-core-dev:s390x. 180s Preparing to unpack .../116-librust-rayon-core-dev_1.12.1-1_s390x.deb ... 180s Unpacking librust-rayon-core-dev:s390x (1.12.1-1) ... 180s Selecting previously unselected package librust-rayon-dev:s390x. 180s Preparing to unpack .../117-librust-rayon-dev_1.10.0-1_s390x.deb ... 180s Unpacking librust-rayon-dev:s390x (1.10.0-1) ... 180s Selecting previously unselected package librust-rustc-std-workspace-core-dev:s390x. 180s Preparing to unpack .../118-librust-rustc-std-workspace-core-dev_1.0.0-1_s390x.deb ... 180s Unpacking librust-rustc-std-workspace-core-dev:s390x (1.0.0-1) ... 180s Selecting previously unselected package librust-hashbrown-dev:s390x. 180s Preparing to unpack .../119-librust-hashbrown-dev_0.14.5-5_s390x.deb ... 180s Unpacking librust-hashbrown-dev:s390x (0.14.5-5) ... 180s Selecting previously unselected package librust-indexmap-dev:s390x. 180s Preparing to unpack .../120-librust-indexmap-dev_2.2.6-1_s390x.deb ... 180s Unpacking librust-indexmap-dev:s390x (2.2.6-1) ... 180s Selecting previously unselected package librust-stable-deref-trait-dev:s390x. 180s Preparing to unpack .../121-librust-stable-deref-trait-dev_1.2.0-1_s390x.deb ... 180s Unpacking librust-stable-deref-trait-dev:s390x (1.2.0-1) ... 180s Selecting previously unselected package librust-gimli-dev:s390x. 180s Preparing to unpack .../122-librust-gimli-dev_0.28.1-2_s390x.deb ... 180s Unpacking librust-gimli-dev:s390x (0.28.1-2) ... 180s Selecting previously unselected package librust-memmap2-dev:s390x. 180s Preparing to unpack .../123-librust-memmap2-dev_0.9.3-1_s390x.deb ... 180s Unpacking librust-memmap2-dev:s390x (0.9.3-1) ... 180s Selecting previously unselected package librust-crc32fast-dev:s390x. 180s Preparing to unpack .../124-librust-crc32fast-dev_1.4.2-1_s390x.deb ... 180s Unpacking librust-crc32fast-dev:s390x (1.4.2-1) ... 180s Selecting previously unselected package pkg-config:s390x. 180s Preparing to unpack .../125-pkg-config_1.8.1-4_s390x.deb ... 180s Unpacking pkg-config:s390x (1.8.1-4) ... 180s Selecting previously unselected package librust-pkg-config-dev:s390x. 180s Preparing to unpack .../126-librust-pkg-config-dev_0.3.27-1_s390x.deb ... 180s Unpacking librust-pkg-config-dev:s390x (0.3.27-1) ... 180s Selecting previously unselected package librust-libz-sys-dev:s390x. 180s Preparing to unpack .../127-librust-libz-sys-dev_1.1.20-1_s390x.deb ... 180s Unpacking librust-libz-sys-dev:s390x (1.1.20-1) ... 180s Selecting previously unselected package librust-adler-dev:s390x. 180s Preparing to unpack .../128-librust-adler-dev_1.0.2-2_s390x.deb ... 180s Unpacking librust-adler-dev:s390x (1.0.2-2) ... 180s Selecting previously unselected package librust-miniz-oxide-dev:s390x. 180s Preparing to unpack .../129-librust-miniz-oxide-dev_0.7.1-1_s390x.deb ... 180s Unpacking librust-miniz-oxide-dev:s390x (0.7.1-1) ... 180s Selecting previously unselected package librust-flate2-dev:s390x. 180s Preparing to unpack .../130-librust-flate2-dev_1.0.34-1_s390x.deb ... 180s Unpacking librust-flate2-dev:s390x (1.0.34-1) ... 180s Selecting previously unselected package librust-sval-derive-dev:s390x. 180s Preparing to unpack .../131-librust-sval-derive-dev_2.6.1-2_s390x.deb ... 180s Unpacking librust-sval-derive-dev:s390x (2.6.1-2) ... 180s Selecting previously unselected package librust-sval-dev:s390x. 180s Preparing to unpack .../132-librust-sval-dev_2.6.1-2_s390x.deb ... 180s Unpacking librust-sval-dev:s390x (2.6.1-2) ... 180s Selecting previously unselected package librust-sval-ref-dev:s390x. 180s Preparing to unpack .../133-librust-sval-ref-dev_2.6.1-1_s390x.deb ... 180s Unpacking librust-sval-ref-dev:s390x (2.6.1-1) ... 180s Selecting previously unselected package librust-erased-serde-dev:s390x. 180s Preparing to unpack .../134-librust-erased-serde-dev_0.3.31-1_s390x.deb ... 180s Unpacking librust-erased-serde-dev:s390x (0.3.31-1) ... 180s Selecting previously unselected package librust-serde-fmt-dev. 180s Preparing to unpack .../135-librust-serde-fmt-dev_1.0.3-3_all.deb ... 180s Unpacking librust-serde-fmt-dev (1.0.3-3) ... 180s Selecting previously unselected package librust-syn-1-dev:s390x. 180s Preparing to unpack .../136-librust-syn-1-dev_1.0.109-2_s390x.deb ... 180s Unpacking librust-syn-1-dev:s390x (1.0.109-2) ... 180s Selecting previously unselected package librust-no-panic-dev:s390x. 180s Preparing to unpack .../137-librust-no-panic-dev_0.1.13-1_s390x.deb ... 180s Unpacking librust-no-panic-dev:s390x (0.1.13-1) ... 181s Selecting previously unselected package librust-itoa-dev:s390x. 181s Preparing to unpack .../138-librust-itoa-dev_1.0.9-1_s390x.deb ... 181s Unpacking librust-itoa-dev:s390x (1.0.9-1) ... 181s Selecting previously unselected package librust-ryu-dev:s390x. 181s Preparing to unpack .../139-librust-ryu-dev_1.0.15-1_s390x.deb ... 181s Unpacking librust-ryu-dev:s390x (1.0.15-1) ... 181s Selecting previously unselected package librust-serde-json-dev:s390x. 181s Preparing to unpack .../140-librust-serde-json-dev_1.0.128-1_s390x.deb ... 181s Unpacking librust-serde-json-dev:s390x (1.0.128-1) ... 181s Selecting previously unselected package librust-serde-test-dev:s390x. 181s Preparing to unpack .../141-librust-serde-test-dev_1.0.171-1_s390x.deb ... 181s Unpacking librust-serde-test-dev:s390x (1.0.171-1) ... 181s Selecting previously unselected package librust-value-bag-serde1-dev:s390x. 181s Preparing to unpack .../142-librust-value-bag-serde1-dev_1.9.0-1_s390x.deb ... 181s Unpacking librust-value-bag-serde1-dev:s390x (1.9.0-1) ... 181s Selecting previously unselected package librust-sval-buffer-dev:s390x. 181s Preparing to unpack .../143-librust-sval-buffer-dev_2.6.1-1_s390x.deb ... 181s Unpacking librust-sval-buffer-dev:s390x (2.6.1-1) ... 181s Selecting previously unselected package librust-sval-dynamic-dev:s390x. 181s Preparing to unpack .../144-librust-sval-dynamic-dev_2.6.1-1_s390x.deb ... 181s Unpacking librust-sval-dynamic-dev:s390x (2.6.1-1) ... 181s Selecting previously unselected package librust-sval-fmt-dev:s390x. 181s Preparing to unpack .../145-librust-sval-fmt-dev_2.6.1-1_s390x.deb ... 181s Unpacking librust-sval-fmt-dev:s390x (2.6.1-1) ... 181s Selecting previously unselected package librust-sval-serde-dev:s390x. 181s Preparing to unpack .../146-librust-sval-serde-dev_2.6.1-1_s390x.deb ... 181s Unpacking librust-sval-serde-dev:s390x (2.6.1-1) ... 181s Selecting previously unselected package librust-value-bag-sval2-dev:s390x. 181s Preparing to unpack .../147-librust-value-bag-sval2-dev_1.9.0-1_s390x.deb ... 181s Unpacking librust-value-bag-sval2-dev:s390x (1.9.0-1) ... 181s Selecting previously unselected package librust-value-bag-dev:s390x. 181s Preparing to unpack .../148-librust-value-bag-dev_1.9.0-1_s390x.deb ... 181s Unpacking librust-value-bag-dev:s390x (1.9.0-1) ... 181s Selecting previously unselected package librust-log-dev:s390x. 181s Preparing to unpack .../149-librust-log-dev_0.4.22-1_s390x.deb ... 181s Unpacking librust-log-dev:s390x (0.4.22-1) ... 181s Selecting previously unselected package librust-memchr-dev:s390x. 181s Preparing to unpack .../150-librust-memchr-dev_2.7.4-1_s390x.deb ... 181s Unpacking librust-memchr-dev:s390x (2.7.4-1) ... 181s Selecting previously unselected package librust-ppv-lite86-dev:s390x. 181s Preparing to unpack .../151-librust-ppv-lite86-dev_0.2.16-1_s390x.deb ... 181s Unpacking librust-ppv-lite86-dev:s390x (0.2.16-1) ... 181s Selecting previously unselected package librust-rand-core-dev:s390x. 181s Preparing to unpack .../152-librust-rand-core-dev_0.6.4-2_s390x.deb ... 181s Unpacking librust-rand-core-dev:s390x (0.6.4-2) ... 181s Selecting previously unselected package librust-rand-chacha-dev:s390x. 181s Preparing to unpack .../153-librust-rand-chacha-dev_0.3.1-2_s390x.deb ... 181s Unpacking librust-rand-chacha-dev:s390x (0.3.1-2) ... 181s Selecting previously unselected package librust-rand-core+getrandom-dev:s390x. 181s Preparing to unpack .../154-librust-rand-core+getrandom-dev_0.6.4-2_s390x.deb ... 181s Unpacking librust-rand-core+getrandom-dev:s390x (0.6.4-2) ... 181s Selecting previously unselected package librust-rand-core+serde-dev:s390x. 181s Preparing to unpack .../155-librust-rand-core+serde-dev_0.6.4-2_s390x.deb ... 181s Unpacking librust-rand-core+serde-dev:s390x (0.6.4-2) ... 181s Selecting previously unselected package librust-rand-core+std-dev:s390x. 181s Preparing to unpack .../156-librust-rand-core+std-dev_0.6.4-2_s390x.deb ... 181s Unpacking librust-rand-core+std-dev:s390x (0.6.4-2) ... 181s Selecting previously unselected package librust-rand-dev:s390x. 181s Preparing to unpack .../157-librust-rand-dev_0.8.5-1_s390x.deb ... 181s Unpacking librust-rand-dev:s390x (0.8.5-1) ... 181s Selecting previously unselected package librust-unicode-segmentation-dev:s390x. 181s Preparing to unpack .../158-librust-unicode-segmentation-dev_1.11.0-1_s390x.deb ... 181s Unpacking librust-unicode-segmentation-dev:s390x (1.11.0-1) ... 181s Selecting previously unselected package librust-convert-case-dev:s390x. 181s Preparing to unpack .../159-librust-convert-case-dev_0.6.0-2_s390x.deb ... 181s Unpacking librust-convert-case-dev:s390x (0.6.0-2) ... 181s Selecting previously unselected package librust-semver-dev:s390x. 181s Preparing to unpack .../160-librust-semver-dev_1.0.23-1_s390x.deb ... 181s Unpacking librust-semver-dev:s390x (1.0.23-1) ... 181s Selecting previously unselected package librust-rustc-version-dev:s390x. 181s Preparing to unpack .../161-librust-rustc-version-dev_0.4.0-1_s390x.deb ... 181s Unpacking librust-rustc-version-dev:s390x (0.4.0-1) ... 181s Selecting previously unselected package librust-derive-more-0.99-dev:s390x. 181s Preparing to unpack .../162-librust-derive-more-0.99-dev_0.99.18-1_s390x.deb ... 181s Unpacking librust-derive-more-0.99-dev:s390x (0.99.18-1) ... 181s Selecting previously unselected package librust-cfg-if-0.1-dev:s390x. 181s Preparing to unpack .../163-librust-cfg-if-0.1-dev_0.1.10-2_s390x.deb ... 181s Unpacking librust-cfg-if-0.1-dev:s390x (0.1.10-2) ... 181s Selecting previously unselected package librust-blobby-dev:s390x. 181s Preparing to unpack .../164-librust-blobby-dev_0.3.1-1_s390x.deb ... 181s Unpacking librust-blobby-dev:s390x (0.3.1-1) ... 181s Selecting previously unselected package librust-typenum-dev:s390x. 181s Preparing to unpack .../165-librust-typenum-dev_1.17.0-2_s390x.deb ... 181s Unpacking librust-typenum-dev:s390x (1.17.0-2) ... 181s Selecting previously unselected package librust-zeroize-derive-dev:s390x. 181s Preparing to unpack .../166-librust-zeroize-derive-dev_1.4.2-1_s390x.deb ... 181s Unpacking librust-zeroize-derive-dev:s390x (1.4.2-1) ... 181s Selecting previously unselected package librust-zeroize-dev:s390x. 181s Preparing to unpack .../167-librust-zeroize-dev_1.8.1-1_s390x.deb ... 181s Unpacking librust-zeroize-dev:s390x (1.8.1-1) ... 181s Selecting previously unselected package librust-generic-array-dev:s390x. 181s Preparing to unpack .../168-librust-generic-array-dev_0.14.7-1_s390x.deb ... 181s Unpacking librust-generic-array-dev:s390x (0.14.7-1) ... 181s Selecting previously unselected package librust-block-buffer-dev:s390x. 181s Preparing to unpack .../169-librust-block-buffer-dev_0.10.2-2_s390x.deb ... 181s Unpacking librust-block-buffer-dev:s390x (0.10.2-2) ... 181s Selecting previously unselected package librust-const-oid-dev:s390x. 181s Preparing to unpack .../170-librust-const-oid-dev_0.9.3-1_s390x.deb ... 181s Unpacking librust-const-oid-dev:s390x (0.9.3-1) ... 181s Selecting previously unselected package librust-crypto-common-dev:s390x. 181s Preparing to unpack .../171-librust-crypto-common-dev_0.1.6-1_s390x.deb ... 181s Unpacking librust-crypto-common-dev:s390x (0.1.6-1) ... 181s Selecting previously unselected package librust-subtle-dev:s390x. 181s Preparing to unpack .../172-librust-subtle-dev_2.6.1-1_s390x.deb ... 181s Unpacking librust-subtle-dev:s390x (2.6.1-1) ... 181s Selecting previously unselected package librust-digest-dev:s390x. 181s Preparing to unpack .../173-librust-digest-dev_0.10.7-2_s390x.deb ... 181s Unpacking librust-digest-dev:s390x (0.10.7-2) ... 181s Selecting previously unselected package librust-static-assertions-dev:s390x. 181s Preparing to unpack .../174-librust-static-assertions-dev_1.1.0-1_s390x.deb ... 181s Unpacking librust-static-assertions-dev:s390x (1.1.0-1) ... 181s Selecting previously unselected package librust-twox-hash-dev:s390x. 181s Preparing to unpack .../175-librust-twox-hash-dev_1.6.3-1_s390x.deb ... 181s Unpacking librust-twox-hash-dev:s390x (1.6.3-1) ... 181s Selecting previously unselected package librust-ruzstd-dev:s390x. 181s Preparing to unpack .../176-librust-ruzstd-dev_0.5.0-1_s390x.deb ... 181s Unpacking librust-ruzstd-dev:s390x (0.5.0-1) ... 181s Selecting previously unselected package librust-object-dev:s390x. 181s Preparing to unpack .../177-librust-object-dev_0.32.2-1_s390x.deb ... 181s Unpacking librust-object-dev:s390x (0.32.2-1) ... 181s Selecting previously unselected package librust-rustc-demangle-dev:s390x. 181s Preparing to unpack .../178-librust-rustc-demangle-dev_0.1.21-1_s390x.deb ... 181s Unpacking librust-rustc-demangle-dev:s390x (0.1.21-1) ... 181s Selecting previously unselected package librust-addr2line-dev:s390x. 181s Preparing to unpack .../179-librust-addr2line-dev_0.21.0-2_s390x.deb ... 181s Unpacking librust-addr2line-dev:s390x (0.21.0-2) ... 181s Selecting previously unselected package librust-aho-corasick-dev:s390x. 181s Preparing to unpack .../180-librust-aho-corasick-dev_1.1.3-1_s390x.deb ... 181s Unpacking librust-aho-corasick-dev:s390x (1.1.3-1) ... 181s Selecting previously unselected package librust-bitflags-1-dev:s390x. 181s Preparing to unpack .../181-librust-bitflags-1-dev_1.3.2-5_s390x.deb ... 181s Unpacking librust-bitflags-1-dev:s390x (1.3.2-5) ... 181s Selecting previously unselected package librust-anes-dev:s390x. 181s Preparing to unpack .../182-librust-anes-dev_0.1.6-1_s390x.deb ... 181s Unpacking librust-anes-dev:s390x (0.1.6-1) ... 181s Selecting previously unselected package librust-anstyle-dev:s390x. 181s Preparing to unpack .../183-librust-anstyle-dev_1.0.8-1_s390x.deb ... 181s Unpacking librust-anstyle-dev:s390x (1.0.8-1) ... 181s Selecting previously unselected package librust-arrayvec-dev:s390x. 181s Preparing to unpack .../184-librust-arrayvec-dev_0.7.4-2_s390x.deb ... 181s Unpacking librust-arrayvec-dev:s390x (0.7.4-2) ... 181s Selecting previously unselected package librust-utf8parse-dev:s390x. 181s Preparing to unpack .../185-librust-utf8parse-dev_0.2.1-1_s390x.deb ... 181s Unpacking librust-utf8parse-dev:s390x (0.2.1-1) ... 181s Selecting previously unselected package librust-anstyle-parse-dev:s390x. 181s Preparing to unpack .../186-librust-anstyle-parse-dev_0.2.1-1_s390x.deb ... 181s Unpacking librust-anstyle-parse-dev:s390x (0.2.1-1) ... 181s Selecting previously unselected package librust-anstyle-query-dev:s390x. 181s Preparing to unpack .../187-librust-anstyle-query-dev_1.0.0-1_s390x.deb ... 181s Unpacking librust-anstyle-query-dev:s390x (1.0.0-1) ... 181s Selecting previously unselected package librust-colorchoice-dev:s390x. 181s Preparing to unpack .../188-librust-colorchoice-dev_1.0.0-1_s390x.deb ... 181s Unpacking librust-colorchoice-dev:s390x (1.0.0-1) ... 181s Selecting previously unselected package librust-anstream-dev:s390x. 181s Preparing to unpack .../189-librust-anstream-dev_0.6.15-1_s390x.deb ... 181s Unpacking librust-anstream-dev:s390x (0.6.15-1) ... 181s Selecting previously unselected package librust-jobserver-dev:s390x. 181s Preparing to unpack .../190-librust-jobserver-dev_0.1.32-1_s390x.deb ... 181s Unpacking librust-jobserver-dev:s390x (0.1.32-1) ... 181s Selecting previously unselected package librust-shlex-dev:s390x. 181s Preparing to unpack .../191-librust-shlex-dev_1.3.0-1_s390x.deb ... 181s Unpacking librust-shlex-dev:s390x (1.3.0-1) ... 181s Selecting previously unselected package librust-cc-dev:s390x. 181s Preparing to unpack .../192-librust-cc-dev_1.1.14-1_s390x.deb ... 181s Unpacking librust-cc-dev:s390x (1.1.14-1) ... 181s Selecting previously unselected package librust-backtrace-dev:s390x. 181s Preparing to unpack .../193-librust-backtrace-dev_0.3.69-2_s390x.deb ... 181s Unpacking librust-backtrace-dev:s390x (0.3.69-2) ... 181s Selecting previously unselected package librust-anyhow-dev:s390x. 181s Preparing to unpack .../194-librust-anyhow-dev_1.0.86-1_s390x.deb ... 181s Unpacking librust-anyhow-dev:s390x (1.0.86-1) ... 181s Selecting previously unselected package librust-bytecheck-derive-dev:s390x. 181s Preparing to unpack .../195-librust-bytecheck-derive-dev_0.6.12-1_s390x.deb ... 181s Unpacking librust-bytecheck-derive-dev:s390x (0.6.12-1) ... 181s Selecting previously unselected package librust-ptr-meta-derive-dev:s390x. 181s Preparing to unpack .../196-librust-ptr-meta-derive-dev_0.1.4-1_s390x.deb ... 181s Unpacking librust-ptr-meta-derive-dev:s390x (0.1.4-1) ... 181s Selecting previously unselected package librust-ptr-meta-dev:s390x. 181s Preparing to unpack .../197-librust-ptr-meta-dev_0.1.4-1_s390x.deb ... 181s Unpacking librust-ptr-meta-dev:s390x (0.1.4-1) ... 181s Selecting previously unselected package librust-simdutf8-dev:s390x. 181s Preparing to unpack .../198-librust-simdutf8-dev_0.1.4-4_s390x.deb ... 181s Unpacking librust-simdutf8-dev:s390x (0.1.4-4) ... 181s Selecting previously unselected package librust-bytemuck-derive-dev:s390x. 181s Preparing to unpack .../199-librust-bytemuck-derive-dev_1.5.0-2_s390x.deb ... 181s Unpacking librust-bytemuck-derive-dev:s390x (1.5.0-2) ... 181s Selecting previously unselected package librust-bytemuck-dev:s390x. 181s Preparing to unpack .../200-librust-bytemuck-dev_1.14.0-1_s390x.deb ... 181s Unpacking librust-bytemuck-dev:s390x (1.14.0-1) ... 181s Selecting previously unselected package librust-atomic-dev:s390x. 181s Preparing to unpack .../201-librust-atomic-dev_0.6.0-1_s390x.deb ... 181s Unpacking librust-atomic-dev:s390x (0.6.0-1) ... 181s Selecting previously unselected package librust-md5-asm-dev:s390x. 181s Preparing to unpack .../202-librust-md5-asm-dev_0.5.0-2_s390x.deb ... 181s Unpacking librust-md5-asm-dev:s390x (0.5.0-2) ... 181s Selecting previously unselected package librust-md-5-dev:s390x. 181s Preparing to unpack .../203-librust-md-5-dev_0.10.6-1_s390x.deb ... 181s Unpacking librust-md-5-dev:s390x (0.10.6-1) ... 181s Selecting previously unselected package librust-cpufeatures-dev:s390x. 181s Preparing to unpack .../204-librust-cpufeatures-dev_0.2.11-1_s390x.deb ... 181s Unpacking librust-cpufeatures-dev:s390x (0.2.11-1) ... 181s Selecting previously unselected package librust-sha1-asm-dev:s390x. 181s Preparing to unpack .../205-librust-sha1-asm-dev_0.5.1-2_s390x.deb ... 181s Unpacking librust-sha1-asm-dev:s390x (0.5.1-2) ... 181s Selecting previously unselected package librust-sha1-dev:s390x. 181s Preparing to unpack .../206-librust-sha1-dev_0.10.6-1_s390x.deb ... 181s Unpacking librust-sha1-dev:s390x (0.10.6-1) ... 181s Selecting previously unselected package librust-slog-dev:s390x. 181s Preparing to unpack .../207-librust-slog-dev_2.7.0-1_s390x.deb ... 181s Unpacking librust-slog-dev:s390x (2.7.0-1) ... 181s Selecting previously unselected package librust-uuid-dev:s390x. 181s Preparing to unpack .../208-librust-uuid-dev_1.10.0-1_s390x.deb ... 181s Unpacking librust-uuid-dev:s390x (1.10.0-1) ... 181s Selecting previously unselected package librust-bytecheck-dev:s390x. 181s Preparing to unpack .../209-librust-bytecheck-dev_0.6.12-1_s390x.deb ... 181s Unpacking librust-bytecheck-dev:s390x (0.6.12-1) ... 181s Selecting previously unselected package librust-autocfg-dev:s390x. 181s Preparing to unpack .../210-librust-autocfg-dev_1.1.0-1_s390x.deb ... 181s Unpacking librust-autocfg-dev:s390x (1.1.0-1) ... 181s Selecting previously unselected package librust-num-traits-dev:s390x. 181s Preparing to unpack .../211-librust-num-traits-dev_0.2.19-2_s390x.deb ... 181s Unpacking librust-num-traits-dev:s390x (0.2.19-2) ... 181s Selecting previously unselected package librust-funty-dev:s390x. 181s Preparing to unpack .../212-librust-funty-dev_2.0.0-1_s390x.deb ... 181s Unpacking librust-funty-dev:s390x (2.0.0-1) ... 181s Selecting previously unselected package librust-radium-dev:s390x. 181s Preparing to unpack .../213-librust-radium-dev_1.1.0-1_s390x.deb ... 181s Unpacking librust-radium-dev:s390x (1.1.0-1) ... 181s Selecting previously unselected package librust-tap-dev:s390x. 181s Preparing to unpack .../214-librust-tap-dev_1.0.1-1_s390x.deb ... 181s Unpacking librust-tap-dev:s390x (1.0.1-1) ... 181s Selecting previously unselected package librust-traitobject-dev:s390x. 181s Preparing to unpack .../215-librust-traitobject-dev_0.1.0-1_s390x.deb ... 181s Unpacking librust-traitobject-dev:s390x (0.1.0-1) ... 181s Selecting previously unselected package librust-unsafe-any-dev:s390x. 181s Preparing to unpack .../216-librust-unsafe-any-dev_0.4.2-2_s390x.deb ... 181s Unpacking librust-unsafe-any-dev:s390x (0.4.2-2) ... 181s Selecting previously unselected package librust-typemap-dev:s390x. 181s Preparing to unpack .../217-librust-typemap-dev_0.3.3-2_s390x.deb ... 181s Unpacking librust-typemap-dev:s390x (0.3.3-2) ... 182s Selecting previously unselected package librust-wyz-dev:s390x. 182s Preparing to unpack .../218-librust-wyz-dev_0.5.1-1_s390x.deb ... 182s Unpacking librust-wyz-dev:s390x (0.5.1-1) ... 182s Selecting previously unselected package librust-bitvec-dev:s390x. 182s Preparing to unpack .../219-librust-bitvec-dev_1.0.1-1_s390x.deb ... 182s Unpacking librust-bitvec-dev:s390x (1.0.1-1) ... 182s Selecting previously unselected package librust-bytes-dev:s390x. 182s Preparing to unpack .../220-librust-bytes-dev_1.8.0-1_s390x.deb ... 182s Unpacking librust-bytes-dev:s390x (1.8.0-1) ... 182s Selecting previously unselected package librust-rend-dev:s390x. 182s Preparing to unpack .../221-librust-rend-dev_0.4.0-1_s390x.deb ... 182s Unpacking librust-rend-dev:s390x (0.4.0-1) ... 182s Selecting previously unselected package librust-rkyv-derive-dev:s390x. 182s Preparing to unpack .../222-librust-rkyv-derive-dev_0.7.44-1_s390x.deb ... 182s Unpacking librust-rkyv-derive-dev:s390x (0.7.44-1) ... 182s Selecting previously unselected package librust-seahash-dev:s390x. 182s Preparing to unpack .../223-librust-seahash-dev_4.1.0-1_s390x.deb ... 182s Unpacking librust-seahash-dev:s390x (4.1.0-1) ... 182s Selecting previously unselected package librust-smol-str-dev:s390x. 182s Preparing to unpack .../224-librust-smol-str-dev_0.2.0-1_s390x.deb ... 182s Unpacking librust-smol-str-dev:s390x (0.2.0-1) ... 182s Selecting previously unselected package librust-tinyvec-dev:s390x. 182s Preparing to unpack .../225-librust-tinyvec-dev_1.6.0-2_s390x.deb ... 182s Unpacking librust-tinyvec-dev:s390x (1.6.0-2) ... 182s Selecting previously unselected package librust-tinyvec-macros-dev:s390x. 182s Preparing to unpack .../226-librust-tinyvec-macros-dev_0.1.0-1_s390x.deb ... 182s Unpacking librust-tinyvec-macros-dev:s390x (0.1.0-1) ... 182s Selecting previously unselected package librust-tinyvec+tinyvec-macros-dev:s390x. 182s Preparing to unpack .../227-librust-tinyvec+tinyvec-macros-dev_1.6.0-2_s390x.deb ... 182s Unpacking librust-tinyvec+tinyvec-macros-dev:s390x (1.6.0-2) ... 182s Selecting previously unselected package librust-rkyv-dev:s390x. 182s Preparing to unpack .../228-librust-rkyv-dev_0.7.44-1_s390x.deb ... 182s Unpacking librust-rkyv-dev:s390x (0.7.44-1) ... 182s Selecting previously unselected package librust-num-complex-dev:s390x. 182s Preparing to unpack .../229-librust-num-complex-dev_0.4.6-2_s390x.deb ... 182s Unpacking librust-num-complex-dev:s390x (0.4.6-2) ... 182s Selecting previously unselected package librust-approx-dev:s390x. 182s Preparing to unpack .../230-librust-approx-dev_0.5.1-1_s390x.deb ... 182s Unpacking librust-approx-dev:s390x (0.5.1-1) ... 182s Selecting previously unselected package librust-array-init-dev:s390x. 182s Preparing to unpack .../231-librust-array-init-dev_2.0.1-1_s390x.deb ... 182s Unpacking librust-array-init-dev:s390x (2.0.1-1) ... 182s Selecting previously unselected package librust-async-attributes-dev. 182s Preparing to unpack .../232-librust-async-attributes-dev_1.1.2-6_all.deb ... 182s Unpacking librust-async-attributes-dev (1.1.2-6) ... 182s Selecting previously unselected package librust-concurrent-queue-dev:s390x. 182s Preparing to unpack .../233-librust-concurrent-queue-dev_2.5.0-4_s390x.deb ... 182s Unpacking librust-concurrent-queue-dev:s390x (2.5.0-4) ... 182s Selecting previously unselected package librust-parking-dev:s390x. 182s Preparing to unpack .../234-librust-parking-dev_2.2.0-1_s390x.deb ... 182s Unpacking librust-parking-dev:s390x (2.2.0-1) ... 182s Selecting previously unselected package librust-pin-project-lite-dev:s390x. 182s Preparing to unpack .../235-librust-pin-project-lite-dev_0.2.13-1_s390x.deb ... 182s Unpacking librust-pin-project-lite-dev:s390x (0.2.13-1) ... 182s Selecting previously unselected package librust-event-listener-dev. 182s Preparing to unpack .../236-librust-event-listener-dev_5.3.1-8_all.deb ... 182s Unpacking librust-event-listener-dev (5.3.1-8) ... 182s Selecting previously unselected package librust-event-listener-strategy-dev:s390x. 182s Preparing to unpack .../237-librust-event-listener-strategy-dev_0.5.2-3_s390x.deb ... 182s Unpacking librust-event-listener-strategy-dev:s390x (0.5.2-3) ... 182s Selecting previously unselected package librust-futures-core-dev:s390x. 182s Preparing to unpack .../238-librust-futures-core-dev_0.3.30-1_s390x.deb ... 182s Unpacking librust-futures-core-dev:s390x (0.3.30-1) ... 182s Selecting previously unselected package librust-async-channel-dev. 182s Preparing to unpack .../239-librust-async-channel-dev_2.3.1-8_all.deb ... 182s Unpacking librust-async-channel-dev (2.3.1-8) ... 182s Selecting previously unselected package librust-async-task-dev. 182s Preparing to unpack .../240-librust-async-task-dev_4.7.1-3_all.deb ... 182s Unpacking librust-async-task-dev (4.7.1-3) ... 182s Selecting previously unselected package librust-fastrand-dev:s390x. 182s Preparing to unpack .../241-librust-fastrand-dev_2.1.1-1_s390x.deb ... 182s Unpacking librust-fastrand-dev:s390x (2.1.1-1) ... 182s Selecting previously unselected package librust-futures-io-dev:s390x. 182s Preparing to unpack .../242-librust-futures-io-dev_0.3.31-1_s390x.deb ... 182s Unpacking librust-futures-io-dev:s390x (0.3.31-1) ... 182s Selecting previously unselected package librust-futures-lite-dev:s390x. 182s Preparing to unpack .../243-librust-futures-lite-dev_2.3.0-2_s390x.deb ... 182s Unpacking librust-futures-lite-dev:s390x (2.3.0-2) ... 182s Selecting previously unselected package librust-slab-dev:s390x. 182s Preparing to unpack .../244-librust-slab-dev_0.4.9-1_s390x.deb ... 182s Unpacking librust-slab-dev:s390x (0.4.9-1) ... 182s Selecting previously unselected package librust-async-executor-dev. 182s Preparing to unpack .../245-librust-async-executor-dev_1.13.1-1_all.deb ... 182s Unpacking librust-async-executor-dev (1.13.1-1) ... 182s Selecting previously unselected package librust-async-lock-dev. 182s Preparing to unpack .../246-librust-async-lock-dev_3.4.0-4_all.deb ... 182s Unpacking librust-async-lock-dev (3.4.0-4) ... 182s Selecting previously unselected package librust-atomic-waker-dev:s390x. 182s Preparing to unpack .../247-librust-atomic-waker-dev_1.1.2-1_s390x.deb ... 182s Unpacking librust-atomic-waker-dev:s390x (1.1.2-1) ... 182s Selecting previously unselected package librust-tracing-attributes-dev:s390x. 182s Preparing to unpack .../248-librust-tracing-attributes-dev_0.1.27-1_s390x.deb ... 182s Unpacking librust-tracing-attributes-dev:s390x (0.1.27-1) ... 182s Selecting previously unselected package librust-valuable-derive-dev:s390x. 182s Preparing to unpack .../249-librust-valuable-derive-dev_0.1.0-1_s390x.deb ... 182s Unpacking librust-valuable-derive-dev:s390x (0.1.0-1) ... 182s Selecting previously unselected package librust-valuable-dev:s390x. 182s Preparing to unpack .../250-librust-valuable-dev_0.1.0-4_s390x.deb ... 182s Unpacking librust-valuable-dev:s390x (0.1.0-4) ... 182s Selecting previously unselected package librust-tracing-core-dev:s390x. 182s Preparing to unpack .../251-librust-tracing-core-dev_0.1.32-1_s390x.deb ... 182s Unpacking librust-tracing-core-dev:s390x (0.1.32-1) ... 182s Selecting previously unselected package librust-tracing-dev:s390x. 182s Preparing to unpack .../252-librust-tracing-dev_0.1.40-1_s390x.deb ... 182s Unpacking librust-tracing-dev:s390x (0.1.40-1) ... 182s Selecting previously unselected package librust-blocking-dev. 182s Preparing to unpack .../253-librust-blocking-dev_1.6.1-5_all.deb ... 182s Unpacking librust-blocking-dev (1.6.1-5) ... 182s Selecting previously unselected package librust-async-fs-dev. 182s Preparing to unpack .../254-librust-async-fs-dev_2.1.2-4_all.deb ... 182s Unpacking librust-async-fs-dev (2.1.2-4) ... 182s Selecting previously unselected package librust-bitflags-dev:s390x. 182s Preparing to unpack .../255-librust-bitflags-dev_2.6.0-1_s390x.deb ... 182s Unpacking librust-bitflags-dev:s390x (2.6.0-1) ... 182s Selecting previously unselected package librust-compiler-builtins+core-dev:s390x. 182s Preparing to unpack .../256-librust-compiler-builtins+core-dev_0.1.101-1_s390x.deb ... 182s Unpacking librust-compiler-builtins+core-dev:s390x (0.1.101-1) ... 182s Selecting previously unselected package librust-compiler-builtins+rustc-dep-of-std-dev:s390x. 182s Preparing to unpack .../257-librust-compiler-builtins+rustc-dep-of-std-dev_0.1.101-1_s390x.deb ... 182s Unpacking librust-compiler-builtins+rustc-dep-of-std-dev:s390x (0.1.101-1) ... 182s Selecting previously unselected package librust-errno-dev:s390x. 182s Preparing to unpack .../258-librust-errno-dev_0.3.8-1_s390x.deb ... 182s Unpacking librust-errno-dev:s390x (0.3.8-1) ... 182s Selecting previously unselected package librust-linux-raw-sys-dev:s390x. 182s Preparing to unpack .../259-librust-linux-raw-sys-dev_0.4.14-1_s390x.deb ... 182s Unpacking librust-linux-raw-sys-dev:s390x (0.4.14-1) ... 182s Selecting previously unselected package librust-rustix-dev:s390x. 182s Preparing to unpack .../260-librust-rustix-dev_0.38.32-1_s390x.deb ... 182s Unpacking librust-rustix-dev:s390x (0.38.32-1) ... 182s Selecting previously unselected package librust-polling-dev:s390x. 182s Preparing to unpack .../261-librust-polling-dev_3.4.0-1_s390x.deb ... 182s Unpacking librust-polling-dev:s390x (3.4.0-1) ... 182s Selecting previously unselected package librust-async-io-dev:s390x. 182s Preparing to unpack .../262-librust-async-io-dev_2.3.3-4_s390x.deb ... 182s Unpacking librust-async-io-dev:s390x (2.3.3-4) ... 182s Selecting previously unselected package librust-mio-dev:s390x. 182s Preparing to unpack .../263-librust-mio-dev_1.0.2-2_s390x.deb ... 182s Unpacking librust-mio-dev:s390x (1.0.2-2) ... 182s Selecting previously unselected package librust-owning-ref-dev:s390x. 182s Preparing to unpack .../264-librust-owning-ref-dev_0.4.1-1_s390x.deb ... 182s Unpacking librust-owning-ref-dev:s390x (0.4.1-1) ... 182s Selecting previously unselected package librust-scopeguard-dev:s390x. 182s Preparing to unpack .../265-librust-scopeguard-dev_1.2.0-1_s390x.deb ... 182s Unpacking librust-scopeguard-dev:s390x (1.2.0-1) ... 182s Selecting previously unselected package librust-lock-api-dev:s390x. 182s Preparing to unpack .../266-librust-lock-api-dev_0.4.12-1_s390x.deb ... 182s Unpacking librust-lock-api-dev:s390x (0.4.12-1) ... 182s Selecting previously unselected package librust-parking-lot-dev:s390x. 182s Preparing to unpack .../267-librust-parking-lot-dev_0.12.3-1_s390x.deb ... 182s Unpacking librust-parking-lot-dev:s390x (0.12.3-1) ... 182s Selecting previously unselected package librust-signal-hook-registry-dev:s390x. 182s Preparing to unpack .../268-librust-signal-hook-registry-dev_1.4.0-1_s390x.deb ... 182s Unpacking librust-signal-hook-registry-dev:s390x (1.4.0-1) ... 182s Selecting previously unselected package librust-socket2-dev:s390x. 182s Preparing to unpack .../269-librust-socket2-dev_0.5.7-1_s390x.deb ... 182s Unpacking librust-socket2-dev:s390x (0.5.7-1) ... 182s Selecting previously unselected package librust-tokio-macros-dev:s390x. 182s Preparing to unpack .../270-librust-tokio-macros-dev_2.4.0-2_s390x.deb ... 182s Unpacking librust-tokio-macros-dev:s390x (2.4.0-2) ... 182s Selecting previously unselected package librust-tokio-dev:s390x. 182s Preparing to unpack .../271-librust-tokio-dev_1.39.3-3_s390x.deb ... 182s Unpacking librust-tokio-dev:s390x (1.39.3-3) ... 182s Selecting previously unselected package librust-async-global-executor-dev:s390x. 182s Preparing to unpack .../272-librust-async-global-executor-dev_2.4.1-5_s390x.deb ... 182s Unpacking librust-async-global-executor-dev:s390x (2.4.1-5) ... 182s Selecting previously unselected package librust-async-net-dev. 182s Preparing to unpack .../273-librust-async-net-dev_2.0.0-4_all.deb ... 182s Unpacking librust-async-net-dev (2.0.0-4) ... 182s Selecting previously unselected package librust-async-signal-dev:s390x. 182s Preparing to unpack .../274-librust-async-signal-dev_0.2.10-1_s390x.deb ... 182s Unpacking librust-async-signal-dev:s390x (0.2.10-1) ... 182s Selecting previously unselected package librust-async-process-dev. 182s Preparing to unpack .../275-librust-async-process-dev_2.3.0-1_all.deb ... 182s Unpacking librust-async-process-dev (2.3.0-1) ... 182s Selecting previously unselected package librust-kv-log-macro-dev. 182s Preparing to unpack .../276-librust-kv-log-macro-dev_1.0.8-4_all.deb ... 182s Unpacking librust-kv-log-macro-dev (1.0.8-4) ... 182s Selecting previously unselected package librust-pin-utils-dev:s390x. 182s Preparing to unpack .../277-librust-pin-utils-dev_0.1.0-1_s390x.deb ... 182s Unpacking librust-pin-utils-dev:s390x (0.1.0-1) ... 182s Selecting previously unselected package librust-async-std-dev. 182s Preparing to unpack .../278-librust-async-std-dev_1.13.0-1_all.deb ... 182s Unpacking librust-async-std-dev (1.13.0-1) ... 182s Selecting previously unselected package librust-base64-dev:s390x. 182s Preparing to unpack .../279-librust-base64-dev_0.21.7-1_s390x.deb ... 182s Unpacking librust-base64-dev:s390x (0.21.7-1) ... 182s Selecting previously unselected package librust-bit-vec-dev:s390x. 182s Preparing to unpack .../280-librust-bit-vec-dev_0.6.3-1_s390x.deb ... 182s Unpacking librust-bit-vec-dev:s390x (0.6.3-1) ... 183s Selecting previously unselected package librust-bit-set-dev:s390x. 183s Preparing to unpack .../281-librust-bit-set-dev_0.5.2-1_s390x.deb ... 183s Unpacking librust-bit-set-dev:s390x (0.5.2-1) ... 183s Selecting previously unselected package librust-bit-set+std-dev:s390x. 183s Preparing to unpack .../282-librust-bit-set+std-dev_0.5.2-1_s390x.deb ... 183s Unpacking librust-bit-set+std-dev:s390x (0.5.2-1) ... 183s Selecting previously unselected package librust-regex-syntax-dev:s390x. 183s Preparing to unpack .../283-librust-regex-syntax-dev_0.8.2-1_s390x.deb ... 183s Unpacking librust-regex-syntax-dev:s390x (0.8.2-1) ... 183s Selecting previously unselected package librust-regex-automata-dev:s390x. 183s Preparing to unpack .../284-librust-regex-automata-dev_0.4.7-1_s390x.deb ... 183s Unpacking librust-regex-automata-dev:s390x (0.4.7-1) ... 183s Selecting previously unselected package librust-bstr-dev:s390x. 183s Preparing to unpack .../285-librust-bstr-dev_1.7.0-2build1_s390x.deb ... 183s Unpacking librust-bstr-dev:s390x (1.7.0-2build1) ... 183s Selecting previously unselected package librust-bumpalo-dev:s390x. 183s Preparing to unpack .../286-librust-bumpalo-dev_3.16.0-1_s390x.deb ... 183s Unpacking librust-bumpalo-dev:s390x (3.16.0-1) ... 183s Selecting previously unselected package librust-cast-dev:s390x. 183s Preparing to unpack .../287-librust-cast-dev_0.3.0-1_s390x.deb ... 183s Unpacking librust-cast-dev:s390x (0.3.0-1) ... 183s Selecting previously unselected package librust-iana-time-zone-dev:s390x. 183s Preparing to unpack .../288-librust-iana-time-zone-dev_0.1.60-1_s390x.deb ... 183s Unpacking librust-iana-time-zone-dev:s390x (0.1.60-1) ... 183s Selecting previously unselected package librust-wasm-bindgen-shared-dev:s390x. 183s Preparing to unpack .../289-librust-wasm-bindgen-shared-dev_0.2.87-1_s390x.deb ... 183s Unpacking librust-wasm-bindgen-shared-dev:s390x (0.2.87-1) ... 183s Selecting previously unselected package librust-wasm-bindgen-backend-dev:s390x. 183s Preparing to unpack .../290-librust-wasm-bindgen-backend-dev_0.2.87-1_s390x.deb ... 183s Unpacking librust-wasm-bindgen-backend-dev:s390x (0.2.87-1) ... 183s Selecting previously unselected package librust-wasm-bindgen-macro-support-dev:s390x. 183s Preparing to unpack .../291-librust-wasm-bindgen-macro-support-dev_0.2.87-1_s390x.deb ... 183s Unpacking librust-wasm-bindgen-macro-support-dev:s390x (0.2.87-1) ... 183s Selecting previously unselected package librust-wasm-bindgen-macro-dev:s390x. 183s Preparing to unpack .../292-librust-wasm-bindgen-macro-dev_0.2.87-1_s390x.deb ... 183s Unpacking librust-wasm-bindgen-macro-dev:s390x (0.2.87-1) ... 183s Selecting previously unselected package librust-wasm-bindgen-dev:s390x. 183s Preparing to unpack .../293-librust-wasm-bindgen-dev_0.2.87-1_s390x.deb ... 183s Unpacking librust-wasm-bindgen-dev:s390x (0.2.87-1) ... 183s Selecting previously unselected package librust-wasm-bindgen-macro-support+spans-dev:s390x. 183s Preparing to unpack .../294-librust-wasm-bindgen-macro-support+spans-dev_0.2.87-1_s390x.deb ... 183s Unpacking librust-wasm-bindgen-macro-support+spans-dev:s390x (0.2.87-1) ... 183s Selecting previously unselected package librust-wasm-bindgen-macro+spans-dev:s390x. 183s Preparing to unpack .../295-librust-wasm-bindgen-macro+spans-dev_0.2.87-1_s390x.deb ... 183s Unpacking librust-wasm-bindgen-macro+spans-dev:s390x (0.2.87-1) ... 183s Selecting previously unselected package librust-wasm-bindgen+spans-dev:s390x. 183s Preparing to unpack .../296-librust-wasm-bindgen+spans-dev_0.2.87-1_s390x.deb ... 183s Unpacking librust-wasm-bindgen+spans-dev:s390x (0.2.87-1) ... 183s Selecting previously unselected package librust-wasm-bindgen+default-dev:s390x. 183s Preparing to unpack .../297-librust-wasm-bindgen+default-dev_0.2.87-1_s390x.deb ... 183s Unpacking librust-wasm-bindgen+default-dev:s390x (0.2.87-1) ... 183s Selecting previously unselected package librust-js-sys-dev:s390x. 183s Preparing to unpack .../298-librust-js-sys-dev_0.3.64-1_s390x.deb ... 183s Unpacking librust-js-sys-dev:s390x (0.3.64-1) ... 183s Selecting previously unselected package librust-pure-rust-locales-dev:s390x. 183s Preparing to unpack .../299-librust-pure-rust-locales-dev_0.8.1-1_s390x.deb ... 183s Unpacking librust-pure-rust-locales-dev:s390x (0.8.1-1) ... 183s Selecting previously unselected package librust-chrono-dev:s390x. 183s Preparing to unpack .../300-librust-chrono-dev_0.4.38-2_s390x.deb ... 183s Unpacking librust-chrono-dev:s390x (0.4.38-2) ... 183s Selecting previously unselected package librust-regex-dev:s390x. 183s Preparing to unpack .../301-librust-regex-dev_1.10.6-1_s390x.deb ... 183s Unpacking librust-regex-dev:s390x (1.10.6-1) ... 183s Selecting previously unselected package librust-parse-zoneinfo-dev:s390x. 183s Preparing to unpack .../302-librust-parse-zoneinfo-dev_0.3.0-1_s390x.deb ... 183s Unpacking librust-parse-zoneinfo-dev:s390x (0.3.0-1) ... 183s Selecting previously unselected package librust-siphasher-dev:s390x. 183s Preparing to unpack .../303-librust-siphasher-dev_0.3.10-1_s390x.deb ... 183s Unpacking librust-siphasher-dev:s390x (0.3.10-1) ... 183s Selecting previously unselected package librust-phf-shared-dev:s390x. 183s Preparing to unpack .../304-librust-phf-shared-dev_0.11.2-1_s390x.deb ... 183s Unpacking librust-phf-shared-dev:s390x (0.11.2-1) ... 183s Selecting previously unselected package librust-phf-dev:s390x. 183s Preparing to unpack .../305-librust-phf-dev_0.11.2-1_s390x.deb ... 183s Unpacking librust-phf-dev:s390x (0.11.2-1) ... 183s Selecting previously unselected package librust-uncased-dev:s390x. 183s Preparing to unpack .../306-librust-uncased-dev_0.9.6-2_s390x.deb ... 183s Unpacking librust-uncased-dev:s390x (0.9.6-2) ... 183s Selecting previously unselected package librust-phf-shared+uncased-dev:s390x. 183s Preparing to unpack .../307-librust-phf-shared+uncased-dev_0.11.2-1_s390x.deb ... 183s Unpacking librust-phf-shared+uncased-dev:s390x (0.11.2-1) ... 183s Selecting previously unselected package librust-phf+uncased-dev:s390x. 183s Preparing to unpack .../308-librust-phf+uncased-dev_0.11.2-1_s390x.deb ... 183s Unpacking librust-phf+uncased-dev:s390x (0.11.2-1) ... 183s Selecting previously unselected package librust-ciborium-io-dev:s390x. 183s Preparing to unpack .../309-librust-ciborium-io-dev_0.2.2-1_s390x.deb ... 183s Unpacking librust-ciborium-io-dev:s390x (0.2.2-1) ... 183s Selecting previously unselected package librust-half-dev:s390x. 183s Preparing to unpack .../310-librust-half-dev_1.8.2-4_s390x.deb ... 183s Unpacking librust-half-dev:s390x (1.8.2-4) ... 183s Selecting previously unselected package librust-ciborium-ll-dev:s390x. 183s Preparing to unpack .../311-librust-ciborium-ll-dev_0.2.2-1_s390x.deb ... 183s Unpacking librust-ciborium-ll-dev:s390x (0.2.2-1) ... 183s Selecting previously unselected package librust-ciborium-dev:s390x. 183s Preparing to unpack .../312-librust-ciborium-dev_0.2.2-2_s390x.deb ... 183s Unpacking librust-ciborium-dev:s390x (0.2.2-2) ... 183s Selecting previously unselected package librust-clap-lex-dev:s390x. 183s Preparing to unpack .../313-librust-clap-lex-dev_0.7.2-2_s390x.deb ... 183s Unpacking librust-clap-lex-dev:s390x (0.7.2-2) ... 183s Selecting previously unselected package librust-strsim-dev:s390x. 183s Preparing to unpack .../314-librust-strsim-dev_0.11.1-1_s390x.deb ... 183s Unpacking librust-strsim-dev:s390x (0.11.1-1) ... 183s Selecting previously unselected package librust-terminal-size-dev:s390x. 183s Preparing to unpack .../315-librust-terminal-size-dev_0.3.0-2_s390x.deb ... 183s Unpacking librust-terminal-size-dev:s390x (0.3.0-2) ... 183s Selecting previously unselected package librust-unicase-dev:s390x. 183s Preparing to unpack .../316-librust-unicase-dev_2.7.0-1_s390x.deb ... 183s Unpacking librust-unicase-dev:s390x (2.7.0-1) ... 183s Selecting previously unselected package librust-unicode-width-dev:s390x. 183s Preparing to unpack .../317-librust-unicode-width-dev_0.1.14-1_s390x.deb ... 183s Unpacking librust-unicode-width-dev:s390x (0.1.14-1) ... 183s Selecting previously unselected package librust-clap-builder-dev:s390x. 183s Preparing to unpack .../318-librust-clap-builder-dev_4.5.15-2_s390x.deb ... 183s Unpacking librust-clap-builder-dev:s390x (4.5.15-2) ... 183s Selecting previously unselected package librust-heck-dev:s390x. 183s Preparing to unpack .../319-librust-heck-dev_0.4.1-1_s390x.deb ... 183s Unpacking librust-heck-dev:s390x (0.4.1-1) ... 183s Selecting previously unselected package librust-clap-derive-dev:s390x. 183s Preparing to unpack .../320-librust-clap-derive-dev_4.5.13-2_s390x.deb ... 183s Unpacking librust-clap-derive-dev:s390x (4.5.13-2) ... 183s Selecting previously unselected package librust-clap-dev:s390x. 183s Preparing to unpack .../321-librust-clap-dev_4.5.16-1_s390x.deb ... 183s Unpacking librust-clap-dev:s390x (4.5.16-1) ... 183s Selecting previously unselected package librust-csv-core-dev:s390x. 183s Preparing to unpack .../322-librust-csv-core-dev_0.1.11-1_s390x.deb ... 183s Unpacking librust-csv-core-dev:s390x (0.1.11-1) ... 183s Selecting previously unselected package librust-csv-dev:s390x. 183s Preparing to unpack .../323-librust-csv-dev_1.3.0-1_s390x.deb ... 183s Unpacking librust-csv-dev:s390x (1.3.0-1) ... 183s Selecting previously unselected package librust-futures-sink-dev:s390x. 183s Preparing to unpack .../324-librust-futures-sink-dev_0.3.31-1_s390x.deb ... 183s Unpacking librust-futures-sink-dev:s390x (0.3.31-1) ... 183s Selecting previously unselected package librust-futures-channel-dev:s390x. 183s Preparing to unpack .../325-librust-futures-channel-dev_0.3.30-1_s390x.deb ... 183s Unpacking librust-futures-channel-dev:s390x (0.3.30-1) ... 183s Selecting previously unselected package librust-futures-task-dev:s390x. 183s Preparing to unpack .../326-librust-futures-task-dev_0.3.30-1_s390x.deb ... 183s Unpacking librust-futures-task-dev:s390x (0.3.30-1) ... 183s Selecting previously unselected package librust-futures-macro-dev:s390x. 183s Preparing to unpack .../327-librust-futures-macro-dev_0.3.30-1_s390x.deb ... 183s Unpacking librust-futures-macro-dev:s390x (0.3.30-1) ... 183s Selecting previously unselected package librust-futures-util-dev:s390x. 183s Preparing to unpack .../328-librust-futures-util-dev_0.3.30-2_s390x.deb ... 183s Unpacking librust-futures-util-dev:s390x (0.3.30-2) ... 183s Selecting previously unselected package librust-num-cpus-dev:s390x. 183s Preparing to unpack .../329-librust-num-cpus-dev_1.16.0-1_s390x.deb ... 183s Unpacking librust-num-cpus-dev:s390x (1.16.0-1) ... 183s Selecting previously unselected package librust-futures-executor-dev:s390x. 183s Preparing to unpack .../330-librust-futures-executor-dev_0.3.30-1_s390x.deb ... 183s Unpacking librust-futures-executor-dev:s390x (0.3.30-1) ... 183s Selecting previously unselected package librust-futures-dev:s390x. 183s Preparing to unpack .../331-librust-futures-dev_0.3.30-2_s390x.deb ... 183s Unpacking librust-futures-dev:s390x (0.3.30-2) ... 183s Selecting previously unselected package librust-is-terminal-dev:s390x. 183s Preparing to unpack .../332-librust-is-terminal-dev_0.4.13-1_s390x.deb ... 183s Unpacking librust-is-terminal-dev:s390x (0.4.13-1) ... 183s Selecting previously unselected package librust-itertools-dev:s390x. 183s Preparing to unpack .../333-librust-itertools-dev_0.10.5-1_s390x.deb ... 183s Unpacking librust-itertools-dev:s390x (0.10.5-1) ... 183s Selecting previously unselected package librust-oorandom-dev:s390x. 183s Preparing to unpack .../334-librust-oorandom-dev_11.1.3-1_s390x.deb ... 183s Unpacking librust-oorandom-dev:s390x (11.1.3-1) ... 183s Selecting previously unselected package librust-winapi-i686-pc-windows-gnu-dev:s390x. 183s Preparing to unpack .../335-librust-winapi-i686-pc-windows-gnu-dev_0.4.0-1_s390x.deb ... 183s Unpacking librust-winapi-i686-pc-windows-gnu-dev:s390x (0.4.0-1) ... 183s Selecting previously unselected package librust-winapi-x86-64-pc-windows-gnu-dev:s390x. 183s Preparing to unpack .../336-librust-winapi-x86-64-pc-windows-gnu-dev_0.4.0-1_s390x.deb ... 183s Unpacking librust-winapi-x86-64-pc-windows-gnu-dev:s390x (0.4.0-1) ... 183s Selecting previously unselected package librust-winapi-dev:s390x. 183s Preparing to unpack .../337-librust-winapi-dev_0.3.9-1_s390x.deb ... 183s Unpacking librust-winapi-dev:s390x (0.3.9-1) ... 183s Selecting previously unselected package librust-dirs-sys-next-dev:s390x. 183s Preparing to unpack .../338-librust-dirs-sys-next-dev_0.1.1-1_s390x.deb ... 183s Unpacking librust-dirs-sys-next-dev:s390x (0.1.1-1) ... 183s Selecting previously unselected package librust-dirs-next-dev:s390x. 183s Preparing to unpack .../339-librust-dirs-next-dev_2.0.0-1_s390x.deb ... 183s Unpacking librust-dirs-next-dev:s390x (2.0.0-1) ... 183s Selecting previously unselected package librust-float-ord-dev:s390x. 183s Preparing to unpack .../340-librust-float-ord-dev_0.3.2-1_s390x.deb ... 183s Unpacking librust-float-ord-dev:s390x (0.3.2-1) ... 183s Selecting previously unselected package librust-cmake-dev:s390x. 183s Preparing to unpack .../341-librust-cmake-dev_0.1.45-1_s390x.deb ... 183s Unpacking librust-cmake-dev:s390x (0.1.45-1) ... 183s Selecting previously unselected package librust-freetype-sys-dev:s390x. 183s Preparing to unpack .../342-librust-freetype-sys-dev_0.13.1-1_s390x.deb ... 183s Unpacking librust-freetype-sys-dev:s390x (0.13.1-1) ... 183s Selecting previously unselected package librust-freetype-dev:s390x. 183s Preparing to unpack .../343-librust-freetype-dev_0.7.0-4_s390x.deb ... 183s Unpacking librust-freetype-dev:s390x (0.7.0-4) ... 183s Selecting previously unselected package librust-spin-dev:s390x. 184s Preparing to unpack .../344-librust-spin-dev_0.9.8-4_s390x.deb ... 184s Unpacking librust-spin-dev:s390x (0.9.8-4) ... 184s Selecting previously unselected package librust-lazy-static-dev:s390x. 184s Preparing to unpack .../345-librust-lazy-static-dev_1.5.0-1_s390x.deb ... 184s Unpacking librust-lazy-static-dev:s390x (1.5.0-1) ... 184s Selecting previously unselected package librust-pathfinder-simd-dev:s390x. 184s Preparing to unpack .../346-librust-pathfinder-simd-dev_0.5.2-1_s390x.deb ... 184s Unpacking librust-pathfinder-simd-dev:s390x (0.5.2-1) ... 184s Selecting previously unselected package librust-pathfinder-geometry-dev:s390x. 184s Preparing to unpack .../347-librust-pathfinder-geometry-dev_0.5.1-1_s390x.deb ... 184s Unpacking librust-pathfinder-geometry-dev:s390x (0.5.1-1) ... 184s Selecting previously unselected package librust-winapi-util-dev:s390x. 184s Preparing to unpack .../348-librust-winapi-util-dev_0.1.6-1_s390x.deb ... 184s Unpacking librust-winapi-util-dev:s390x (0.1.6-1) ... 184s Selecting previously unselected package librust-same-file-dev:s390x. 184s Preparing to unpack .../349-librust-same-file-dev_1.0.6-1_s390x.deb ... 184s Unpacking librust-same-file-dev:s390x (1.0.6-1) ... 184s Selecting previously unselected package librust-walkdir-dev:s390x. 184s Preparing to unpack .../350-librust-walkdir-dev_2.5.0-1_s390x.deb ... 184s Unpacking librust-walkdir-dev:s390x (2.5.0-1) ... 184s Selecting previously unselected package librust-const-cstr-dev:s390x. 184s Preparing to unpack .../351-librust-const-cstr-dev_0.3.0-1_s390x.deb ... 184s Unpacking librust-const-cstr-dev:s390x (0.3.0-1) ... 184s Selecting previously unselected package librust-libloading-dev:s390x. 184s Preparing to unpack .../352-librust-libloading-dev_0.8.5-1_s390x.deb ... 184s Unpacking librust-libloading-dev:s390x (0.8.5-1) ... 184s Selecting previously unselected package librust-dlib-dev:s390x. 184s Preparing to unpack .../353-librust-dlib-dev_0.5.2-2_s390x.deb ... 184s Unpacking librust-dlib-dev:s390x (0.5.2-2) ... 184s Selecting previously unselected package librust-yeslogic-fontconfig-sys-dev:s390x. 184s Preparing to unpack .../354-librust-yeslogic-fontconfig-sys-dev_3.0.1-1_s390x.deb ... 184s Unpacking librust-yeslogic-fontconfig-sys-dev:s390x (3.0.1-1) ... 184s Selecting previously unselected package librust-font-kit-dev:s390x. 184s Preparing to unpack .../355-librust-font-kit-dev_0.11.0-2_s390x.deb ... 184s Unpacking librust-font-kit-dev:s390x (0.11.0-2) ... 184s Selecting previously unselected package librust-color-quant-dev:s390x. 184s Preparing to unpack .../356-librust-color-quant-dev_1.1.0-1_s390x.deb ... 184s Unpacking librust-color-quant-dev:s390x (1.1.0-1) ... 184s Selecting previously unselected package librust-weezl-dev:s390x. 184s Preparing to unpack .../357-librust-weezl-dev_0.1.5-1_s390x.deb ... 184s Unpacking librust-weezl-dev:s390x (0.1.5-1) ... 184s Selecting previously unselected package librust-gif-dev:s390x. 184s Preparing to unpack .../358-librust-gif-dev_0.11.3-1_s390x.deb ... 184s Unpacking librust-gif-dev:s390x (0.11.3-1) ... 184s Selecting previously unselected package librust-jpeg-decoder-dev:s390x. 184s Preparing to unpack .../359-librust-jpeg-decoder-dev_0.3.0-1_s390x.deb ... 184s Unpacking librust-jpeg-decoder-dev:s390x (0.3.0-1) ... 184s Selecting previously unselected package librust-num-integer-dev:s390x. 184s Preparing to unpack .../360-librust-num-integer-dev_0.1.46-1_s390x.deb ... 184s Unpacking librust-num-integer-dev:s390x (0.1.46-1) ... 184s Selecting previously unselected package librust-humantime-dev:s390x. 184s Preparing to unpack .../361-librust-humantime-dev_2.1.0-1_s390x.deb ... 184s Unpacking librust-humantime-dev:s390x (2.1.0-1) ... 184s Selecting previously unselected package librust-termcolor-dev:s390x. 184s Preparing to unpack .../362-librust-termcolor-dev_1.4.1-1_s390x.deb ... 184s Unpacking librust-termcolor-dev:s390x (1.4.1-1) ... 184s Selecting previously unselected package librust-env-logger-dev:s390x. 184s Preparing to unpack .../363-librust-env-logger-dev_0.10.2-2_s390x.deb ... 184s Unpacking librust-env-logger-dev:s390x (0.10.2-2) ... 184s Selecting previously unselected package librust-quickcheck-dev:s390x. 184s Preparing to unpack .../364-librust-quickcheck-dev_1.0.3-3_s390x.deb ... 184s Unpacking librust-quickcheck-dev:s390x (1.0.3-3) ... 184s Selecting previously unselected package librust-num-bigint-dev:s390x. 184s Preparing to unpack .../365-librust-num-bigint-dev_0.4.6-1_s390x.deb ... 184s Unpacking librust-num-bigint-dev:s390x (0.4.6-1) ... 184s Selecting previously unselected package librust-num-rational-dev:s390x. 184s Preparing to unpack .../366-librust-num-rational-dev_0.4.2-1_s390x.deb ... 184s Unpacking librust-num-rational-dev:s390x (0.4.2-1) ... 184s Selecting previously unselected package librust-png-dev:s390x. 184s Preparing to unpack .../367-librust-png-dev_0.17.7-3_s390x.deb ... 184s Unpacking librust-png-dev:s390x (0.17.7-3) ... 184s Selecting previously unselected package librust-qoi-dev:s390x. 184s Preparing to unpack .../368-librust-qoi-dev_0.4.1-2_s390x.deb ... 184s Unpacking librust-qoi-dev:s390x (0.4.1-2) ... 184s Selecting previously unselected package librust-tiff-dev:s390x. 184s Preparing to unpack .../369-librust-tiff-dev_0.9.0-1_s390x.deb ... 184s Unpacking librust-tiff-dev:s390x (0.9.0-1) ... 184s Selecting previously unselected package libsharpyuv0:s390x. 184s Preparing to unpack .../370-libsharpyuv0_1.4.0-0.1_s390x.deb ... 184s Unpacking libsharpyuv0:s390x (1.4.0-0.1) ... 184s Selecting previously unselected package libwebp7:s390x. 184s Preparing to unpack .../371-libwebp7_1.4.0-0.1_s390x.deb ... 184s Unpacking libwebp7:s390x (1.4.0-0.1) ... 184s Selecting previously unselected package libwebpdemux2:s390x. 184s Preparing to unpack .../372-libwebpdemux2_1.4.0-0.1_s390x.deb ... 184s Unpacking libwebpdemux2:s390x (1.4.0-0.1) ... 184s Selecting previously unselected package libwebpmux3:s390x. 184s Preparing to unpack .../373-libwebpmux3_1.4.0-0.1_s390x.deb ... 184s Unpacking libwebpmux3:s390x (1.4.0-0.1) ... 184s Selecting previously unselected package libwebpdecoder3:s390x. 184s Preparing to unpack .../374-libwebpdecoder3_1.4.0-0.1_s390x.deb ... 184s Unpacking libwebpdecoder3:s390x (1.4.0-0.1) ... 184s Selecting previously unselected package libsharpyuv-dev:s390x. 184s Preparing to unpack .../375-libsharpyuv-dev_1.4.0-0.1_s390x.deb ... 184s Unpacking libsharpyuv-dev:s390x (1.4.0-0.1) ... 184s Selecting previously unselected package libwebp-dev:s390x. 184s Preparing to unpack .../376-libwebp-dev_1.4.0-0.1_s390x.deb ... 184s Unpacking libwebp-dev:s390x (1.4.0-0.1) ... 184s Selecting previously unselected package librust-libwebp-sys-dev:s390x. 184s Preparing to unpack .../377-librust-libwebp-sys-dev_0.9.5-1build1_s390x.deb ... 184s Unpacking librust-libwebp-sys-dev:s390x (0.9.5-1build1) ... 184s Selecting previously unselected package librust-webp-dev:s390x. 184s Preparing to unpack .../378-librust-webp-dev_0.2.6-1_s390x.deb ... 184s Unpacking librust-webp-dev:s390x (0.2.6-1) ... 184s Selecting previously unselected package librust-image-dev:s390x. 184s Preparing to unpack .../379-librust-image-dev_0.24.7-2_s390x.deb ... 184s Unpacking librust-image-dev:s390x (0.24.7-2) ... 184s Selecting previously unselected package librust-plotters-backend-dev:s390x. 184s Preparing to unpack .../380-librust-plotters-backend-dev_0.3.7-1_s390x.deb ... 184s Unpacking librust-plotters-backend-dev:s390x (0.3.7-1) ... 184s Selecting previously unselected package librust-plotters-bitmap-dev:s390x. 184s Preparing to unpack .../381-librust-plotters-bitmap-dev_0.3.3-3_s390x.deb ... 184s Unpacking librust-plotters-bitmap-dev:s390x (0.3.3-3) ... 184s Selecting previously unselected package librust-plotters-svg-dev:s390x. 184s Preparing to unpack .../382-librust-plotters-svg-dev_0.3.5-1_s390x.deb ... 184s Unpacking librust-plotters-svg-dev:s390x (0.3.5-1) ... 184s Selecting previously unselected package librust-web-sys-dev:s390x. 184s Preparing to unpack .../383-librust-web-sys-dev_0.3.64-2_s390x.deb ... 184s Unpacking librust-web-sys-dev:s390x (0.3.64-2) ... 184s Selecting previously unselected package librust-plotters-dev:s390x. 184s Preparing to unpack .../384-librust-plotters-dev_0.3.5-4_s390x.deb ... 184s Unpacking librust-plotters-dev:s390x (0.3.5-4) ... 184s Selecting previously unselected package librust-smol-dev. 184s Preparing to unpack .../385-librust-smol-dev_2.0.2-1_all.deb ... 184s Unpacking librust-smol-dev (2.0.2-1) ... 184s Selecting previously unselected package librust-tinytemplate-dev:s390x. 184s Preparing to unpack .../386-librust-tinytemplate-dev_1.2.1-1_s390x.deb ... 184s Unpacking librust-tinytemplate-dev:s390x (1.2.1-1) ... 184s Selecting previously unselected package librust-criterion-dev. 184s Preparing to unpack .../387-librust-criterion-dev_0.5.1-6_all.deb ... 184s Unpacking librust-criterion-dev (0.5.1-6) ... 184s Selecting previously unselected package librust-phf-generator-dev:s390x. 184s Preparing to unpack .../388-librust-phf-generator-dev_0.11.2-2_s390x.deb ... 184s Unpacking librust-phf-generator-dev:s390x (0.11.2-2) ... 184s Selecting previously unselected package librust-phf-codegen-dev:s390x. 184s Preparing to unpack .../389-librust-phf-codegen-dev_0.11.2-1_s390x.deb ... 184s Unpacking librust-phf-codegen-dev:s390x (0.11.2-1) ... 184s Selecting previously unselected package librust-chrono-tz-build-dev:s390x. 184s Preparing to unpack .../390-librust-chrono-tz-build-dev_0.2.1-1_s390x.deb ... 184s Unpacking librust-chrono-tz-build-dev:s390x (0.2.1-1) ... 184s Selecting previously unselected package librust-chrono-tz-dev:s390x. 184s Preparing to unpack .../391-librust-chrono-tz-dev_0.8.6-2_s390x.deb ... 184s Unpacking librust-chrono-tz-dev:s390x (0.8.6-2) ... 184s Selecting previously unselected package librust-ctor-dev:s390x. 184s Preparing to unpack .../392-librust-ctor-dev_0.1.26-1_s390x.deb ... 184s Unpacking librust-ctor-dev:s390x (0.1.26-1) ... 184s Selecting previously unselected package librust-powerfmt-macros-dev:s390x. 184s Preparing to unpack .../393-librust-powerfmt-macros-dev_0.1.0-1_s390x.deb ... 184s Unpacking librust-powerfmt-macros-dev:s390x (0.1.0-1) ... 184s Selecting previously unselected package librust-powerfmt-dev:s390x. 184s Preparing to unpack .../394-librust-powerfmt-dev_0.2.0-1_s390x.deb ... 184s Unpacking librust-powerfmt-dev:s390x (0.2.0-1) ... 184s Selecting previously unselected package librust-deranged-dev:s390x. 184s Preparing to unpack .../395-librust-deranged-dev_0.3.11-1_s390x.deb ... 184s Unpacking librust-deranged-dev:s390x (0.3.11-1) ... 184s Selecting previously unselected package librust-eui48-dev:s390x. 184s Preparing to unpack .../396-librust-eui48-dev_1.1.0-2_s390x.deb ... 184s Unpacking librust-eui48-dev:s390x (1.1.0-2) ... 184s Selecting previously unselected package librust-indenter-dev:s390x. 184s Preparing to unpack .../397-librust-indenter-dev_0.3.3-1_s390x.deb ... 184s Unpacking librust-indenter-dev:s390x (0.3.3-1) ... 184s Selecting previously unselected package librust-eyre-dev:s390x. 184s Preparing to unpack .../398-librust-eyre-dev_0.6.12-1_s390x.deb ... 184s Unpacking librust-eyre-dev:s390x (0.6.12-1) ... 184s Selecting previously unselected package librust-eyre+default-dev:s390x. 184s Preparing to unpack .../399-librust-eyre+default-dev_0.6.12-1_s390x.deb ... 184s Unpacking librust-eyre+default-dev:s390x (0.6.12-1) ... 184s Selecting previously unselected package librust-fancy-regex-dev:s390x. 185s Preparing to unpack .../400-librust-fancy-regex-dev_0.11.0-2_s390x.deb ... 185s Unpacking librust-fancy-regex-dev:s390x (0.11.0-2) ... 185s Selecting previously unselected package librust-fnv-dev:s390x. 185s Preparing to unpack .../401-librust-fnv-dev_1.0.7-1_s390x.deb ... 185s Unpacking librust-fnv-dev:s390x (1.0.7-1) ... 185s Selecting previously unselected package librust-geo-types-dev:s390x. 185s Preparing to unpack .../402-librust-geo-types-dev_0.7.11-2_s390x.deb ... 185s Unpacking librust-geo-types-dev:s390x (0.7.11-2) ... 185s Selecting previously unselected package librust-ghost-dev:s390x. 185s Preparing to unpack .../403-librust-ghost-dev_0.1.5-1_s390x.deb ... 185s Unpacking librust-ghost-dev:s390x (0.1.5-1) ... 185s Selecting previously unselected package librust-hmac-dev:s390x. 185s Preparing to unpack .../404-librust-hmac-dev_0.12.1-1_s390x.deb ... 185s Unpacking librust-hmac-dev:s390x (0.12.1-1) ... 185s Selecting previously unselected package librust-indoc-dev:s390x. 185s Preparing to unpack .../405-librust-indoc-dev_2.0.5-1_s390x.deb ... 185s Unpacking librust-indoc-dev:s390x (2.0.5-1) ... 185s Selecting previously unselected package librust-inventory-dev:s390x. 185s Preparing to unpack .../406-librust-inventory-dev_0.3.2-1_s390x.deb ... 185s Unpacking librust-inventory-dev:s390x (0.3.2-1) ... 185s Selecting previously unselected package librust-memoffset-dev:s390x. 185s Preparing to unpack .../407-librust-memoffset-dev_0.8.0-1_s390x.deb ... 185s Unpacking librust-memoffset-dev:s390x (0.8.0-1) ... 185s Selecting previously unselected package librust-num-conv-dev:s390x. 185s Preparing to unpack .../408-librust-num-conv-dev_0.1.0-1_s390x.deb ... 185s Unpacking librust-num-conv-dev:s390x (0.1.0-1) ... 185s Selecting previously unselected package librust-num-threads-dev:s390x. 185s Preparing to unpack .../409-librust-num-threads-dev_0.1.7-1_s390x.deb ... 185s Unpacking librust-num-threads-dev:s390x (0.1.7-1) ... 185s Selecting previously unselected package librust-postgres-derive-dev:s390x. 185s Preparing to unpack .../410-librust-postgres-derive-dev_0.4.5-1_s390x.deb ... 185s Unpacking librust-postgres-derive-dev:s390x (0.4.5-1) ... 185s Selecting previously unselected package librust-sha2-asm-dev:s390x. 185s Preparing to unpack .../411-librust-sha2-asm-dev_0.6.2-2_s390x.deb ... 185s Unpacking librust-sha2-asm-dev:s390x (0.6.2-2) ... 185s Selecting previously unselected package librust-sha2-dev:s390x. 185s Preparing to unpack .../412-librust-sha2-dev_0.10.8-1_s390x.deb ... 185s Unpacking librust-sha2-dev:s390x (0.10.8-1) ... 185s Selecting previously unselected package librust-unicode-bidi-dev:s390x. 185s Preparing to unpack .../413-librust-unicode-bidi-dev_0.3.13-1_s390x.deb ... 185s Unpacking librust-unicode-bidi-dev:s390x (0.3.13-1) ... 185s Selecting previously unselected package librust-unicode-normalization-dev:s390x. 185s Preparing to unpack .../414-librust-unicode-normalization-dev_0.1.22-1_s390x.deb ... 185s Unpacking librust-unicode-normalization-dev:s390x (0.1.22-1) ... 185s Selecting previously unselected package librust-stringprep-dev:s390x. 185s Preparing to unpack .../415-librust-stringprep-dev_0.1.2-1_s390x.deb ... 185s Unpacking librust-stringprep-dev:s390x (0.1.2-1) ... 185s Selecting previously unselected package librust-postgres-protocol-dev:s390x. 185s Preparing to unpack .../416-librust-postgres-protocol-dev_0.6.6-2_s390x.deb ... 185s Unpacking librust-postgres-protocol-dev:s390x (0.6.6-2) ... 185s Selecting previously unselected package librust-time-core-dev:s390x. 185s Preparing to unpack .../417-librust-time-core-dev_0.1.2-1_s390x.deb ... 185s Unpacking librust-time-core-dev:s390x (0.1.2-1) ... 185s Selecting previously unselected package librust-time-macros-dev:s390x. 185s Preparing to unpack .../418-librust-time-macros-dev_0.2.16-1_s390x.deb ... 185s Unpacking librust-time-macros-dev:s390x (0.2.16-1) ... 185s Selecting previously unselected package librust-time-dev:s390x. 185s Preparing to unpack .../419-librust-time-dev_0.3.36-2_s390x.deb ... 185s Unpacking librust-time-dev:s390x (0.3.36-2) ... 185s Selecting previously unselected package librust-postgres-types-dev:s390x. 185s Preparing to unpack .../420-librust-postgres-types-dev_0.2.6-2_s390x.deb ... 185s Unpacking librust-postgres-types-dev:s390x (0.2.6-2) ... 185s Selecting previously unselected package librust-rand-xorshift-dev:s390x. 185s Preparing to unpack .../421-librust-rand-xorshift-dev_0.3.0-2_s390x.deb ... 185s Unpacking librust-rand-xorshift-dev:s390x (0.3.0-2) ... 185s Selecting previously unselected package librust-quick-error-dev:s390x. 185s Preparing to unpack .../422-librust-quick-error-dev_2.0.1-1_s390x.deb ... 185s Unpacking librust-quick-error-dev:s390x (2.0.1-1) ... 185s Selecting previously unselected package librust-tempfile-dev:s390x. 185s Preparing to unpack .../423-librust-tempfile-dev_3.10.1-1_s390x.deb ... 185s Unpacking librust-tempfile-dev:s390x (3.10.1-1) ... 185s Selecting previously unselected package librust-rusty-fork-dev:s390x. 185s Preparing to unpack .../424-librust-rusty-fork-dev_0.3.0-1_s390x.deb ... 185s Unpacking librust-rusty-fork-dev:s390x (0.3.0-1) ... 185s Selecting previously unselected package librust-wait-timeout-dev:s390x. 185s Preparing to unpack .../425-librust-wait-timeout-dev_0.2.0-1_s390x.deb ... 185s Unpacking librust-wait-timeout-dev:s390x (0.2.0-1) ... 185s Selecting previously unselected package librust-rusty-fork+wait-timeout-dev:s390x. 185s Preparing to unpack .../426-librust-rusty-fork+wait-timeout-dev_0.3.0-1_s390x.deb ... 185s Unpacking librust-rusty-fork+wait-timeout-dev:s390x (0.3.0-1) ... 185s Selecting previously unselected package librust-unarray-dev:s390x. 185s Preparing to unpack .../427-librust-unarray-dev_0.1.4-1_s390x.deb ... 185s Unpacking librust-unarray-dev:s390x (0.1.4-1) ... 185s Selecting previously unselected package librust-proptest-dev:s390x. 185s Preparing to unpack .../428-librust-proptest-dev_1.5.0-2_s390x.deb ... 185s Unpacking librust-proptest-dev:s390x (1.5.0-2) ... 185s Selecting previously unselected package llvm-19-runtime. 185s Preparing to unpack .../429-llvm-19-runtime_1%3a19.1.2-1ubuntu1_s390x.deb ... 185s Unpacking llvm-19-runtime (1:19.1.2-1ubuntu1) ... 185s Selecting previously unselected package llvm-runtime:s390x. 185s Preparing to unpack .../430-llvm-runtime_1%3a19.0-60~exp1_s390x.deb ... 185s Unpacking llvm-runtime:s390x (1:19.0-60~exp1) ... 185s Selecting previously unselected package llvm-19-linker-tools. 185s Preparing to unpack .../431-llvm-19-linker-tools_1%3a19.1.2-1ubuntu1_s390x.deb ... 185s Unpacking llvm-19-linker-tools (1:19.1.2-1ubuntu1) ... 185s Selecting previously unselected package libpfm4:s390x. 185s Preparing to unpack .../432-libpfm4_4.13.0+git83-g91970fe-1_s390x.deb ... 185s Unpacking libpfm4:s390x (4.13.0+git83-g91970fe-1) ... 185s Selecting previously unselected package llvm-19. 185s Preparing to unpack .../433-llvm-19_1%3a19.1.2-1ubuntu1_s390x.deb ... 185s Unpacking llvm-19 (1:19.1.2-1ubuntu1) ... 185s Selecting previously unselected package llvm. 185s Preparing to unpack .../434-llvm_1%3a19.0-60~exp1_s390x.deb ... 185s Unpacking llvm (1:19.0-60~exp1) ... 185s Selecting previously unselected package binutils-mingw-w64-x86-64. 185s Preparing to unpack .../435-binutils-mingw-w64-x86-64_2.43.1-4ubuntu1+12_s390x.deb ... 185s Unpacking binutils-mingw-w64-x86-64 (2.43.1-4ubuntu1+12) ... 186s Selecting previously unselected package binutils-mingw-w64-i686. 186s Preparing to unpack .../436-binutils-mingw-w64-i686_2.43.1-4ubuntu1+12_s390x.deb ... 186s Unpacking binutils-mingw-w64-i686 (2.43.1-4ubuntu1+12) ... 186s Selecting previously unselected package librust-python3-dll-a-dev:s390x. 186s Preparing to unpack .../437-librust-python3-dll-a-dev_0.2.10-1_s390x.deb ... 186s Unpacking librust-python3-dll-a-dev:s390x (0.2.10-1) ... 186s Selecting previously unselected package librust-target-lexicon-dev:s390x. 186s Preparing to unpack .../438-librust-target-lexicon-dev_0.12.14-1_s390x.deb ... 186s Unpacking librust-target-lexicon-dev:s390x (0.12.14-1) ... 186s Selecting previously unselected package librust-pyo3-build-config-dev:s390x. 186s Preparing to unpack .../439-librust-pyo3-build-config-dev_0.22.6-1_s390x.deb ... 186s Unpacking librust-pyo3-build-config-dev:s390x (0.22.6-1) ... 186s Selecting previously unselected package python3.12-dev. 186s Preparing to unpack .../440-python3.12-dev_3.12.7-3_s390x.deb ... 186s Unpacking python3.12-dev (3.12.7-3) ... 186s Selecting previously unselected package librust-pyo3-ffi-dev:s390x. 186s Preparing to unpack .../441-librust-pyo3-ffi-dev_0.22.6-1build1_s390x.deb ... 186s Unpacking librust-pyo3-ffi-dev:s390x (0.22.6-1build1) ... 186s Selecting previously unselected package librust-pyo3-macros-backend-dev:s390x. 186s Preparing to unpack .../442-librust-pyo3-macros-backend-dev_0.22.6-1_s390x.deb ... 186s Unpacking librust-pyo3-macros-backend-dev:s390x (0.22.6-1) ... 186s Selecting previously unselected package librust-pyo3-macros-dev:s390x. 186s Preparing to unpack .../443-librust-pyo3-macros-dev_0.22.6-1_s390x.deb ... 186s Unpacking librust-pyo3-macros-dev:s390x (0.22.6-1) ... 186s Selecting previously unselected package librust-rust-decimal-dev:s390x. 186s Preparing to unpack .../444-librust-rust-decimal-dev_1.36.0-1_s390x.deb ... 186s Unpacking librust-rust-decimal-dev:s390x (1.36.0-1) ... 186s Selecting previously unselected package librust-unindent-dev:s390x. 186s Preparing to unpack .../445-librust-unindent-dev_0.2.3-1_s390x.deb ... 186s Unpacking librust-unindent-dev:s390x (0.2.3-1) ... 186s Selecting previously unselected package librust-pyo3-dev:s390x. 186s Preparing to unpack .../446-librust-pyo3-dev_0.22.6-1_s390x.deb ... 186s Unpacking librust-pyo3-dev:s390x (0.22.6-1) ... 186s Selecting previously unselected package librust-rustc-hash-dev:s390x. 186s Preparing to unpack .../447-librust-rustc-hash-dev_1.1.0-1_s390x.deb ... 186s Unpacking librust-rustc-hash-dev:s390x (1.1.0-1) ... 186s Selecting previously unselected package pybuild-plugin-autopkgtest. 186s Preparing to unpack .../448-pybuild-plugin-autopkgtest_6.20241024_all.deb ... 186s Unpacking pybuild-plugin-autopkgtest (6.20241024) ... 186s Selecting previously unselected package python3-packaging. 186s Preparing to unpack .../449-python3-packaging_24.2-1_all.deb ... 186s Unpacking python3-packaging (24.2-1) ... 186s Selecting previously unselected package python3-pyproject-hooks. 186s Preparing to unpack .../450-python3-pyproject-hooks_1.2.0-1_all.deb ... 186s Unpacking python3-pyproject-hooks (1.2.0-1) ... 186s Selecting previously unselected package python3-toml. 186s Preparing to unpack .../451-python3-toml_0.10.2-1_all.deb ... 186s Unpacking python3-toml (0.10.2-1) ... 186s Selecting previously unselected package python3-wheel. 186s Preparing to unpack .../452-python3-wheel_0.45.0-1_all.deb ... 186s Unpacking python3-wheel (0.45.0-1) ... 186s Selecting previously unselected package python3-build. 186s Preparing to unpack .../453-python3-build_1.2.2-1_all.deb ... 186s Unpacking python3-build (1.2.2-1) ... 186s Selecting previously unselected package python3-installer. 186s Preparing to unpack .../454-python3-installer_0.7.0+dfsg1-3_all.deb ... 186s Unpacking python3-installer (0.7.0+dfsg1-3) ... 186s Selecting previously unselected package pybuild-plugin-pyproject. 186s Preparing to unpack .../455-pybuild-plugin-pyproject_6.20241024_all.deb ... 186s Unpacking pybuild-plugin-pyproject (6.20241024) ... 186s Selecting previously unselected package python3.13. 186s Preparing to unpack .../456-python3.13_3.13.0-2_s390x.deb ... 186s Unpacking python3.13 (3.13.0-2) ... 186s Selecting previously unselected package python3-all. 186s Preparing to unpack .../457-python3-all_3.12.7-1_s390x.deb ... 186s Unpacking python3-all (3.12.7-1) ... 186s Selecting previously unselected package python3-dateutil. 186s Preparing to unpack .../458-python3-dateutil_2.9.0-3_all.deb ... 186s Unpacking python3-dateutil (2.9.0-3) ... 186s Selecting previously unselected package python3-sortedcontainers. 186s Preparing to unpack .../459-python3-sortedcontainers_2.4.0-2_all.deb ... 186s Unpacking python3-sortedcontainers (2.4.0-2) ... 186s Selecting previously unselected package python3-hypothesis. 186s Preparing to unpack .../460-python3-hypothesis_6.119.3-1_all.deb ... 186s Unpacking python3-hypothesis (6.119.3-1) ... 186s Selecting previously unselected package python3-iniconfig. 186s Preparing to unpack .../461-python3-iniconfig_1.1.1-2_all.deb ... 186s Unpacking python3-iniconfig (1.1.1-2) ... 186s Selecting previously unselected package python3-pluggy. 186s Preparing to unpack .../462-python3-pluggy_1.5.0-1_all.deb ... 186s Unpacking python3-pluggy (1.5.0-1) ... 186s Selecting previously unselected package python3-pytest. 186s Preparing to unpack .../463-python3-pytest_8.3.3-1_all.deb ... 186s Unpacking python3-pytest (8.3.3-1) ... 186s Selecting previously unselected package python3-regex. 186s Preparing to unpack .../464-python3-regex_0.1.20240724-1build1_s390x.deb ... 186s Unpacking python3-regex (0.1.20240724-1build1) ... 186s Selecting previously unselected package python3-semantic-version. 186s Preparing to unpack .../465-python3-semantic-version_2.10.0-2_all.deb ... 186s Unpacking python3-semantic-version (2.10.0-2) ... 186s Selecting previously unselected package rustc. 186s Preparing to unpack .../466-rustc_1.80.1ubuntu2_s390x.deb ... 186s Unpacking rustc (1.80.1ubuntu2) ... 186s Selecting previously unselected package cargo. 186s Preparing to unpack .../467-cargo_1.80.1ubuntu2_s390x.deb ... 186s Unpacking cargo (1.80.1ubuntu2) ... 186s Selecting previously unselected package python3-setuptools-rust. 186s Preparing to unpack .../468-python3-setuptools-rust_1.9.0+dfsg-2_all.deb ... 186s Unpacking python3-setuptools-rust (1.9.0+dfsg-2) ... 186s Selecting previously unselected package python3-tiktoken. 186s Preparing to unpack .../469-python3-tiktoken_0.8.0-1build1_s390x.deb ... 186s Unpacking python3-tiktoken (0.8.0-1build1) ... 186s Selecting previously unselected package autopkgtest-satdep. 186s Preparing to unpack .../470-1-autopkgtest-satdep.deb ... 186s Unpacking autopkgtest-satdep (0) ... 186s Setting up dh-python (6.20241024) ... 186s Setting up librust-ciborium-io-dev:s390x (0.2.2-1) ... 186s Setting up librust-crossbeam-utils-dev:s390x (0.8.19-1) ... 186s Setting up librust-parking-dev:s390x (2.2.0-1) ... 186s Setting up librust-ppv-lite86-dev:s390x (0.2.16-1) ... 186s Setting up python3-iniconfig (1.1.1-2) ... 187s Setting up libsharpyuv0:s390x (1.4.0-0.1) ... 187s Setting up librust-pin-utils-dev:s390x (0.1.0-1) ... 187s Setting up librust-fnv-dev:s390x (1.0.7-1) ... 187s Setting up librust-libc-dev:s390x (0.2.155-1) ... 187s Setting up librust-unindent-dev:s390x (0.2.3-1) ... 187s Setting up librust-quick-error-dev:s390x (2.0.1-1) ... 187s Setting up librust-is-terminal-dev:s390x (0.4.13-1) ... 187s Setting up librust-traitobject-dev:s390x (0.1.0-1) ... 187s Setting up librust-either-dev:s390x (1.13.0-1) ... 187s Setting up binutils-mingw-w64-x86-64 (2.43.1-4ubuntu1+12) ... 187s Setting up librust-adler-dev:s390x (1.0.2-2) ... 187s Setting up librust-version-check-dev:s390x (0.9.5-1) ... 187s Setting up librust-base64-dev:s390x (0.21.7-1) ... 187s Setting up librust-indoc-dev:s390x (2.0.5-1) ... 187s Setting up librust-anstyle-dev:s390x (1.0.8-1) ... 187s Setting up librust-winapi-i686-pc-windows-gnu-dev:s390x (0.4.0-1) ... 187s Setting up librust-futures-task-dev:s390x (0.3.30-1) ... 187s Setting up librust-rustc-hash-dev:s390x (1.1.0-1) ... 187s Setting up librust-wasm-bindgen-shared-dev:s390x (0.2.87-1) ... 187s Setting up libarchive-zip-perl (1.68-1) ... 187s Setting up librust-colorchoice-dev:s390x (1.0.0-1) ... 187s Setting up librust-fastrand-dev:s390x (2.1.1-1) ... 187s Setting up librust-socket2-dev:s390x (0.5.7-1) ... 187s Setting up libdebhelper-perl (13.20ubuntu1) ... 187s Setting up librust-unsafe-any-dev:s390x (0.4.2-2) ... 187s Setting up librust-tinyvec-macros-dev:s390x (0.1.0-1) ... 187s Setting up librust-num-cpus-dev:s390x (1.16.0-1) ... 187s Setting up librust-libm-dev:s390x (0.2.8-1) ... 187s Setting up librust-strsim-dev:s390x (0.11.1-1) ... 187s Setting up libwebpdecoder3:s390x (1.4.0-0.1) ... 187s Setting up m4 (1.4.19-4build1) ... 187s Setting up librust-rustc-demangle-dev:s390x (0.1.21-1) ... 187s Setting up librust-cpufeatures-dev:s390x (0.2.11-1) ... 187s Setting up librust-const-cstr-dev:s390x (0.3.0-1) ... 187s Setting up librust-fallible-iterator-dev:s390x (0.3.0-2) ... 187s Setting up librust-ryu-dev:s390x (1.0.15-1) ... 187s Setting up python3-sortedcontainers (2.4.0-2) ... 187s Setting up librust-humantime-dev:s390x (2.1.0-1) ... 187s Setting up librust-anstyle-query-dev:s390x (1.0.0-1) ... 187s Setting up librust-cast-dev:s390x (0.3.0-1) ... 187s Setting up libgomp1:s390x (14.2.0-8ubuntu1) ... 187s Setting up librust-subtle-dev:s390x (2.6.1-1) ... 187s Setting up librust-simdutf8-dev:s390x (0.1.4-4) ... 187s Setting up librust-atomic-waker-dev:s390x (1.1.2-1) ... 187s Setting up librust-miniz-oxide-dev:s390x (0.7.1-1) ... 187s Setting up librust-pin-project-lite-dev:s390x (0.2.13-1) ... 187s Setting up python3-wheel (0.45.0-1) ... 187s Setting up librust-unicode-segmentation-dev:s390x (1.11.0-1) ... 187s Setting up librust-typemap-dev:s390x (0.3.3-2) ... 187s Setting up libpython3.13-minimal:s390x (3.13.0-2) ... 187s Setting up librust-compiler-builtins-dev:s390x (0.1.101-1) ... 187s Setting up librust-weezl-dev:s390x (0.1.5-1) ... 187s Setting up librust-utf8parse-dev:s390x (0.2.1-1) ... 187s Setting up librust-signal-hook-registry-dev:s390x (1.4.0-1) ... 187s Setting up librust-crossbeam-epoch-dev:s390x (0.9.18-1) ... 187s Setting up autotools-dev (20220109.1) ... 187s Setting up librust-tap-dev:s390x (1.0.1-1) ... 187s Setting up librust-errno-dev:s390x (0.3.8-1) ... 187s Setting up python3-packaging (24.2-1) ... 187s Setting up librust-array-init-dev:s390x (2.0.1-1) ... 187s Setting up libpkgconf3:s390x (1.8.1-4) ... 187s Setting up libpfm4:s390x (4.13.0+git83-g91970fe-1) ... 187s Setting up librust-oorandom-dev:s390x (11.1.3-1) ... 187s Setting up libexpat1-dev:s390x (2.6.4-1) ... 187s Setting up python3-pyproject-hooks (1.2.0-1) ... 187s Setting up libfreetype6:s390x (2.13.3+dfsg-1) ... 187s Setting up librust-rustc-std-workspace-core-dev:s390x (1.0.0-1) ... 187s Setting up librust-funty-dev:s390x (2.0.0-1) ... 187s Setting up librust-futures-io-dev:s390x (0.3.31-1) ... 187s Setting up librust-typenum-dev:s390x (1.17.0-2) ... 187s Setting up uuid-dev:s390x (2.40.2-1ubuntu1) ... 187s Setting up librust-core-maths-dev:s390x (0.1.0-2) ... 187s Setting up librust-stable-deref-trait-dev:s390x (1.2.0-1) ... 187s Setting up librust-critical-section-dev:s390x (1.1.3-1) ... 187s Setting up librust-scopeguard-dev:s390x (1.2.0-1) ... 187s Setting up librust-iana-time-zone-dev:s390x (0.1.60-1) ... 187s Setting up fonts-dejavu-mono (2.37-8) ... 187s Setting up libmpc3:s390x (1.3.1-1build2) ... 187s Setting up librust-rand-core-dev:s390x (0.6.4-2) ... 187s Setting up python3-semantic-version (2.10.0-2) ... 188s Setting up librust-jobserver-dev:s390x (0.1.32-1) ... 188s Setting up autopoint (0.22.5-2) ... 188s Setting up libjsoncpp25:s390x (1.9.5-6build1) ... 188s Setting up fonts-dejavu-core (2.37-8) ... 188s Setting up librust-seahash-dev:s390x (4.1.0-1) ... 188s Setting up pkgconf-bin (1.8.1-4) ... 188s Setting up librust-ab-glyph-rasterizer-dev:s390x (0.1.7-1) ... 188s Setting up binutils-mingw-w64-i686 (2.43.1-4ubuntu1+12) ... 188s Setting up librust-time-core-dev:s390x (0.1.2-1) ... 188s Setting up python3-regex (0.1.20240724-1build1) ... 188s Setting up librust-crunchy-dev:s390x (0.2.2-1) ... 188s Setting up python3-toml (0.10.2-1) ... 188s Setting up librust-unicase-dev:s390x (2.7.0-1) ... 188s Setting up librust-unicode-width-dev:s390x (0.1.14-1) ... 188s Setting up python3-installer (0.7.0+dfsg1-3) ... 188s Setting up autoconf (2.72-3) ... 188s Setting up python3-pluggy (1.5.0-1) ... 188s Setting up libwebp7:s390x (1.4.0-0.1) ... 188s Setting up libubsan1:s390x (14.2.0-8ubuntu1) ... 188s Setting up zlib1g-dev:s390x (1:1.3.dfsg+really1.3.1-1ubuntu1) ... 188s Setting up librust-unicode-ident-dev:s390x (1.0.13-1) ... 188s Setting up librust-equivalent-dev:s390x (1.0.1-1) ... 188s Setting up dwz (0.15-1build6) ... 188s Setting up librust-bitflags-1-dev:s390x (1.3.2-5) ... 188s Setting up librust-uncased-dev:s390x (0.9.6-2) ... 188s Setting up librust-slog-dev:s390x (2.7.0-1) ... 188s Setting up python3-tiktoken (0.8.0-1build1) ... 189s Setting up librust-pure-rust-locales-dev:s390x (0.8.1-1) ... 189s Setting up librhash0:s390x (1.4.3-3build1) ... 189s Setting up libasan8:s390x (14.2.0-8ubuntu1) ... 189s Setting up librust-wait-timeout-dev:s390x (0.2.0-1) ... 189s Setting up librust-ttf-parser-dev:s390x (0.24.1-1) ... 189s Setting up librust-cfg-if-dev:s390x (1.0.0-1) ... 189s Setting up debugedit (1:5.1-1) ... 189s Setting up librust-color-quant-dev:s390x (1.1.0-1) ... 189s Setting up python3.13-minimal (3.13.0-2) ... 189s Setting up python3-dateutil (2.9.0-3) ... 190s Setting up librust-blobby-dev:s390x (0.3.1-1) ... 190s Setting up cmake-data (3.30.3-1) ... 190s Setting up llvm-19-linker-tools (1:19.1.2-1ubuntu1) ... 190s Setting up librust-byteorder-dev:s390x (1.5.0-1) ... 190s Setting up librust-static-assertions-dev:s390x (1.1.0-1) ... 190s Setting up librust-compiler-builtins+core-dev:s390x (0.1.101-1) ... 190s Setting up librust-float-ord-dev:s390x (0.3.2-1) ... 190s Setting up librust-autocfg-dev:s390x (1.1.0-1) ... 190s Setting up libisl23:s390x (0.27-1) ... 190s Setting up librust-time-macros-dev:s390x (0.2.16-1) ... 190s Setting up llvm-19-runtime (1:19.1.2-1ubuntu1) ... 190s Setting up librust-futures-sink-dev:s390x (0.3.31-1) ... 190s Setting up python3-build (1.2.2-1) ... 190s Setting up libsharpyuv-dev:s390x (1.4.0-0.1) ... 190s Setting up librust-cfg-if-0.1-dev:s390x (0.1.10-2) ... 190s Setting up librust-tinyvec-dev:s390x (1.6.0-2) ... 190s Setting up libwebpmux3:s390x (1.4.0-0.1) ... 190s Setting up librust-plotters-backend-dev:s390x (0.3.7-1) ... 190s Setting up librust-shlex-dev:s390x (1.3.0-1) ... 190s Setting up libpython3.13-stdlib:s390x (3.13.0-2) ... 190s Setting up librust-indenter-dev:s390x (0.3.3-1) ... 190s Setting up librust-cpp-demangle-dev:s390x (0.4.0-1) ... 190s Setting up librust-winapi-x86-64-pc-windows-gnu-dev:s390x (0.4.0-1) ... 190s Setting up libcc1-0:s390x (14.2.0-8ubuntu1) ... 190s Setting up libbrotli-dev:s390x (1.1.0-2build3) ... 190s Setting up libitm1:s390x (14.2.0-8ubuntu1) ... 190s Setting up librust-clap-lex-dev:s390x (0.7.2-2) ... 190s Setting up libhttp-parser2.9:s390x (2.9.4-6build1) ... 190s Setting up librust-unarray-dev:s390x (0.1.4-1) ... 190s Setting up libstd-rust-1.80:s390x (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 190s Setting up librust-itertools-dev:s390x (0.10.5-1) ... 190s Setting up librust-heck-dev:s390x (0.4.1-1) ... 190s Setting up libbz2-dev:s390x (1.0.8-6) ... 190s Setting up librust-num-conv-dev:s390x (0.1.0-1) ... 190s Setting up libpython3.13:s390x (3.13.0-2) ... 190s Setting up automake (1:1.16.5-1.3ubuntu1) ... 190s update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode 190s Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... 190s Setting up librust-owned-ttf-parser-dev:s390x (0.24.0-1) ... 190s Setting up librust-num-threads-dev:s390x (0.1.7-1) ... 190s Setting up librust-crossbeam-epoch+std-dev:s390x (0.9.18-1) ... 190s Setting up gettext (0.22.5-2) ... 190s Setting up librust-gif-dev:s390x (0.11.3-1) ... 190s Setting up librust-crossbeam-deque-dev:s390x (0.8.5-1) ... 190s Setting up librust-tiny-keccak-dev:s390x (2.0.2-1) ... 190s Setting up python3.13 (3.13.0-2) ... 191s Setting up librust-linux-raw-sys-dev:s390x (0.4.14-1) ... 191s Setting up pybuild-plugin-pyproject (6.20241024) ... 191s Setting up fontconfig-config (2.15.0-1.1ubuntu2) ... 191s Setting up librust-getrandom-dev:s390x (0.2.12-1) ... 191s Setting up python3-pytest (8.3.3-1) ... 192s Setting up librust-libloading-dev:s390x (0.8.5-1) ... 192s Setting up librust-memmap2-dev:s390x (0.9.3-1) ... 192s Setting up libwebpdemux2:s390x (1.4.0-0.1) ... 192s Setting up python3-hypothesis (6.119.3-1) ... 192s Setting up librust-ab-glyph-rasterizer+libm-dev:s390x (0.1.7-1) ... 192s Setting up libpng-dev:s390x (1.6.44-2) ... 192s Setting up librust-tinyvec+tinyvec-macros-dev:s390x (1.6.0-2) ... 192s Setting up librust-owning-ref-dev:s390x (0.4.1-1) ... 192s Setting up librust-memoffset-dev:s390x (0.8.0-1) ... 192s Setting up python3-all (3.12.7-1) ... 192s Setting up libpython3.12-dev:s390x (3.12.7-3) ... 192s Setting up librust-proc-macro2-dev:s390x (1.0.86-1) ... 192s Setting up librust-compiler-builtins+rustc-dep-of-std-dev:s390x (0.1.101-1) ... 192s Setting up librust-rayon-core-dev:s390x (1.12.1-1) ... 192s Setting up librust-winapi-dev:s390x (0.3.9-1) ... 192s Setting up pkgconf:s390x (1.8.1-4) ... 192s Setting up librust-ab-glyph-dev:s390x (0.2.28-1) ... 192s Setting up libstd-rust-1.80-dev:s390x (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 192s Setting up libfreetype-dev:s390x (2.13.3+dfsg-1) ... 192s Setting up intltool-debian (0.35.0+20060710.6) ... 192s Setting up librust-rand-core+getrandom-dev:s390x (0.6.4-2) ... 192s Setting up librust-rand-xorshift-dev:s390x (0.3.0-2) ... 192s Setting up libwebp-dev:s390x (1.4.0-0.1) ... 192s Setting up librust-anes-dev:s390x (0.1.6-1) ... 192s Setting up libpython3.13-dev:s390x (3.13.0-2) ... 192s Setting up llvm-runtime:s390x (1:19.0-60~exp1) ... 192s Setting up librust-cc-dev:s390x (1.1.14-1) ... 192s Setting up python3.12-dev (3.12.7-3) ... 192s Setting up pkg-config:s390x (1.8.1-4) ... 192s Setting up cpp-14-s390x-linux-gnu (14.2.0-8ubuntu1) ... 192s Setting up cpp-14 (14.2.0-8ubuntu1) ... 192s Setting up dh-strip-nondeterminism (1.14.0-1) ... 192s Setting up librust-crc32fast-dev:s390x (1.4.2-1) ... 192s Setting up librust-num-traits-dev:s390x (0.2.19-2) ... 192s Setting up librust-winapi-util-dev:s390x (0.1.6-1) ... 192s Setting up cmake (3.30.3-1) ... 192s Setting up libgit2-1.7:s390x (1.7.2+ds-1ubuntu3) ... 192s Setting up llvm-19 (1:19.1.2-1ubuntu1) ... 192s Setting up libfontconfig1:s390x (2.15.0-1.1ubuntu2) ... 192s Setting up librust-sha1-asm-dev:s390x (0.5.1-2) ... 192s Setting up libgcc-14-dev:s390x (14.2.0-8ubuntu1) ... 192s Setting up librust-same-file-dev:s390x (1.0.6-1) ... 192s Setting up librust-rayon-dev:s390x (1.10.0-1) ... 192s Setting up librust-termcolor-dev:s390x (1.4.1-1) ... 192s Setting up librust-pkg-config-dev:s390x (0.3.27-1) ... 192s Setting up libstdc++-14-dev:s390x (14.2.0-8ubuntu1) ... 192s Setting up librust-jpeg-decoder-dev:s390x (0.3.0-1) ... 192s Setting up librust-dirs-sys-next-dev:s390x (0.1.1-1) ... 192s Setting up librust-cmake-dev:s390x (0.1.45-1) ... 192s Setting up librust-num-integer-dev:s390x (0.1.46-1) ... 192s Setting up librust-dirs-next-dev:s390x (2.0.0-1) ... 192s Setting up libpython3-dev:s390x (3.12.7-1) ... 192s Setting up librust-dlib-dev:s390x (0.5.2-2) ... 192s Setting up cpp-s390x-linux-gnu (4:14.1.0-2ubuntu1) ... 192s Setting up libfontconfig-dev:s390x (2.15.0-1.1ubuntu2) ... 192s Setting up librust-sha2-asm-dev:s390x (0.6.2-2) ... 192s Setting up librust-libwebp-sys-dev:s390x (0.9.5-1build1) ... 192s Setting up po-debconf (1.0.21+nmu1) ... 192s Setting up librust-quote-dev:s390x (1.0.37-1) ... 192s Setting up librust-freetype-sys-dev:s390x (0.13.1-1) ... 192s Setting up librust-libz-sys-dev:s390x (1.1.20-1) ... 192s Setting up librust-syn-dev:s390x (2.0.85-1) ... 192s Setting up librust-rand-core+std-dev:s390x (0.6.4-2) ... 192s Setting up librust-powerfmt-macros-dev:s390x (0.1.0-1) ... 192s Setting up gcc-14-s390x-linux-gnu (14.2.0-8ubuntu1) ... 192s Setting up gcc-s390x-linux-gnu (4:14.1.0-2ubuntu1) ... 192s Setting up librust-powerfmt-dev:s390x (0.2.0-1) ... 192s Setting up librust-sval-derive-dev:s390x (2.6.1-2) ... 192s Setting up libpython3-all-dev:s390x (3.12.7-1) ... 192s Setting up librust-md5-asm-dev:s390x (0.5.0-2) ... 192s Setting up librust-freetype-dev:s390x (0.7.0-4) ... 192s Setting up g++-14-s390x-linux-gnu (14.2.0-8ubuntu1) ... 192s Setting up librust-zeroize-derive-dev:s390x (1.4.2-1) ... 192s Setting up llvm (1:19.0-60~exp1) ... 192s Setting up librust-postgres-derive-dev:s390x (0.4.5-1) ... 192s Setting up librust-syn-1-dev:s390x (1.0.109-2) ... 192s Setting up librust-clap-derive-dev:s390x (4.5.13-2) ... 192s Setting up librust-bytecheck-derive-dev:s390x (0.6.12-1) ... 192s Setting up librust-no-panic-dev:s390x (0.1.13-1) ... 192s Setting up cpp (4:14.1.0-2ubuntu1) ... 192s Setting up librust-serde-derive-dev:s390x (1.0.210-1) ... 192s Setting up librust-walkdir-dev:s390x (2.5.0-1) ... 192s Setting up librust-zerocopy-derive-dev:s390x (0.7.32-2) ... 192s Setting up librust-valuable-derive-dev:s390x (0.1.0-1) ... 192s Setting up librust-ghost-dev:s390x (0.1.5-1) ... 192s Setting up librust-serde-dev:s390x (1.0.210-2) ... 192s Setting up librust-bytemuck-derive-dev:s390x (1.5.0-2) ... 192s Setting up librust-derive-arbitrary-dev:s390x (1.3.2-1) ... 192s Setting up librust-allocator-api2-dev:s390x (0.2.16-1) ... 192s Setting up librust-async-attributes-dev (1.1.2-6) ... 192s Setting up librust-rand-chacha-dev:s390x (0.3.1-2) ... 192s Setting up librust-futures-macro-dev:s390x (0.3.30-1) ... 192s Setting up librust-ctor-dev:s390x (0.1.26-1) ... 192s Setting up librust-unicode-bidi-dev:s390x (0.3.13-1) ... 192s Setting up librust-tracing-attributes-dev:s390x (0.1.27-1) ... 192s Setting up librust-ptr-meta-derive-dev:s390x (0.1.4-1) ... 192s Setting up librust-serde-fmt-dev (1.0.3-3) ... 192s Setting up librust-portable-atomic-dev:s390x (1.9.0-4) ... 192s Setting up librust-tokio-macros-dev:s390x (2.4.0-2) ... 192s Setting up librust-flate2-dev:s390x (1.0.34-1) ... 192s Setting up librust-lock-api-dev:s390x (0.4.12-1) ... 192s Setting up g++-s390x-linux-gnu (4:14.1.0-2ubuntu1) ... 192s Setting up librust-ptr-meta-dev:s390x (0.1.4-1) ... 192s Setting up librust-inventory-dev:s390x (0.3.2-1) ... 192s Setting up librust-sval-dev:s390x (2.6.1-2) ... 192s Setting up librust-itoa-dev:s390x (1.0.9-1) ... 192s Setting up gcc-14 (14.2.0-8ubuntu1) ... 192s Setting up librust-bytes-dev:s390x (1.8.0-1) ... 192s Setting up librust-bumpalo-dev:s390x (3.16.0-1) ... 192s Setting up librust-python3-dll-a-dev:s390x (0.2.10-1) ... 192s Setting up librust-siphasher-dev:s390x (0.3.10-1) ... 192s Setting up librust-rand-core+serde-dev:s390x (0.6.4-2) ... 192s Setting up librust-sval-ref-dev:s390x (2.6.1-1) ... 192s Setting up librust-rkyv-derive-dev:s390x (0.7.44-1) ... 192s Setting up librust-zerocopy-dev:s390x (0.7.32-1) ... 192s Setting up librust-semver-dev:s390x (1.0.23-1) ... 192s Setting up librust-bytemuck-dev:s390x (1.14.0-1) ... 192s Setting up librust-bit-vec-dev:s390x (0.6.3-1) ... 192s Setting up librust-zeroize-dev:s390x (1.8.1-1) ... 192s Setting up librust-slab-dev:s390x (0.4.9-1) ... 192s Setting up librust-arbitrary-dev:s390x (1.3.2-1) ... 192s Setting up librust-valuable-dev:s390x (0.1.0-4) ... 192s Setting up librust-target-lexicon-dev:s390x (0.12.14-1) ... 192s Setting up librust-serde-test-dev:s390x (1.0.171-1) ... 192s Setting up librust-bit-set-dev:s390x (0.5.2-1) ... 192s Setting up librust-concurrent-queue-dev:s390x (2.5.0-4) ... 192s Setting up g++-14 (14.2.0-8ubuntu1) ... 192s Setting up librust-erased-serde-dev:s390x (0.3.31-1) ... 192s Setting up librust-radium-dev:s390x (1.1.0-1) ... 192s Setting up librust-bit-set+std-dev:s390x (0.5.2-1) ... 192s Setting up librust-phf-shared-dev:s390x (0.11.2-1) ... 192s Setting up librust-tiff-dev:s390x (0.9.0-1) ... 192s Setting up librust-smol-str-dev:s390x (0.2.0-1) ... 192s Setting up librust-atomic-dev:s390x (0.6.0-1) ... 192s Setting up librust-generic-array-dev:s390x (0.14.7-1) ... 192s Setting up librust-half-dev:s390x (1.8.2-4) ... 192s Setting up librust-phf-dev:s390x (0.11.2-1) ... 192s Setting up librust-spin-dev:s390x (0.9.8-4) ... 192s Setting up librust-sval-dynamic-dev:s390x (2.6.1-1) ... 192s Setting up librust-qoi-dev:s390x (0.4.1-2) ... 192s Setting up librust-async-task-dev (4.7.1-3) ... 192s Setting up librust-crypto-common-dev:s390x (0.1.6-1) ... 192s Setting up librust-ciborium-ll-dev:s390x (0.2.2-1) ... 192s Setting up librust-futures-core-dev:s390x (0.3.30-1) ... 192s Setting up librust-lazy-static-dev:s390x (1.5.0-1) ... 192s Setting up libtool (2.4.7-8) ... 192s Setting up librust-sval-buffer-dev:s390x (2.6.1-1) ... 192s Setting up librust-arrayvec-dev:s390x (0.7.4-2) ... 192s Setting up librust-png-dev:s390x (0.17.7-3) ... 192s Setting up librust-rustc-version-dev:s390x (0.4.0-1) ... 192s Setting up librust-event-listener-dev (5.3.1-8) ... 192s Setting up librust-smallvec-dev:s390x (1.13.2-1) ... 192s Setting up librust-sval-fmt-dev:s390x (2.6.1-1) ... 192s Setting up librust-const-oid-dev:s390x (0.9.3-1) ... 192s Setting up gcc (4:14.1.0-2ubuntu1) ... 192s Setting up librust-anstyle-parse-dev:s390x (0.2.1-1) ... 192s Setting up rustc-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 192s Setting up dh-autoreconf (20) ... 192s Setting up librust-ciborium-dev:s390x (0.2.2-2) ... 192s Setting up librust-block-buffer-dev:s390x (0.10.2-2) ... 192s Setting up librust-pathfinder-simd-dev:s390x (0.5.2-1) ... 192s Setting up librust-unicode-normalization-dev:s390x (0.1.22-1) ... 192s Setting up librust-anstream-dev:s390x (0.6.15-1) ... 192s Setting up librust-bitflags-dev:s390x (2.6.0-1) ... 192s Setting up librust-regex-syntax-dev:s390x (0.8.2-1) ... 192s Setting up g++ (4:14.1.0-2ubuntu1) ... 192s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 192s Setting up rustc (1.80.1ubuntu2) ... 192s Setting up librust-parking-lot-core-dev:s390x (0.9.10-1) ... 192s Setting up build-essential (12.10ubuntu1) ... 192s Setting up librust-futures-channel-dev:s390x (0.3.30-1) ... 192s Setting up cargo-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 192s Setting up librust-once-cell-dev:s390x (1.20.2-1) ... 192s Setting up librust-pyo3-build-config-dev:s390x (0.22.6-1) ... 192s Setting up librust-phf-shared+uncased-dev:s390x (0.11.2-1) ... 192s Setting up librust-digest-dev:s390x (0.10.7-2) ... 192s Setting up librust-md-5-dev:s390x (0.10.6-1) ... 192s Setting up librust-sval-serde-dev:s390x (2.6.1-1) ... 192s Setting up librust-parking-lot-dev:s390x (0.12.3-1) ... 192s Setting up librust-event-listener-strategy-dev:s390x (0.5.2-3) ... 192s Setting up librust-pyo3-macros-backend-dev:s390x (0.22.6-1) ... 192s Setting up librust-pyo3-ffi-dev:s390x (0.22.6-1build1) ... 192s Setting up librust-const-random-macro-dev:s390x (0.1.16-2) ... 192s Setting up librust-const-random-dev:s390x (0.1.17-2) ... 192s Setting up librust-pyo3-macros-dev:s390x (0.22.6-1) ... 192s Setting up librust-sha1-dev:s390x (0.10.6-1) ... 192s Setting up debhelper (13.20ubuntu1) ... 192s Setting up librust-ahash-dev (0.8.11-8) ... 192s Setting up librust-async-channel-dev (2.3.1-8) ... 192s Setting up librust-stringprep-dev:s390x (0.1.2-1) ... 192s Setting up librust-tracing-core-dev:s390x (0.1.32-1) ... 192s Setting up cargo (1.80.1ubuntu2) ... 192s Setting up librust-async-lock-dev (3.4.0-4) ... 192s Setting up python3-setuptools-rust (1.9.0+dfsg-2) ... 193s Setting up librust-eyre-dev:s390x (0.6.12-1) ... 193s Setting up librust-yeslogic-fontconfig-sys-dev:s390x (3.0.1-1) ... 193s Setting up librust-sha2-dev:s390x (0.10.8-1) ... 193s Setting up librust-hmac-dev:s390x (0.12.1-1) ... 193s Setting up librust-rustix-dev:s390x (0.38.32-1) ... 193s Setting up librust-wyz-dev:s390x (0.5.1-1) ... 193s Setting up librust-bitvec-dev:s390x (1.0.1-1) ... 193s Setting up librust-phf+uncased-dev:s390x (0.11.2-1) ... 193s Setting up librust-value-bag-sval2-dev:s390x (1.9.0-1) ... 193s Setting up librust-tempfile-dev:s390x (3.10.1-1) ... 193s Setting up librust-eyre+default-dev:s390x (0.6.12-1) ... 193s Setting up pybuild-plugin-autopkgtest (6.20241024) ... 193s Setting up librust-rusty-fork-dev:s390x (0.3.0-1) ... 193s Setting up librust-hashbrown-dev:s390x (0.14.5-5) ... 193s Setting up librust-rusty-fork+wait-timeout-dev:s390x (0.3.0-1) ... 193s Setting up librust-terminal-size-dev:s390x (0.3.0-2) ... 193s Setting up librust-indexmap-dev:s390x (2.2.6-1) ... 193s Setting up librust-gimli-dev:s390x (0.28.1-2) ... 193s Setting up librust-webp-dev:s390x (0.2.6-1) ... 193s Setting up librust-memchr-dev:s390x (2.7.4-1) ... 193s Setting up librust-futures-util-dev:s390x (0.3.30-2) ... 193s Setting up librust-csv-core-dev:s390x (0.1.11-1) ... 193s Setting up librust-futures-lite-dev:s390x (2.3.0-2) ... 193s Setting up librust-csv-dev:s390x (1.3.0-1) ... 193s Setting up librust-serde-json-dev:s390x (1.0.128-1) ... 193s Setting up librust-async-executor-dev (1.13.1-1) ... 193s Setting up librust-futures-executor-dev:s390x (0.3.30-1) ... 193s Setting up librust-value-bag-serde1-dev:s390x (1.9.0-1) ... 193s Setting up librust-tinytemplate-dev:s390x (1.2.1-1) ... 193s Setting up librust-futures-dev:s390x (0.3.30-2) ... 193s Setting up librust-value-bag-dev:s390x (1.9.0-1) ... 193s Setting up librust-log-dev:s390x (0.4.22-1) ... 193s Setting up librust-kv-log-macro-dev (1.0.8-4) ... 193s Setting up librust-pathfinder-geometry-dev:s390x (0.5.1-1) ... 193s Setting up librust-tracing-dev:s390x (0.1.40-1) ... 193s Setting up librust-polling-dev:s390x (3.4.0-1) ... 193s Setting up librust-aho-corasick-dev:s390x (1.1.3-1) ... 193s Setting up librust-font-kit-dev:s390x (0.11.0-2) ... 193s Setting up librust-async-io-dev:s390x (2.3.3-4) ... 193s Setting up librust-blocking-dev (1.6.1-5) ... 193s Setting up librust-async-net-dev (2.0.0-4) ... 193s Setting up librust-rand-dev:s390x (0.8.5-1) ... 193s Setting up librust-mio-dev:s390x (1.0.2-2) ... 193s Setting up librust-wasm-bindgen-backend-dev:s390x (0.2.87-1) ... 193s Setting up librust-twox-hash-dev:s390x (1.6.3-1) ... 193s Setting up librust-proptest-dev:s390x (1.5.0-2) ... 193s Setting up librust-wasm-bindgen-macro-support-dev:s390x (0.2.87-1) ... 193s Setting up librust-regex-automata-dev:s390x (0.4.7-1) ... 193s Setting up librust-wasm-bindgen-macro-support+spans-dev:s390x (0.2.87-1) ... 193s Setting up librust-wasm-bindgen-macro-dev:s390x (0.2.87-1) ... 193s Setting up librust-uuid-dev:s390x (1.10.0-1) ... 193s Setting up librust-bstr-dev:s390x (1.7.0-2build1) ... 193s Setting up librust-async-signal-dev:s390x (0.2.10-1) ... 193s Setting up librust-bytecheck-dev:s390x (0.6.12-1) ... 193s Setting up librust-postgres-protocol-dev:s390x (0.6.6-2) ... 193s Setting up librust-async-fs-dev (2.1.2-4) ... 193s Setting up librust-wasm-bindgen-dev:s390x (0.2.87-1) ... 193s Setting up librust-convert-case-dev:s390x (0.6.0-2) ... 193s Setting up librust-regex-dev:s390x (1.10.6-1) ... 193s Setting up librust-fancy-regex-dev:s390x (0.11.0-2) ... 193s Setting up librust-async-process-dev (2.3.0-1) ... 193s Setting up librust-wasm-bindgen-macro+spans-dev:s390x (0.2.87-1) ... 193s Setting up librust-rend-dev:s390x (0.4.0-1) ... 193s Setting up librust-derive-more-0.99-dev:s390x (0.99.18-1) ... 193s Setting up librust-env-logger-dev:s390x (0.10.2-2) ... 193s Setting up librust-wasm-bindgen+spans-dev:s390x (0.2.87-1) ... 193s Setting up librust-wasm-bindgen+default-dev:s390x (0.2.87-1) ... 193s Setting up librust-rkyv-dev:s390x (0.7.44-1) ... 193s Setting up librust-eui48-dev:s390x (1.1.0-2) ... 193s Setting up librust-parse-zoneinfo-dev:s390x (0.3.0-1) ... 193s Setting up librust-smol-dev (2.0.2-1) ... 193s Setting up librust-js-sys-dev:s390x (0.3.64-1) ... 193s Setting up librust-num-complex-dev:s390x (0.4.6-2) ... 193s Setting up librust-approx-dev:s390x (0.5.1-1) ... 193s Setting up librust-ruzstd-dev:s390x (0.5.0-1) ... 193s Setting up librust-web-sys-dev:s390x (0.3.64-2) ... 193s Setting up librust-quickcheck-dev:s390x (1.0.3-3) ... 193s Setting up librust-geo-types-dev:s390x (0.7.11-2) ... 193s Setting up librust-deranged-dev:s390x (0.3.11-1) ... 193s Setting up librust-num-bigint-dev:s390x (0.4.6-1) ... 193s Setting up librust-num-rational-dev:s390x (0.4.2-1) ... 193s Setting up librust-chrono-dev:s390x (0.4.38-2) ... 193s Setting up librust-object-dev:s390x (0.32.2-1) ... 193s Setting up librust-image-dev:s390x (0.24.7-2) ... 193s Setting up librust-time-dev:s390x (0.3.36-2) ... 193s Setting up librust-plotters-bitmap-dev:s390x (0.3.3-3) ... 193s Setting up librust-postgres-types-dev:s390x (0.2.6-2) ... 193s Setting up librust-addr2line-dev:s390x (0.21.0-2) ... 193s Setting up librust-plotters-svg-dev:s390x (0.3.5-1) ... 193s Setting up librust-rust-decimal-dev:s390x (1.36.0-1) ... 193s Setting up librust-plotters-dev:s390x (0.3.5-4) ... 193s Setting up librust-backtrace-dev:s390x (0.3.69-2) ... 193s Setting up librust-tokio-dev:s390x (1.39.3-3) ... 193s Setting up librust-async-global-executor-dev:s390x (2.4.1-5) ... 193s Setting up librust-clap-builder-dev:s390x (4.5.15-2) ... 193s Setting up librust-clap-dev:s390x (4.5.16-1) ... 193s Setting up librust-async-std-dev (1.13.0-1) ... 193s Setting up librust-anyhow-dev:s390x (1.0.86-1) ... 193s Setting up librust-criterion-dev (0.5.1-6) ... 193s Setting up librust-phf-generator-dev:s390x (0.11.2-2) ... 193s Setting up librust-phf-codegen-dev:s390x (0.11.2-1) ... 193s Setting up librust-chrono-tz-build-dev:s390x (0.2.1-1) ... 193s Setting up librust-chrono-tz-dev:s390x (0.8.6-2) ... 193s Setting up librust-pyo3-dev:s390x (0.22.6-1) ... 193s Setting up autopkgtest-satdep (0) ... 193s Processing triggers for libc-bin (2.40-1ubuntu3) ... 193s Processing triggers for systemd (256.5-2ubuntu4) ... 193s Processing triggers for man-db (2.13.0-1) ... 194s Processing triggers for install-info (7.1.1-1) ... 204s (Reading database ... 82205 files and directories currently installed.) 204s Removing autopkgtest-satdep (0) ... 205s autopkgtest [20:34:24]: test pybuild-autopkgtest: pybuild-autopkgtest 205s autopkgtest [20:34:24]: test pybuild-autopkgtest: [----------------------- 205s pybuild-autopkgtest 205s I: pybuild base:311: cd /tmp/autopkgtest.YA0KYX/autopkgtest_tmp/build; python3.13 -m pytest tests 206s ============================= test session starts ============================== 206s platform linux -- Python 3.13.0, pytest-8.3.3, pluggy-1.5.0 206s rootdir: /tmp/autopkgtest.YA0KYX/autopkgtest_tmp/build 206s configfile: pyproject.toml 206s plugins: typeguard-4.4.1, hypothesis-6.119.3 206s collected 30 items 206s 780s tests/test_encoding.py FFFFFFFFFFFFFFFFFFFFFF [ 73%] 781s tests/test_misc.py F. [ 80%] 783s tests/test_offsets.py FF [ 86%] 784s tests/test_pickle.py F [ 90%] 787s tests/test_simple_public.py FF. [100%] 787s 787s =================================== FAILURES =================================== 787s _________________________________ test_simple __________________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s def test_simple(): 787s > enc = tiktoken.get_encoding("gpt2") 787s 787s tests/test_encoding.py:15: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 787s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 787s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s _____________________________ test_simple_repeated _____________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s def test_simple_repeated(): 787s > enc = tiktoken.get_encoding("gpt2") 787s 787s tests/test_encoding.py:32: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 787s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 787s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ______________________________ test_simple_regex _______________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s def test_simple_regex(): 787s > enc = tiktoken.get_encoding("cl100k_base") 787s 787s tests/test_encoding.py:53: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ______________________________ test_basic_encode _______________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s def test_basic_encode(): 787s > enc = tiktoken.get_encoding("r50k_base") 787s 787s tests/test_encoding.py:62: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ______________________________ test_encode_empty _______________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s def test_encode_empty(): 787s > enc = tiktoken.get_encoding("r50k_base") 787s 787s tests/test_encoding.py:74: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ______________________________ test_encode_bytes _______________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s def test_encode_bytes(): 787s > enc = tiktoken.get_encoding("cl100k_base") 787s 787s tests/test_encoding.py:79: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s _________________________ test_encode_surrogate_pairs __________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s def test_encode_surrogate_pairs(): 787s > enc = tiktoken.get_encoding("cl100k_base") 787s 787s tests/test_encoding.py:84: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s _________________ test_catastrophically_repetitive[r50k_base] __________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'r50k_base') 787s 787s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 787s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 787s > enc = make_enc() 787s 787s tests/test_encoding.py:96: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ________________ test_catastrophically_repetitive[cl100k_base] _________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'cl100k_base') 787s 787s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 787s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 787s > enc = make_enc() 787s 787s tests/test_encoding.py:96: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s _______________________ test_basic_roundtrip[r50k_base] ________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'r50k_base') 787s 787s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 787s def test_basic_roundtrip(make_enc): 787s > enc = make_enc() 787s 787s tests/test_encoding.py:115: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ______________________ test_basic_roundtrip[cl100k_base] _______________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'cl100k_base') 787s 787s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 787s def test_basic_roundtrip(make_enc): 787s > enc = make_enc() 787s 787s tests/test_encoding.py:115: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ________________________ test_hyp_roundtrip[r50k_base] _________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'r50k_base') 787s 787s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 787s > @hypothesis.given(text=st.text()) 787s 787s tests/test_encoding.py:131: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s tests/test_encoding.py:134: in test_hyp_roundtrip 787s enc = make_enc() 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s E Falsifying example: test_hyp_roundtrip( 787s E make_enc=functools.partial(get_encoding, 'r50k_base'), 787s E text='', # or any other generated value 787s E ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s _______________________ test_hyp_roundtrip[cl100k_base] ________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'cl100k_base') 787s 787s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 787s > @hypothesis.given(text=st.text()) 787s 787s tests/test_encoding.py:131: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s tests/test_encoding.py:134: in test_hyp_roundtrip 787s enc = make_enc() 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s E Falsifying example: test_hyp_roundtrip( 787s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 787s E text='', # or any other generated value 787s E ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ____________________ test_single_token_roundtrip[r50k_base] ____________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'r50k_base') 787s 787s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 787s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 787s > enc = make_enc() 787s 787s tests/test_encoding.py:141: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ___________________ test_single_token_roundtrip[cl100k_base] ___________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'cl100k_base') 787s 787s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 787s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 787s > enc = make_enc() 787s 787s tests/test_encoding.py:141: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ______________________________ test_special_token ______________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s def test_special_token(): 787s > enc = tiktoken.get_encoding("cl100k_base") 787s 787s tests/test_encoding.py:157: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s _____________________ test_hyp_special_ordinary[r50k_base] _____________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflecteE: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.YA0KYX/autopkgtest_tmp/build; python3.13 -m pytest tests 787s I: pybuild base:311: cd /tmp/autopkgtest.YA0KYX/autopkgtest_tmp/build; python3.12 -m pytest tests 787s d in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'r50k_base') 787s 787s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 787s > @hypothesis.given(text=st.text()) 787s 787s tests/test_encoding.py:208: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s tests/test_encoding.py:211: in test_hyp_special_ordinary 787s enc = make_enc() 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s E Falsifying example: test_hyp_special_ordinary( 787s E make_enc=functools.partial(get_encoding, 'r50k_base'), 787s E text='', # or any other generated value 787s E ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ____________________ test_hyp_special_ordinary[cl100k_base] ____________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'cl100k_base') 787s 787s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 787s > @hypothesis.given(text=st.text()) 787s 787s tests/test_encoding.py:208: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s tests/test_encoding.py:211: in test_hyp_special_ordinary 787s enc = make_enc() 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s E Falsifying example: test_hyp_special_ordinary( 787s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 787s E text='', # or any other generated value 787s E ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s _________________________ test_batch_encode[r50k_base] _________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'r50k_base') 787s 787s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 787s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 787s > enc = make_enc() 787s 787s tests/test_encoding.py:222: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ________________________ test_batch_encode[cl100k_base] ________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'cl100k_base') 787s 787s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 787s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 787s > enc = make_enc() 787s 787s tests/test_encoding.py:222: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s _____________________ test_hyp_batch_roundtrip[r50k_base] ______________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'r50k_base') 787s 787s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 787s > @hypothesis.given(batch=st.lists(st.text())) 787s 787s tests/test_encoding.py:237: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 787s enc = make_enc() 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s E Falsifying example: test_hyp_batch_roundtrip( 787s E make_enc=functools.partial(get_encoding, 'r50k_base'), 787s E batch=[], # or any other generated value 787s E ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ____________________ test_hyp_batch_roundtrip[cl100k_base] _____________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'cl100k_base') 787s 787s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 787s > @hypothesis.given(batch=st.lists(st.text())) 787s 787s tests/test_encoding.py:237: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 787s enc = make_enc() 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s E Falsifying example: test_hyp_batch_roundtrip( 787s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 787s E batch=[], # or any other generated value 787s E ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ___________________________ test_encoding_for_model ____________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s def test_encoding_for_model(): 787s > enc = tiktoken.encoding_for_model("gpt2") 787s 787s tests/test_misc.py:8: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 787s return get_encoding(encoding_name_for_model(model_name)) 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 787s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 787s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ________________________ test_hyp_offsets[cl100k_base] _________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s make_enc = functools.partial(, 'cl100k_base') 787s 787s @pytest.mark.parametrize("make_enc", SOME_ENCODING_FACTORIES) 787s > @hypothesis.given(data=st.data()) 787s 787s tests/test_offsets.py:29: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s tests/test_offsets.py:32: in test_hyp_offsets 787s enc = make_enc() 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s E Falsifying example: test_hyp_offsets( 787s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 787s E data=data(...), 787s E ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ______________________________ test_basic_offsets ______________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s def test_basic_offsets(): 787s > enc = tiktoken.get_encoding("cl100k_base") 787s 787s tests/test_offsets.py:50: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s _________________________________ test_pickle __________________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s def test_pickle(): 787s import pickle 787s 787s > enc_old = tiktoken.get_encoding("r50k_base") 787s 787s tests/test_pickle.py:7: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 787s mergeable_ranks = load_tiktoken_bpe( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 787s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s _________________________________ test_simple __________________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s def test_simple(): 787s # Note that there are more actual tests, they're just not currently public :-) 787s > enc = tiktoken.get_encoding("gpt2") 787s 787s tests/test_simple_public.py:9: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 787s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 787s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s ___________________________ test_encoding_for_model ____________________________ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s > sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 787s raise err 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 787s source_address = None, socket_options = [(6, 1, 1)] 787s 787s def create_connection( 787s address: tuple[str, int], 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s source_address: tuple[str, int] | None = None, 787s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 787s ) -> socket.socket: 787s """Connect to *address* and return the socket object. 787s 787s Convenience function. Connect to *address* (a 2-tuple ``(host, 787s port)``) and return the socket object. Passing the optional 787s *timeout* parameter will set the timeout on the socket instance 787s before attempting to connect. If no *timeout* is supplied, the 787s global default timeout setting returned by :func:`socket.getdefaulttimeout` 787s is used. If *source_address* is set it must be a tuple of (host, port) 787s for the socket to bind as a source address before making the connection. 787s An host of '' or port 0 tells the OS to use the default. 787s """ 787s 787s host, port = address 787s if host.startswith("["): 787s host = host.strip("[]") 787s err = None 787s 787s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 787s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 787s # The original create_connection function always returns all records. 787s family = allowed_gai_family() 787s 787s try: 787s host.encode("idna") 787s except UnicodeError: 787s raise LocationParseError(f"'{host}', label empty or too long") from None 787s 787s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 787s af, socktype, proto, canonname, sa = res 787s sock = None 787s try: 787s sock = socket.socket(af, socktype, proto) 787s 787s # If provided, set socket level options before connecting. 787s _set_socket_options(sock, socket_options) 787s 787s if timeout is not _DEFAULT_TIMEOUT: 787s sock.settimeout(timeout) 787s if source_address: 787s sock.bind(source_address) 787s > sock.connect(sa) 787s E ConnectionRefusedError: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 787s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 787s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s redirect = False, assert_same_host = False 787s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 787s release_conn = False, chunked = False, body_pos = None, preload_content = False 787s decode_content = False, response_kw = {} 787s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 787s destination_scheme = None, conn = None, release_this_conn = True 787s http_tunnel_required = False, err = None, clean_exit = False 787s 787s def urlopen( # type: ignore[override] 787s self, 787s method: str, 787s url: str, 787s body: _TYPE_BODY | None = None, 787s headers: typing.Mapping[str, str] | None = None, 787s retries: Retry | bool | int | None = None, 787s redirect: bool = True, 787s assert_same_host: bool = True, 787s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 787s pool_timeout: int | None = None, 787s release_conn: bool | None = None, 787s chunked: bool = False, 787s body_pos: _TYPE_BODY_POSITION | None = None, 787s preload_content: bool = True, 787s decode_content: bool = True, 787s **response_kw: typing.Any, 787s ) -> BaseHTTPResponse: 787s """ 787s Get a connection from the pool and perform an HTTP request. This is the 787s lowest level call for making a request, so you'll need to specify all 787s the raw details. 787s 787s .. note:: 787s 787s More commonly, it's appropriate to use a convenience method 787s such as :meth:`request`. 787s 787s .. note:: 787s 787s `release_conn` will only behave as expected if 787s `preload_content=False` because we want to make 787s `preload_content=False` the default behaviour someday soon without 787s breaking backwards compatibility. 787s 787s :param method: 787s HTTP request method (such as GET, POST, PUT, etc.) 787s 787s :param url: 787s The URL to perform the request on. 787s 787s :param body: 787s Data to send in the request body, either :class:`str`, :class:`bytes`, 787s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 787s 787s :param headers: 787s Dictionary of custom headers to send, such as User-Agent, 787s If-None-Match, etc. If None, pool headers are used. If provided, 787s these headers completely replace any pool-specific headers. 787s 787s :param retries: 787s Configure the number of retries to allow before raising a 787s :class:`~urllib3.exceptions.MaxRetryError` exception. 787s 787s Pass ``None`` to retry until you receive a response. Pass a 787s :class:`~urllib3.util.retry.Retry` object for fine-grained control 787s over different types of retries. 787s Pass an integer number to retry connection errors that many times, 787s but no other types of errors. Pass zero to never retry. 787s 787s If ``False``, then retries are disabled and any exception is raised 787s immediately. Also, instead of raising a MaxRetryError on redirects, 787s the redirect response will be returned. 787s 787s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 787s 787s :param redirect: 787s If True, automatically handle redirects (status codes 301, 302, 787s 303, 307, 308). Each redirect counts as a retry. Disabling retries 787s will disable redirect, too. 787s 787s :param assert_same_host: 787s If ``True``, will make sure that the host of the pool requests is 787s consistent else will raise HostChangedError. When ``False``, you can 787s use the pool on an HTTP proxy and request foreign hosts. 787s 787s :param timeout: 787s If specified, overrides the default timeout for this one 787s request. It may be a float (in seconds) or an instance of 787s :class:`urllib3.util.Timeout`. 787s 787s :param pool_timeout: 787s If set and the pool is set to block=True, then this method will 787s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 787s connection is available within the time period. 787s 787s :param bool preload_content: 787s If True, the response's body will be preloaded into memory. 787s 787s :param bool decode_content: 787s If True, will attempt to decode the body based on the 787s 'content-encoding' header. 787s 787s :param release_conn: 787s If False, then the urlopen call will not release the connection 787s back into the pool once a response is received (but will release if 787s you read the entire contents of the response such as when 787s `preload_content=True`). This is useful if you're not preloading 787s the response's content immediately. You will need to call 787s ``r.release_conn()`` on the response ``r`` to return the connection 787s back into the pool. If None, it takes the value of ``preload_content`` 787s which defaults to ``True``. 787s 787s :param bool chunked: 787s If True, urllib3 will send the body using chunked transfer 787s encoding. Otherwise, urllib3 will send the body using the standard 787s content-length form. Defaults to False. 787s 787s :param int body_pos: 787s Position to seek to in file-like body in the event of a retry or 787s redirect. Typically this won't need to be set because urllib3 will 787s auto-populate the value when needed. 787s """ 787s parsed_url = parse_url(url) 787s destination_scheme = parsed_url.scheme 787s 787s if headers is None: 787s headers = self.headers 787s 787s if not isinstance(retries, Retry): 787s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 787s 787s if release_conn is None: 787s release_conn = preload_content 787s 787s # Check host 787s if assert_same_host and not self.is_same_host(url): 787s raise HostChangedError(self, url, retries) 787s 787s # Ensure that the URL we're connecting to is properly encoded 787s if url.startswith("/"): 787s url = to_str(_encode_target(url)) 787s else: 787s url = to_str(parsed_url.url) 787s 787s conn = None 787s 787s # Track whether `conn` needs to be released before 787s # returning/raising/recursing. Update this variable if necessary, and 787s # leave `release_conn` constant throughout the function. That way, if 787s # the function recurses, the original value of `release_conn` will be 787s # passed down into the recursive call, and its value will be respected. 787s # 787s # See issue #651 [1] for details. 787s # 787s # [1] 787s release_this_conn = release_conn 787s 787s http_tunnel_required = connection_requires_http_tunnel( 787s self.proxy, self.proxy_config, destination_scheme 787s ) 787s 787s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 787s # have to copy the headers dict so we can safely change it without those 787s # changes being reflected in anyone else's copy. 787s if not http_tunnel_required: 787s headers = headers.copy() # type: ignore[attr-defined] 787s headers.update(self.proxy_headers) # type: ignore[union-attr] 787s 787s # Must keep the exception bound to a separate variable or else Python 3 787s # complains about UnboundLocalError. 787s err = None 787s 787s # Keep track of whether we cleanly exited the except block. This 787s # ensures we do proper cleanup in finally. 787s clean_exit = False 787s 787s # Rewind body position, if needed. Record current position 787s # for future rewinds in the event of a redirect/retry. 787s body_pos = set_file_position(body, body_pos) 787s 787s try: 787s # Request a connection from the queue. 787s timeout_obj = self._get_timeout(timeout) 787s conn = self._get_conn(timeout=pool_timeout) 787s 787s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 787s 787s # Is this a closed/new connection that requires CONNECT tunnelling? 787s if self.proxy is not None and http_tunnel_required and conn.is_closed: 787s try: 787s self._prepare_proxy(conn) 787s except (BaseSSLError, OSError, SocketTimeout) as e: 787s self._raise_timeout( 787s err=e, url=self.proxy.url, timeout_value=conn.timeout 787s ) 787s raise 787s 787s # If we're going to release the connection in ``finally:``, then 787s # the response doesn't need to know about the connection. Otherwise 787s # it will also try to release it and we'll have a double-release 787s # mess. 787s response_conn = conn if not release_conn else None 787s 787s # Make the request on the HTTPConnection object 787s > response = self._make_request( 787s conn, 787s method, 787s url, 787s timeout=timeout_obj, 787s body=body, 787s headers=headers, 787s chunked=chunked, 787s retries=retries, 787s response_conn=response_conn, 787s preload_content=preload_content, 787s decode_content=decode_content, 787s **response_kw, 787s ) 787s 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 787s raise new_e 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 787s self._validate_conn(conn) 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 787s conn.connect() 787s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 787s self.sock = sock = self._new_conn() 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s 787s def _new_conn(self) -> socket.socket: 787s """Establish a socket connection and set nodelay settings on it. 787s 787s :return: New socket connection. 787s """ 787s try: 787s sock = connection.create_connection( 787s (self._dns_host, self.port), 787s self.timeout, 787s source_address=self.source_address, 787s socket_options=self.socket_options, 787s ) 787s except socket.gaierror as e: 787s raise NameResolutionError(self.host, self, e) from e 787s except SocketTimeout as e: 787s raise ConnectTimeoutError( 787s self, 787s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 787s ) from e 787s 787s except OSError as e: 787s > raise NewConnectionError( 787s self, f"Failed to establish a new connection: {e}" 787s ) from e 787s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 787s 787s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 787s 787s The above exception was the direct cause of the following exception: 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s > resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:667: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 787s retries = retries.increment( 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 787s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 787s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 787s _pool = 787s _stacktrace = 787s 787s def increment( 787s self, 787s method: str | None = None, 787s url: str | None = None, 787s response: BaseHTTPResponse | None = None, 787s error: Exception | None = None, 787s _pool: ConnectionPool | None = None, 787s _stacktrace: TracebackType | None = None, 787s ) -> Retry: 787s """Return a new Retry object with incremented retry counters. 787s 787s :param response: A response object, or None, if the server did not 787s return a response. 787s :type response: :class:`~urllib3.response.BaseHTTPResponse` 787s :param Exception error: An error encountered during the request, or 787s None if the response was received successfully. 787s 787s :return: A new ``Retry`` object. 787s """ 787s if self.total is False and error: 787s # Disabled, indicate to re-raise the error. 787s raise reraise(type(error), error, _stacktrace) 787s 787s total = self.total 787s if total is not None: 787s total -= 1 787s 787s connect = self.connect 787s read = self.read 787s redirect = self.redirect 787s status_count = self.status 787s other = self.other 787s cause = "unknown" 787s status = None 787s redirect_location = None 787s 787s if error and self._is_connection_error(error): 787s # Connect retry? 787s if connect is False: 787s raise reraise(type(error), error, _stacktrace) 787s elif connect is not None: 787s connect -= 1 787s 787s elif error and self._is_read_error(error): 787s # Read retry? 787s if read is False or method is None or not self._is_method_retryable(method): 787s raise reraise(type(error), error, _stacktrace) 787s elif read is not None: 787s read -= 1 787s 787s elif error: 787s # Other retry? 787s if other is not None: 787s other -= 1 787s 787s elif response and response.get_redirect_location(): 787s # Redirect retry? 787s if redirect is not None: 787s redirect -= 1 787s cause = "too many redirects" 787s response_redirect_location = response.get_redirect_location() 787s if response_redirect_location: 787s redirect_location = response_redirect_location 787s status = response.status 787s 787s else: 787s # Incrementing because of a server error like a 500 in 787s # status_forcelist and the given method is in the allowed_methods 787s cause = ResponseError.GENERIC_ERROR 787s if response and response.status: 787s if status_count is not None: 787s status_count -= 1 787s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 787s status = response.status 787s 787s history = self.history + ( 787s RequestHistory(method, url, error, status, redirect_location), 787s ) 787s 787s new_retry = self.new( 787s total=total, 787s connect=connect, 787s read=read, 787s redirect=redirect, 787s status=status_count, 787s other=other, 787s history=history, 787s ) 787s 787s if new_retry.is_exhausted(): 787s reason = error or ResponseError(cause) 787s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 787s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 787s 787s During handling of the above exception, another exception occurred: 787s 787s def test_encoding_for_model(): 787s > enc = tiktoken.encoding_for_model("gpt2") 787s 787s tests/test_simple_public.py:26: 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 787s return get_encoding(encoding_name_for_model(model_name)) 787s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 787s enc = Encoding(**constructor()) 787s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 787s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 787s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 787s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 787s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 787s contents = read_file(blobpath) 787s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 787s resp = requests.get(blobpath) 787s /usr/lib/python3/dist-packages/requests/api.py:73: in get 787s return request("get", url, params=params, **kwargs) 787s /usr/lib/python3/dist-packages/requests/api.py:59: in request 787s return session.request(method=method, url=url, **kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 787s resp = self.send(prep, **send_kwargs) 787s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 787s r = adapter.send(request, **kwargs) 787s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 787s 787s self = 787s request = , stream = False 787s timeout = Timeout(connect=None, read=None, total=None), verify = True 787s cert = None, proxies = OrderedDict() 787s 787s def send( 787s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 787s ): 787s """Sends PreparedRequest object. Returns Response object. 787s 787s :param request: The :class:`PreparedRequest ` being sent. 787s :param stream: (optional) Whether to stream the request content. 787s :param timeout: (optional) How long to wait for the server to send 787s data before giving up, as a float, or a :ref:`(connect timeout, 787s read timeout) ` tuple. 787s :type timeout: float or tuple or urllib3 Timeout object 787s :param verify: (optional) Either a boolean, in which case it controls whether 787s we verify the server's TLS certificate, or a string, in which case it 787s must be a path to a CA bundle to use 787s :param cert: (optional) Any user-provided SSL certificate to be trusted. 787s :param proxies: (optional) The proxies dictionary to apply to the request. 787s :rtype: requests.Response 787s """ 787s 787s try: 787s conn = self.get_connection_with_tls_context( 787s request, verify, proxies=proxies, cert=cert 787s ) 787s except LocationValueError as e: 787s raise InvalidURL(e, request=request) 787s 787s self.cert_verify(conn, request.url, verify, cert) 787s url = self.request_url(request, proxies) 787s self.add_headers( 787s request, 787s stream=stream, 787s timeout=timeout, 787s verify=verify, 787s cert=cert, 787s proxies=proxies, 787s ) 787s 787s chunked = not (request.body is None or "Content-Length" in request.headers) 787s 787s if isinstance(timeout, tuple): 787s try: 787s connect, read = timeout 787s timeout = TimeoutSauce(connect=connect, read=read) 787s except ValueError: 787s raise ValueError( 787s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 787s f"or a single float to set both timeouts to the same value." 787s ) 787s elif isinstance(timeout, TimeoutSauce): 787s pass 787s else: 787s timeout = TimeoutSauce(connect=timeout, read=timeout) 787s 787s try: 787s resp = conn.urlopen( 787s method=request.method, 787s url=url, 787s body=request.body, 787s headers=request.headers, 787s redirect=False, 787s assert_same_host=False, 787s preload_content=False, 787s decode_content=False, 787s retries=self.max_retries, 787s timeout=timeout, 787s chunked=chunked, 787s ) 787s 787s except (ProtocolError, OSError) as err: 787s raise ConnectionError(err, request=request) 787s 787s except MaxRetryError as e: 787s if isinstance(e.reason, ConnectTimeoutError): 787s # TODO: Remove this in 3.0.0: see #2811 787s if not isinstance(e.reason, NewConnectionError): 787s raise ConnectTimeout(e, request=request) 787s 787s if isinstance(e.reason, ResponseError): 787s raise RetryError(e, request=request) 787s 787s if isinstance(e.reason, _ProxyError): 787s raise ProxyError(e, request=request) 787s 787s if isinstance(e.reason, _SSLError): 787s # This branch is for urllib3 v1.22 and later. 787s raise SSLError(e, request=request) 787s 787s > raise ConnectionError(e, request=request) 787s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 787s 787s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 787s =========================== short test summary info ============================ 787s FAILED tests/test_encoding.py::test_simple - requests.exceptions.ConnectionEr... 787s FAILED tests/test_encoding.py::test_simple_repeated - requests.exceptions.Con... 787s FAILED tests/test_encoding.py::test_simple_regex - requests.exceptions.Connec... 787s FAILED tests/test_encoding.py::test_basic_encode - requests.exceptions.Connec... 787s FAILED tests/test_encoding.py::test_encode_empty - requests.exceptions.Connec... 787s FAILED tests/test_encoding.py::test_encode_bytes - requests.exceptions.Connec... 787s FAILED tests/test_encoding.py::test_encode_surrogate_pairs - requests.excepti... 787s FAILED tests/test_encoding.py::test_catastrophically_repetitive[r50k_base] - ... 787s FAILED tests/test_encoding.py::test_catastrophically_repetitive[cl100k_base] 787s FAILED tests/test_encoding.py::test_basic_roundtrip[r50k_base] - requests.exc... 787s FAILED tests/test_encoding.py::test_basic_roundtrip[cl100k_base] - requests.e... 787s FAILED tests/test_encoding.py::test_hyp_roundtrip[r50k_base] - requests.excep... 787s FAILED tests/test_encoding.py::test_hyp_roundtrip[cl100k_base] - requests.exc... 787s FAILED tests/test_encoding.py::test_single_token_roundtrip[r50k_base] - reque... 787s FAILED tests/test_encoding.py::test_single_token_roundtrip[cl100k_base] - req... 787s FAILED tests/test_encoding.py::test_special_token - requests.exceptions.Conne... 787s FAILED tests/test_encoding.py::test_hyp_special_ordinary[r50k_base] - request... 787s FAILED tests/test_encoding.py::test_hyp_special_ordinary[cl100k_base] - reque... 787s FAILED tests/test_encoding.py::test_batch_encode[r50k_base] - requests.except... 787s FAILED tests/test_encoding.py::test_batch_encode[cl100k_base] - requests.exce... 787s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[r50k_base] - requests... 787s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[cl100k_base] - reques... 787s FAILED tests/test_misc.py::test_encoding_for_model - requests.exceptions.Conn... 787s FAILED tests/test_offsets.py::test_hyp_offsets[cl100k_base] - requests.except... 787s FAILED tests/test_offsets.py::test_basic_offsets - requests.exceptions.Connec... 787s FAILED tests/test_pickle.py::test_pickle - requests.exceptions.ConnectionErro... 787s FAILED tests/test_simple_public.py::test_simple - requests.exceptions.Connect... 787s FAILED tests/test_simple_public.py::test_encoding_for_model - requests.except... 787s =================== 28 failed, 2 passed in 581.58s (0:09:41) =================== 787s ============================= test session starts ============================== 787s platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0 787s rootdir: /tmp/autopkgtest.YA0KYX/autopkgtest_tmp/build 787s configfile: pyproject.toml 787s plugins: typeguard-4.4.1, hypothesis-6.119.3 787s collected 30 items 787s 815s tests/test_encoding.py FFFFFFFFFFFFFFFFFFFFFF [ 73%] 816s tests/test_misc.py F. [ 80%] 818s tests/test_offsets.py FF [ 86%] 819s tests/test_pickle.py F [ 90%] 822s tests/test_simple_public.py FF. [100%] 822s 822s =================================== FAILURES =================================== 822s _________________________________ test_simple __________________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s def test_simple(): 822s > enc = tiktoken.get_encoding("gpt2") 822s 822s tests/test_encoding.py:15: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 822s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 822s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s _____________________________ test_simple_repeated _____________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s def test_simple_repeated(): 822s > enc = tiktoken.get_encoding("gpt2") 822s 822s tests/test_encoding.py:32: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 822s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 822s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ______________________________ test_simple_regex _______________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s def test_simple_regex(): 822s > enc = tiktoken.get_encoding("cl100k_base") 822s 822s tests/test_encoding.py:53: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ______________________________ test_basic_encode _______________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s def test_basic_encode(): 822s > enc = tiktoken.get_encoding("r50k_base") 822s 822s tests/test_encoding.py:62: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ______________________________ test_encode_empty _______________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s def test_encode_empty(): 822s > enc = tiktoken.get_encoding("r50k_base") 822s 822s tests/test_encoding.py:74: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ______________________________ test_encode_bytes _______________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s def test_encode_bytes(): 822s > enc = tiktoken.get_encoding("cl100k_base") 822s 822s tests/test_encoding.py:79: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s _________________________ test_encode_surrogate_pairs __________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s def test_encode_surrogate_pairs(): 822s > enc = tiktoken.get_encoding("cl100k_base") 822s 822s tests/test_encoding.py:84: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s _________________ test_catastrophically_repetitive[r50k_base] __________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'r50k_base') 822s 822s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 822s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 822s > enc = make_enc() 822s 822s tests/test_encoding.py:96: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ________________ test_catastrophically_repetitive[cl100k_base] _________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'cl100k_base') 822s 822s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 822s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 822s > enc = make_enc() 822s 822s tests/test_encoding.py:96: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s _______________________ test_basic_roundtrip[r50k_base] ________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'r50k_base') 822s 822s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 822s def test_basic_roundtrip(make_enc): 822s > enc = make_enc() 822s 822s tests/test_encoding.py:115: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ______________________ test_basic_roundtrip[cl100k_base] _______________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'cl100k_base') 822s 822s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 822s def test_basic_roundtrip(make_enc): 822s > enc = make_enc() 822s 822s tests/test_encoding.py:115: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ________________________ test_hyp_roundtrip[r50k_base] _________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'r50k_base') 822s 822s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 822s > @hypothesis.given(text=st.text()) 822s 822s tests/test_encoding.py:131: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s tests/test_encoding.py:134: in test_hyp_roundtrip 822s enc = make_enc() 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s E Falsifying example: test_hyp_roundtrip( 822s E make_enc=functools.partial(get_encoding, 'r50k_base'), 822s E text='', 822s E ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s _______________________ test_hyp_roundtrip[cl100k_base] ________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'cl100k_base') 822s 822s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 822s > @hypothesis.given(text=st.text()) 822s 822s tests/test_encoding.py:131: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s tests/test_encoding.py:134: in test_hyp_roundtrip 822s enc = make_enc() 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s E Falsifying example: test_hyp_roundtrip( 822s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 822s E text='', 822s E ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ____________________ test_single_token_roundtrip[r50k_base] ____________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'r50k_base') 822s 822s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 822s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 822s > enc = make_enc() 822s 822s tests/test_encoding.py:141: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ___________________ test_single_token_roundtrip[cl100k_base] ___________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'cl100k_base') 822s 822s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 822s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 822s > enc = make_enc() 822s 822s tests/test_encoding.py:141: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ______________________________ test_special_token ______________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s def test_special_token(): 822s > enc = tiktoken.get_encoding("cl100k_base") 822s 822s tests/test_encoding.py:157: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s _____________________ test_hyp_special_ordinary[r50k_base] _____________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'r50k_base') 822s 822s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 822s > @hypothesis.given(text=st.text()) 822s 822s tests/test_encoding.py:208: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s tests/test_encoding.py:211: in test_hyp_special_ordinary 822s enc = make_enc() 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s E Falsifying example: test_hyp_special_ordinary( 822s E make_enc=functools.partial(get_encoding, 'r50k_base'), 822s E text='', 822s E ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ____________________ test_hyp_special_ordinary[cl100k_base] ____________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'cl100k_base') 822s 822s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 822s > @hypothesis.given(text=st.text()) 822s 822s tests/test_encoding.py:208: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s tests/test_encoding.py:211: in test_hyp_special_ordinary 822s enc = make_enc() 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s E Falsifying example: test_hyp_special_ordinary( 822s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 822s E text='', 822s E ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s _________________________ test_batch_encode[r50k_base] _________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'r50k_base') 822s 822s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 822s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 822s > enc = make_enc() 822s 822s tests/test_encoding.py:222: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ________________________ test_batch_encode[cl100k_base] ________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'cl100k_base') 822s 822s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 822s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 822s > enc = make_enc() 822s 822s tests/test_encoding.py:222: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s _____________________ test_hyp_batch_roundtrip[r50k_base] ______________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'r50k_base') 822s 822s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 822s > @hypothesis.given(batch=st.lists(st.text())) 822s 822s tests/test_encoding.py:237: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 822s enc = make_enc() 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s E Falsifying example: test_hyp_batch_roundtrip( 822s E make_enc=functools.partial(get_encoding, 'r50k_base'), 822s E batch=[], 822s E ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ____________________ test_hyp_batch_roundtrip[cl100k_base] _____________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'cl100k_base') 822s 822s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 822s > @hypothesis.given(batch=st.lists(st.text())) 822s 822s tests/test_encoding.py:237: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 822s enc = make_enc() 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s E Falsifying example: test_hyp_batch_roundtrip( 822s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 822s E batch=[], 822s E ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ___________________________ test_encoding_for_model ____________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s def test_encoding_for_model(): 822s > enc = tiktoken.encoding_for_model("gpt2") 822s 822s tests/test_misc.py:8: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 822s return get_encoding(encoding_name_for_model(model_name)) 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 822s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 822s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ________________________ test_hyp_offsets[cl100k_base] _________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s make_enc = functools.partial(, 'cl100k_base') 822s 822s @pytest.mark.parametrize("make_enc", SOME_ENCODING_FACTORIES) 822s > @hypothesis.given(data=st.data()) 822s 822s tests/test_offsets.py:29: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s tests/test_offsets.py:32: in test_hyp_offsets 822s enc = make_enc() 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s E Falsifying example: test_hyp_offsets( 822s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 822s E data=data(...), 822s E ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ______________________________ test_basic_offsets ______________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s def test_basic_offsets(): 822s > enc = tiktoken.get_encoding("cl100k_base") 822s 822s tests/test_offsets.py:50: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s _________________________________ test_pickle __________________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s def test_pickle(): 822s import pickle 822s 822s > enc_old = tiktoken.get_encoding("r50k_base") 822s 822s tests/test_pickle.py:7: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 822s mergeable_ranks = load_tiktoken_bpe( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 822s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/r50k_base.tiktoken (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s _________________________________ test_simple __________________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted(): 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s def test_simple(): 822s # Note that there are more actual tests, they're just not currently public :-) 822s > enc = tiktoken.get_encoding("gpt2") 822s 822s tests/test_simple_public.py:9: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 822s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 822s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s ___________________________ test_encoding_for_model ____________________________ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s > sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 822s raise err 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 822s source_address = None, socket_options = [(6, 1, 1)] 822s 822s def create_connection( 822s address: tuple[str, int], 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s source_address: tuple[str, int] | None = None, 822s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 822s ) -> socket.socket: 822s """Connect to *address* and return the socket object. 822s 822s Convenience function. Connect to *address* (a 2-tuple ``(host, 822s port)``) and return the socket object. Passing the optional 822s *timeout* parameter will set the timeout on the socket instance 822s before attempting to connect. If no *timeout* is supplied, the 822s global default timeout setting returned by :func:`socket.getdefaulttimeout` 822s is used. If *source_address* is set it must be a tuple of (host, port) 822s for the socket to bind as a source address before making the connection. 822s An host of '' or port 0 tells the OS to use the default. 822s """ 822s 822s host, port = address 822s if host.startswith("["): 822s host = host.strip("[]") 822s err = None 822s 822s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 822s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 822s # The original create_connection function always returns all records. 822s family = allowed_gai_family() 822s 822s try: 822s host.encode("idna") 822s except UnicodeError: 822s raise LocationParseError(f"'{host}', label empty or too long") from None 822s 822s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 822s af, socktype, proto, canonname, sa = res 822s sock = None 822s try: 822s sock = socket.socket(af, socktype, proto) 822s 822s # If provided, set socket level options before connecting. 822s _set_socket_options(sock, socket_options) 822s 822s if timeout is not _DEFAULT_TIMEOUT: 822s sock.settimeout(timeout) 822s if source_address: 822s sock.bind(source_address) 822s > sock.connect(sa) 822s E ConnectionRefusedError: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 822s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 822s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s redirect = False, assert_same_host = False 822s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 822s release_conn = False, chunked = False, body_pos = None, preload_content = False 822s decode_content = False, response_kw = {} 822s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 822s destination_scheme = None, conn = None, release_this_conn = True 822s http_tunnel_required = False, err = None, clean_exit = False 822s 822s def urlopen( # type: ignore[override] 822s self, 822s method: str, 822s url: str, 822s body: _TYPE_BODY | None = None, 822s headers: typing.Mapping[str, str] | None = None, 822s retries: Retry | bool | int | None = None, 822s redirect: bool = True, 822s assert_same_host: bool = True, 822s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 822s pool_timeout: int | None = None, 822s release_conn: bool | None = None, 822s chunked: bool = False, 822s body_pos: _TYPE_BODY_POSITION | None = None, 822s preload_content: bool = True, 822s decode_content: bool = True, 822s **response_kw: typing.Any, 822s ) -> BaseHTTPResponse: 822s """ 822s Get a connection from the pool and perform an HTTP request. This is the 822s lowest level call for making a request, so you'll need to specify all 822s the raw details. 822s 822s .. note:: 822s 822s More commonly, it's appropriate to use a convenience method 822s such as :meth:`request`. 822s 822s .. note:: 822s 822s `release_conn` will only behave as expected if 822s `preload_content=False` because we want to make 822s `preload_content=False` the default behaviour someday soon without 822s breaking backwards compatibility. 822s 822s :param method: 822s HTTP request method (such as GET, POST, PUT, etc.) 822s 822s :param url: 822s The URL to perform the request on. 822s 822s :param body: 822s Data to send in the request body, either :class:`str`, :class:`bytes`, 822s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 822s 822s :param headers: 822s Dictionary of custom headers to send, such as User-Agent, 822s If-None-Match, etc. If None, pool headers are used. If provided, 822s these headers completely replace any pool-specific headers. 822s 822s :param retries: 822s Configure the number of retries to allow before raising a 822s :class:`~urllib3.exceptions.MaxRetryError` exception. 822s 822s Pass ``None`` to retry until you receive a response. Pass a 822s :class:`~urllib3.util.retry.Retry` object for fine-grained control 822s over different types of retries. 822s Pass an integer number to retry connection errors that many times, 822s but no other types of errors. Pass zero to never retry. 822s 822s If ``False``, then retries are disabled and any exception is raised 822s immediately. Also, instead of raising a MaxRetryError on redirects, 822s the redirect response will be returned. 822s 822s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 822s 822s :param redirect: 822s If True, automatically handle redirects (status codes 301, 302, 822s 303, 307, 308). Each redirect counts as a retry. Disabling retries 822s will disable redirect, too. 822s 822s :param assert_same_host: 822s If ``True``, will make sure that the host of the pool requests is 822s consistent else will raise HostChangedError. When ``False``, you can 822s use the pool on an HTTP proxy and request foreign hosts. 822s 822s :param timeout: 822s If specified, overrides the default timeout for this one 822s request. It may be a float (in seconds) or an instance of 822s :class:`urllib3.util.Timeout`. 822s 822s :param pool_timeout: 822s If set and the pool is set to block=True, then this method will 822s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 822s connection is available within the time period. 822s 822s :param bool preload_content: 822s If True, the response's body will be preloaded into memory. 822s 822s :param bool decode_content: 822s If True, will attempt to decode the body based on the 822s 'content-encoding' header. 822s 822s :param release_conn: 822s If False, then the urlopen call will not release the connection 822s back into the pool once a response is received (but will release if 822s you read the entire contents of the response such as when 822s `preload_content=True`). This is useful if you're not preloading 822s the response's content immediately. You will need to call 822s ``r.release_conn()`` on the response ``r`` to return the connection 822s back into the pool. If None, it takes the value of ``preload_content`` 822s which defaults to ``True``. 822s 822s :param bool chunked: 822s If True, urllib3 will send the body using chunked transfer 822s encoding. Otherwise, urllib3 will send the body using the standard 822s content-length form. Defaults to False. 822s 822s :param int body_pos: 822s Position to seek to in file-like body in the event of a retry or 822s redirect. Typically this won't need to be set because urllib3 will 822s auto-populate the value when needed. 822s """ 822s parsed_url = parse_url(url) 822s destination_scheme = parsed_url.scheme 822s 822s if headers is None: 822s headers = self.headers 822s 822s if not isinstance(retries, Retry): 822s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 822s 822s if release_conn is None: 822s release_conn = preload_content 822s 822s # Check host 822s if assert_same_host and not self.is_same_host(url): 822s raise HostChangedError(self, url, retries) 822s 822s # Ensure that the URL we're connecting to is properly encoded 822s if url.startswith("/"): 822s url = to_str(_encode_target(url)) 822s else: 822s url = to_str(parsed_url.url) 822s 822s conn = None 822s 822s # Track whether `conn` needs to be released before 822s # returning/raising/recursing. Update this variable if necessary, and 822s # leave `release_conn` constant throughout the function. That way, if 822s # the function recurses, the original value of `release_conn` will be 822s # passed down into the recursive call, and its value will be respected. 822s # 822s # See issue #651 [1] for details. 822s # 822s # [1] 822s release_this_conn = release_conn 822s 822s http_tunnel_required = connection_requires_http_tunnel( 822s self.proxy, self.proxy_config, destination_scheme 822s ) 822s 822s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 822s # have to copy the headers dict so we can safely change it without those 822s # changes being reflected in anyone else's copy. 822s if not http_tunnel_required: 822s headers = headers.copy() # type: ignore[attr-defined] 822s headers.update(self.proxy_headers) # type: ignore[union-attr] 822s 822s # Must keep the exception bound to a separate variable or else Python 3 822s # complains about UnboundLocalError. 822s err = None 822s 822s # Keep track of whether we cleanly exited the except block. This 822s # ensures we do proper cleanup in finally. 822s clean_exit = False 822s 822s # Rewind body position, if needed. Record current position 822s # for future rewinds in the event of a redirect/retry. 822s body_pos = set_file_position(body, body_pos) 822s 822s try: 822s # Request a connection from the queue. 822s timeout_obj = self._get_timeout(timeout) 822s conn = self._get_conn(timeout=pool_timeout) 822s 822s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 822s 822s # Is this a closed/new connection that requires CONNECT tunnelling? 822s if self.proxy is not None and http_tunnel_required and conn.is_closed: 822s try: 822s self._prepare_proxy(conn) 822s except (BaseSSLError, OSError, SocketTimeout) as e: 822s self._raise_timeout( 822s err=e, url=self.proxy.url, timeout_value=conn.timeout 822s ) 822s raise 822s 822s # If we're going to release the connection in ``finally:``, then 822s # the response doesn't need to know about the connection. Otherwise 822s # it will also try to release it and we'll have a double-release 822s # mess. 822s response_conn = conn if not release_conn else None 822s 822s # Make the request on the HTTPConnection object 822s > response = self._make_request( 822s conn, 822s method, 822s url, 822s timeout=timeout_obj, 822s body=body, 822s headers=headers, 822s chunked=chunked, 822s retries=retries, 822s response_conn=response_conn, 822s preload_content=preload_content, 822s decode_content=decode_content, 822s **response_kw, 822s ) 822s 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 822s raise new_e 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 822s self._validate_conn(conn) 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 822s conn.connect() 822s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 822s self.sock = sock = self._new_conn() 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s 822s def _new_conn(self) -> socket.socket: 822s """Establish a socket connection and set nodelay settings on it. 822s 822s :return: New socket connection. 822s """ 822s try: 822s sock = connection.create_connection( 822s (self._dns_host, self.port), 822s self.timeout, 822s source_address=self.source_address, 822s socket_options=self.socket_options, 822s ) 822s except socket.gaierror as e: 822s raise NameResolutionError(self.host, self, e) from e 822s except SocketTimeout as e: 822s raise ConnectTimeoutError( 822s self, 822s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 822s ) from e 822s 822s except OSError as e: 822s > raise NewConnectionError( 822s self, f"Failed to establish a new connection: {e}" 822s ) from e 822s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 822s 822s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 822s 822s The above exception was the direct cause of the following exception: 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s > resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:667: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 822s retries = retries.increment( 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 822s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 822s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 822s _pool = 822s _stacktrace = 822s 822s def increment( 822s self, 822s method: str | None = None, 822s url: str | None = None, 822s response: BaseHTTPResponse | None = None, 822s error: Exception | None = None, 822s _pool: ConnectionPool | None = None, 822s _stacktrace: TracebackType | None = None, 822s ) -> Retry: 822s """Return a new Retry object with incremented retry counters. 822s 822s :param response: A response object, or None, if the server did not 822s return a response. 822s :type response: :class:`~urllib3.response.BaseHTTPResponse` 822s :param Exception error: An error encountered during the request, or 822s None if the response was received successfully. 822s 822s :return: A new ``Retry`` object. 822s """ 822s if self.total is False and error: 822s # Disabled, indicate to re-raise the error. 822s raise reraise(type(error), error, _stacktrace) 822s 822s total = self.total 822s if total is not None: 822s total -= 1 822s 822s connect = self.connect 822s read = self.read 822s redirect = self.redirect 822s status_count = self.status 822s other = self.other 822s cause = "unknown" 822s status = None 822s redirect_location = None 822s 822s if error and self._is_connection_error(error): 822s # Connect retry? 822s if connect is False: 822s raise reraise(type(error), error, _stacktrace) 822s elif connect is not None: 822s connect -= 1 822s 822s elif error and self._is_read_error(error): 822s # Read retry? 822s if read is False or method is None or not self._is_method_retryable(method): 822s raise reraise(type(error), error, _stacktrace) 822s elif read is not None: 822s read -= 1 822s 822s elif error: 822s # Other retry? 822s if other is not None: 822s other -= 1 822s 822s elif response and response.get_redirect_location(): 822s # Redirect retry? 822s if redirect is not None: 822s redirect -= 1 822s cause = "too many redirects" 822s response_redirect_location = response.get_redirect_location() 822s if response_redirect_location: 822s redirect_location = response_redirect_location 822s status = response.status 822s 822s else: 822s # Incrementing because of a server error like a 500 in 822s # status_forcelist and the given method is in the allowed_methods 822s cause = ResponseError.GENERIC_ERROR 822s if response and response.status: 822s if status_count is not None: 822s status_count -= 1 822s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 822s status = response.status 822s 822s history = self.history + ( 822s RequestHistory(method, url, error, status, redirect_location), 822s ) 822s 822s new_retry = self.new( 822s total=total, 822s connect=connect, 822s read=read, 822s redirect=redirect, 822s status=status_count, 822s other=other, 822s history=history, 822s ) 822s 822s if new_retry.is_exhausted():E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.YA0KYX/autopkgtest_tmp/build; python3.12 -m pytest tests 822s pybuild-autopkgtest: error: pybuild --autopkgtest --test-pytest -i python{version} -p "3.13 3.12" returned exit code 13 822s make: *** [/tmp/HLPfBkEaOz/run:4: pybuild-autopkgtest] Error 25 822s pybuild-autopkgtest: error: /tmp/HLPfBkEaOz/run pybuild-autopkgtest returned exit code 2 822s 822s reason = error or ResponseError(cause) 822s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 822s E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 822s 822s During handling of the above exception, another exception occurred: 822s 822s def test_encoding_for_model(): 822s > enc = tiktoken.encoding_for_model("gpt2") 822s 822s tests/test_simple_public.py:26: 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 822s return get_encoding(encoding_name_for_model(model_name)) 822s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 822s enc = Encoding(**constructor()) 822s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 822s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 822s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 822s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 822s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 822s contents = read_file(blobpath) 822s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 822s resp = requests.get(blobpath) 822s /usr/lib/python3/dist-packages/requests/api.py:73: in get 822s return request("get", url, params=params, **kwargs) 822s /usr/lib/python3/dist-packages/requests/api.py:59: in request 822s return session.request(method=method, url=url, **kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 822s resp = self.send(prep, **send_kwargs) 822s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 822s r = adapter.send(request, **kwargs) 822s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 822s 822s self = 822s request = , stream = False 822s timeout = Timeout(connect=None, read=None, total=None), verify = True 822s cert = None, proxies = OrderedDict() 822s 822s def send( 822s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 822s ): 822s """Sends PreparedRequest object. Returns Response object. 822s 822s :param request: The :class:`PreparedRequest ` being sent. 822s :param stream: (optional) Whether to stream the request content. 822s :param timeout: (optional) How long to wait for the server to send 822s data before giving up, as a float, or a :ref:`(connect timeout, 822s read timeout) ` tuple. 822s :type timeout: float or tuple or urllib3 Timeout object 822s :param verify: (optional) Either a boolean, in which case it controls whether 822s we verify the server's TLS certificate, or a string, in which case it 822s must be a path to a CA bundle to use 822s :param cert: (optional) Any user-provided SSL certificate to be trusted. 822s :param proxies: (optional) The proxies dictionary to apply to the request. 822s :rtype: requests.Response 822s """ 822s 822s try: 822s conn = self.get_connection_with_tls_context( 822s request, verify, proxies=proxies, cert=cert 822s ) 822s except LocationValueError as e: 822s raise InvalidURL(e, request=request) 822s 822s self.cert_verify(conn, request.url, verify, cert) 822s url = self.request_url(request, proxies) 822s self.add_headers( 822s request, 822s stream=stream, 822s timeout=timeout, 822s verify=verify, 822s cert=cert, 822s proxies=proxies, 822s ) 822s 822s chunked = not (request.body is None or "Content-Length" in request.headers) 822s 822s if isinstance(timeout, tuple): 822s try: 822s connect, read = timeout 822s timeout = TimeoutSauce(connect=connect, read=read) 822s except ValueError: 822s raise ValueError( 822s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 822s f"or a single float to set both timeouts to the same value." 822s ) 822s elif isinstance(timeout, TimeoutSauce): 822s pass 822s else: 822s timeout = TimeoutSauce(connect=timeout, read=timeout) 822s 822s try: 822s resp = conn.urlopen( 822s method=request.method, 822s url=url, 822s body=request.body, 822s headers=request.headers, 822s redirect=False, 822s assert_same_host=False, 822s preload_content=False, 822s decode_content=False, 822s retries=self.max_retries, 822s timeout=timeout, 822s chunked=chunked, 822s ) 822s 822s except (ProtocolError, OSError) as err: 822s raise ConnectionError(err, request=request) 822s 822s except MaxRetryError as e: 822s if isinstance(e.reason, ConnectTimeoutError): 822s # TODO: Remove this in 3.0.0: see #2811 822s if not isinstance(e.reason, NewConnectionError): 822s raise ConnectTimeout(e, request=request) 822s 822s if isinstance(e.reason, ResponseError): 822s raise RetryError(e, request=request) 822s 822s if isinstance(e.reason, _ProxyError): 822s raise ProxyError(e, request=request) 822s 822s if isinstance(e.reason, _SSLError): 822s # This branch is for urllib3 v1.22 and later. 822s raise SSLError(e, request=request) 822s 822s > raise ConnectionError(e, request=request) 822s E requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 822s 822s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 822s =========================== short test summary info ============================ 822s FAILED tests/test_encoding.py::test_simple - requests.exceptions.ConnectionEr... 822s FAILED tests/test_encoding.py::test_simple_repeated - requests.exceptions.Con... 822s FAILED tests/test_encoding.py::test_simple_regex - requests.exceptions.Connec... 822s FAILED tests/test_encoding.py::test_basic_encode - requests.exceptions.Connec... 822s FAILED tests/test_encoding.py::test_encode_empty - requests.exceptions.Connec... 822s FAILED tests/test_encoding.py::test_encode_bytes - requests.exceptions.Connec... 822s FAILED tests/test_encoding.py::test_encode_surrogate_pairs - requests.excepti... 822s FAILED tests/test_encoding.py::test_catastrophically_repetitive[r50k_base] - ... 822s FAILED tests/test_encoding.py::test_catastrophically_repetitive[cl100k_base] 822s FAILED tests/test_encoding.py::test_basic_roundtrip[r50k_base] - requests.exc... 822s FAILED tests/test_encoding.py::test_basic_roundtrip[cl100k_base] - requests.e... 822s FAILED tests/test_encoding.py::test_hyp_roundtrip[r50k_base] - requests.excep... 822s FAILED tests/test_encoding.py::test_hyp_roundtrip[cl100k_base] - requests.exc... 822s FAILED tests/test_encoding.py::test_single_token_roundtrip[r50k_base] - reque... 822s FAILED tests/test_encoding.py::test_single_token_roundtrip[cl100k_base] - req... 822s FAILED tests/test_encoding.py::test_special_token - requests.exceptions.Conne... 822s FAILED tests/test_encoding.py::test_hyp_special_ordinary[r50k_base] - request... 822s FAILED tests/test_encoding.py::test_hyp_special_ordinary[cl100k_base] - reque... 822s FAILED tests/test_encoding.py::test_batch_encode[r50k_base] - requests.except... 822s FAILED tests/test_encoding.py::test_batch_encode[cl100k_base] - requests.exce... 822s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[r50k_base] - requests... 822s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[cl100k_base] - reques... 822s FAILED tests/test_misc.py::test_encoding_for_model - requests.exceptions.Conn... 822s FAILED tests/test_offsets.py::test_hyp_offsets[cl100k_base] - requests.except... 822s FAILED tests/test_offsets.py::test_basic_offsets - requests.exceptions.Connec... 822s FAILED tests/test_pickle.py::test_pickle - requests.exceptions.ConnectionErro... 822s FAILED tests/test_simple_public.py::test_simple - requests.exceptions.Connect... 822s FAILED tests/test_simple_public.py::test_encoding_for_model - requests.except... 822s ======================== 28 failed, 2 passed in 34.67s ========================= 823s autopkgtest [20:44:42]: test pybuild-autopkgtest: -----------------------] 824s pybuild-autopkgtest FAIL non-zero exit status 25 824s autopkgtest [20:44:43]: test pybuild-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 824s autopkgtest [20:44:43]: @@@@@@@@@@@@@@@@@@@@ summary 824s pybuild-autopkgtest FAIL non-zero exit status 25 836s virt: nova [W] Using flock in prodstack6-s390x 836s virt: flock: timeout while waiting to get lock 836s virt: Creating nova instance adt-plucky-s390x-tiktoken-20241123-203059-juju-7f2275-prod-proposed-migration-environment-2-e6d601a2-42c2-42f2-99c2-9d18481b7e6a from image adt/ubuntu-plucky-s390x-server-20241119.img (UUID 0efe7a44-24e0-44d8-af6e-8997f14b87bd)...