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.duuh1m_p/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 --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-2@bos03-arm64-29.secgroup --name adt-plucky-arm64-tiktoken-20241123-203059-juju-7f2275-prod-proposed-migration-environment-2-707bcee9-8583-4c05-b683-3c793d25e2e9 --image adt/ubuntu-plucky-arm64-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-2 --net-id=net_prod-proposed-migration -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/ 73s autopkgtest [20:32:12]: testbed dpkg architecture: arm64 73s autopkgtest [20:32:12]: testbed apt version: 2.9.8 73s autopkgtest [20:32:12]: @@@@@@@@@@@@@@@@@@@@ test bed setup 74s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease [73.9 kB] 74s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/universe Sources [930 kB] 74s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse Sources [13.6 kB] 74s Get:4 http://ftpmaster.internal/ubuntu plucky-proposed/main Sources [54.8 kB] 74s Get:5 http://ftpmaster.internal/ubuntu plucky-proposed/restricted Sources [9704 B] 74s Get:6 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 Packages [87.1 kB] 74s Get:7 http://ftpmaster.internal/ubuntu plucky-proposed/restricted arm64 Packages [57.8 kB] 74s Get:8 http://ftpmaster.internal/ubuntu plucky-proposed/universe arm64 Packages [796 kB] 74s Get:9 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse arm64 Packages [19.3 kB] 74s Fetched 2043 kB in 1s (2382 kB/s) 74s Reading package lists... 77s Reading package lists... 77s Building dependency tree... 77s Reading state information... 78s Calculating upgrade... 78s The following package was automatically installed and is no longer required: 78s libsgutils2-1.46-2 78s Use 'sudo apt autoremove' to remove it. 78s The following NEW packages will be installed: 78s libsgutils2-1.48 78s The following packages will be upgraded: 78s bash bpftrace curl debconf debconf-i18n distro-info fwupd-signed 78s gir1.2-girepository-2.0 gir1.2-glib-2.0 hostname libaudit-common libaudit1 78s libcurl3t64-gnutls libcurl4t64 libgirepository-1.0-1 libglib2.0-0t64 78s libglib2.0-data libpam-modules libpam-modules-bin libpam-runtime libpam0g 78s libplymouth5 libpython3-stdlib libselinux1 libsemanage-common libsemanage2 78s linux-base lxd-installer openssh-client openssh-server openssh-sftp-server 78s plymouth plymouth-theme-ubuntu-text python3 python3-blinker python3-dbus 78s python3-debconf python3-gi python3-jsonschema-specifications python3-minimal 78s python3-rpds-py python3-yaml sg3-utils sg3-utils-udev vim-common vim-tiny 78s xxd 78s 47 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 78s Need to get 11.7 MB of archives. 78s After this operation, 2983 kB of additional disk space will be used. 78s Get:1 http://ftpmaster.internal/ubuntu plucky/main arm64 bash arm64 5.2.32-1ubuntu2 [791 kB] 79s Get:2 http://ftpmaster.internal/ubuntu plucky/main arm64 hostname arm64 3.25 [11.0 kB] 79s Get:3 http://ftpmaster.internal/ubuntu plucky/main arm64 libaudit-common all 1:4.0.2-2ubuntu1 [6578 B] 79s Get:4 http://ftpmaster.internal/ubuntu plucky/main arm64 libaudit1 arm64 1:4.0.2-2ubuntu1 [54.2 kB] 79s Get:5 http://ftpmaster.internal/ubuntu plucky/main arm64 debconf-i18n all 1.5.87ubuntu1 [204 kB] 79s Get:6 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 python3-minimal arm64 3.12.7-1 [27.4 kB] 79s Get:7 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 python3 arm64 3.12.7-1 [24.0 kB] 79s Get:8 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 libpython3-stdlib arm64 3.12.7-1 [10.0 kB] 79s Get:9 http://ftpmaster.internal/ubuntu plucky/main arm64 python3-debconf all 1.5.87ubuntu1 [4156 B] 79s Get:10 http://ftpmaster.internal/ubuntu plucky/main arm64 debconf all 1.5.87ubuntu1 [124 kB] 79s Get:11 http://ftpmaster.internal/ubuntu plucky/main arm64 libpam0g arm64 1.5.3-7ubuntu4 [68.6 kB] 79s Get:12 http://ftpmaster.internal/ubuntu plucky/main arm64 libselinux1 arm64 3.7-3ubuntu1 [81.6 kB] 79s Get:13 http://ftpmaster.internal/ubuntu plucky/main arm64 libpam-modules-bin arm64 1.5.3-7ubuntu4 [50.4 kB] 79s Get:14 http://ftpmaster.internal/ubuntu plucky/main arm64 libpam-modules arm64 1.5.3-7ubuntu4 [285 kB] 79s Get:15 http://ftpmaster.internal/ubuntu plucky/main arm64 openssh-sftp-server arm64 1:9.9p1-3ubuntu2 [36.8 kB] 79s Get:16 http://ftpmaster.internal/ubuntu plucky/main arm64 openssh-server arm64 1:9.9p1-3ubuntu2 [524 kB] 79s Get:17 http://ftpmaster.internal/ubuntu plucky/main arm64 openssh-client arm64 1:9.9p1-3ubuntu2 [920 kB] 79s Get:18 http://ftpmaster.internal/ubuntu plucky/main arm64 libpam-runtime all 1.5.3-7ubuntu4 [40.8 kB] 79s Get:19 http://ftpmaster.internal/ubuntu plucky/main arm64 libsemanage-common all 3.7-2build1 [7186 B] 79s Get:20 http://ftpmaster.internal/ubuntu plucky/main arm64 libsemanage2 arm64 3.7-2build1 [92.2 kB] 79s Get:21 http://ftpmaster.internal/ubuntu plucky/main arm64 distro-info arm64 1.12 [19.4 kB] 79s Get:22 http://ftpmaster.internal/ubuntu plucky/main arm64 gir1.2-girepository-2.0 arm64 1.82.0-2 [25.2 kB] 79s Get:23 http://ftpmaster.internal/ubuntu plucky/main arm64 gir1.2-glib-2.0 arm64 2.82.2-3 [182 kB] 79s Get:24 http://ftpmaster.internal/ubuntu plucky/main arm64 libglib2.0-0t64 arm64 2.82.2-3 [1560 kB] 79s Get:25 http://ftpmaster.internal/ubuntu plucky/main arm64 libgirepository-1.0-1 arm64 1.82.0-2 [83.0 kB] 79s Get:26 http://ftpmaster.internal/ubuntu plucky/main arm64 libglib2.0-data all 2.82.2-3 [51.7 kB] 79s Get:27 http://ftpmaster.internal/ubuntu plucky/main arm64 python3-dbus arm64 1.3.2-5build4 [109 kB] 79s Get:28 http://ftpmaster.internal/ubuntu plucky/main arm64 python3-gi arm64 3.50.0-3build1 [279 kB] 79s Get:29 http://ftpmaster.internal/ubuntu plucky/main arm64 python3-yaml arm64 6.0.2-1build1 [164 kB] 79s Get:30 http://ftpmaster.internal/ubuntu plucky/main arm64 vim-tiny arm64 2:9.1.0861-1ubuntu1 [805 kB] 79s Get:31 http://ftpmaster.internal/ubuntu plucky/main arm64 vim-common all 2:9.1.0861-1ubuntu1 [395 kB] 79s Get:32 http://ftpmaster.internal/ubuntu plucky/main arm64 xxd arm64 2:9.1.0861-1ubuntu1 [67.3 kB] 79s Get:33 http://ftpmaster.internal/ubuntu plucky/main arm64 libplymouth5 arm64 24.004.60-2ubuntu3 [141 kB] 79s Get:34 http://ftpmaster.internal/ubuntu plucky/main arm64 plymouth-theme-ubuntu-text arm64 24.004.60-2ubuntu3 [9914 B] 79s Get:35 http://ftpmaster.internal/ubuntu plucky/main arm64 plymouth arm64 24.004.60-2ubuntu3 [135 kB] 79s Get:36 http://ftpmaster.internal/ubuntu plucky/main arm64 bpftrace arm64 0.21.2-2ubuntu3 [1854 kB] 79s Get:37 http://ftpmaster.internal/ubuntu plucky/main arm64 curl arm64 8.9.1-2ubuntu3 [235 kB] 79s Get:38 http://ftpmaster.internal/ubuntu plucky/main arm64 libcurl4t64 arm64 8.9.1-2ubuntu3 [365 kB] 79s Get:39 http://ftpmaster.internal/ubuntu plucky/main arm64 fwupd-signed arm64 1.55+1.7-1 [30.9 kB] 79s Get:40 http://ftpmaster.internal/ubuntu plucky/main arm64 libcurl3t64-gnutls arm64 8.9.1-2ubuntu3 [359 kB] 79s Get:41 http://ftpmaster.internal/ubuntu plucky/main arm64 libsgutils2-1.48 arm64 1.48-0ubuntu1 [118 kB] 79s Get:42 http://ftpmaster.internal/ubuntu plucky/main arm64 linux-base all 4.10.1ubuntu1 [34.8 kB] 79s Get:43 http://ftpmaster.internal/ubuntu plucky/main arm64 lxd-installer all 10 [5264 B] 79s Get:44 http://ftpmaster.internal/ubuntu plucky/main arm64 python3-blinker all 1.9.0-1 [10.7 kB] 79s Get:45 http://ftpmaster.internal/ubuntu plucky/main arm64 python3-rpds-py arm64 0.21.0-2ubuntu1 [302 kB] 79s Get:46 http://ftpmaster.internal/ubuntu plucky/main arm64 python3-jsonschema-specifications all 2023.12.1-2 [9116 B] 79s Get:47 http://ftpmaster.internal/ubuntu plucky/main arm64 sg3-utils arm64 1.48-0ubuntu1 [999 kB] 79s Get:48 http://ftpmaster.internal/ubuntu plucky/main arm64 sg3-utils-udev all 1.48-0ubuntu1 [6608 B] 80s Preconfiguring packages ... 80s Fetched 11.7 MB in 1s (9511 kB/s) 80s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 80002 files and directories currently installed.) 80s Preparing to unpack .../bash_5.2.32-1ubuntu2_arm64.deb ... 80s Unpacking bash (5.2.32-1ubuntu2) over (5.2.32-1ubuntu1) ... 80s Setting up bash (5.2.32-1ubuntu2) ... 80s 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 80s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 80002 files and directories currently installed.) 80s Preparing to unpack .../hostname_3.25_arm64.deb ... 80s Unpacking hostname (3.25) over (3.23+nmu2ubuntu2) ... 80s Setting up hostname (3.25) ... 81s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 80002 files and directories currently installed.) 81s Preparing to unpack .../libaudit-common_1%3a4.0.2-2ubuntu1_all.deb ... 81s Unpacking libaudit-common (1:4.0.2-2ubuntu1) over (1:4.0.1-1ubuntu2) ... 81s Setting up libaudit-common (1:4.0.2-2ubuntu1) ... 81s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 80002 files and directories currently installed.) 81s Preparing to unpack .../libaudit1_1%3a4.0.2-2ubuntu1_arm64.deb ... 81s Unpacking libaudit1:arm64 (1:4.0.2-2ubuntu1) over (1:4.0.1-1ubuntu2) ... 81s Setting up libaudit1:arm64 (1:4.0.2-2ubuntu1) ... 81s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 80002 files and directories currently installed.) 81s Preparing to unpack .../debconf-i18n_1.5.87ubuntu1_all.deb ... 81s Unpacking debconf-i18n (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 81s Preparing to unpack .../python3-minimal_3.12.7-1_arm64.deb ... 81s Unpacking python3-minimal (3.12.7-1) over (3.12.6-0ubuntu1) ... 81s Setting up python3-minimal (3.12.7-1) ... 81s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 80002 files and directories currently installed.) 81s Preparing to unpack .../python3_3.12.7-1_arm64.deb ... 81s Unpacking python3 (3.12.7-1) over (3.12.6-0ubuntu1) ... 81s Preparing to unpack .../libpython3-stdlib_3.12.7-1_arm64.deb ... 81s Unpacking libpython3-stdlib:arm64 (3.12.7-1) over (3.12.6-0ubuntu1) ... 81s Preparing to unpack .../python3-debconf_1.5.87ubuntu1_all.deb ... 81s Unpacking python3-debconf (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 81s Preparing to unpack .../debconf_1.5.87ubuntu1_all.deb ... 81s Unpacking debconf (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 81s Setting up debconf (1.5.87ubuntu1) ... 82s (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 ... 80002 files and directories currently installed.) 82s Preparing to unpack .../libpam0g_1.5.3-7ubuntu4_arm64.deb ... 82s Unpacking libpam0g:arm64 (1.5.3-7ubuntu4) over (1.5.3-7ubuntu2) ... 82s Setting up libpam0g:arm64 (1.5.3-7ubuntu4) ... 82s (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 ... 80002 files and directories currently installed.) 82s Preparing to unpack .../libselinux1_3.7-3ubuntu1_arm64.deb ... 82s Unpacking libselinux1:arm64 (3.7-3ubuntu1) over (3.5-2ubuntu5) ... 82s Setting up libselinux1:arm64 (3.7-3ubuntu1) ... 82s (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 ... 80002 files and directories currently installed.) 82s Preparing to unpack .../libpam-modules-bin_1.5.3-7ubuntu4_arm64.deb ... 82s Unpacking libpam-modules-bin (1.5.3-7ubuntu4) over (1.5.3-7ubuntu2) ... 82s Setting up libpam-modules-bin (1.5.3-7ubuntu4) ... 82s pam_namespace.service is a disabled or a static unit not running, not starting it. 82s (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 ... 80002 files and directories currently installed.) 82s Preparing to unpack .../libpam-modules_1.5.3-7ubuntu4_arm64.deb ... 82s Unpacking libpam-modules:arm64 (1.5.3-7ubuntu4) over (1.5.3-7ubuntu2) ... 83s Setting up libpam-modules:arm64 (1.5.3-7ubuntu4) ... 83s (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 ... 80002 files and directories currently installed.) 83s Preparing to unpack .../openssh-sftp-server_1%3a9.9p1-3ubuntu2_arm64.deb ... 83s Unpacking openssh-sftp-server (1:9.9p1-3ubuntu2) over (1:9.7p1-7ubuntu5) ... 83s Preparing to unpack .../openssh-server_1%3a9.9p1-3ubuntu2_arm64.deb ... 83s Unpacking openssh-server (1:9.9p1-3ubuntu2) over (1:9.7p1-7ubuntu5) ... 83s Preparing to unpack .../openssh-client_1%3a9.9p1-3ubuntu2_arm64.deb ... 83s Unpacking openssh-client (1:9.9p1-3ubuntu2) over (1:9.7p1-7ubuntu5) ... 83s Preparing to unpack .../libpam-runtime_1.5.3-7ubuntu4_all.deb ... 83s Unpacking libpam-runtime (1.5.3-7ubuntu4) over (1.5.3-7ubuntu2) ... 83s Setting up libpam-runtime (1.5.3-7ubuntu4) ... 83s (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 ... 80004 files and directories currently installed.) 83s Preparing to unpack .../libsemanage-common_3.7-2build1_all.deb ... 83s Unpacking libsemanage-common (3.7-2build1) over (3.5-1build6) ... 83s Setting up libsemanage-common (3.7-2build1) ... 83s (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 ... 80003 files and directories currently installed.) 83s Preparing to unpack .../libsemanage2_3.7-2build1_arm64.deb ... 83s Unpacking libsemanage2:arm64 (3.7-2build1) over (3.5-1build6) ... 83s Setting up libsemanage2:arm64 (3.7-2build1) ... 83s (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 ... 80003 files and directories currently installed.) 83s Preparing to unpack .../00-distro-info_1.12_arm64.deb ... 83s Unpacking distro-info (1.12) over (1.9) ... 83s Preparing to unpack .../01-gir1.2-girepository-2.0_1.82.0-2_arm64.deb ... 83s Unpacking gir1.2-girepository-2.0:arm64 (1.82.0-2) over (1.80.1-4) ... 83s Preparing to unpack .../02-gir1.2-glib-2.0_2.82.2-3_arm64.deb ... 83s Unpacking gir1.2-glib-2.0:arm64 (2.82.2-3) over (2.82.1-0ubuntu1) ... 83s Preparing to unpack .../03-libglib2.0-0t64_2.82.2-3_arm64.deb ... 83s Unpacking libglib2.0-0t64:arm64 (2.82.2-3) over (2.82.1-0ubuntu1) ... 84s Preparing to unpack .../04-libgirepository-1.0-1_1.82.0-2_arm64.deb ... 84s Unpacking libgirepository-1.0-1:arm64 (1.82.0-2) over (1.80.1-4) ... 84s Preparing to unpack .../05-libglib2.0-data_2.82.2-3_all.deb ... 84s Unpacking libglib2.0-data (2.82.2-3) over (2.82.1-0ubuntu1) ... 84s Preparing to unpack .../06-python3-dbus_1.3.2-5build4_arm64.deb ... 84s Unpacking python3-dbus (1.3.2-5build4) over (1.3.2-5build3) ... 84s Preparing to unpack .../07-python3-gi_3.50.0-3build1_arm64.deb ... 84s Unpacking python3-gi (3.50.0-3build1) over (3.50.0-3) ... 84s Preparing to unpack .../08-python3-yaml_6.0.2-1build1_arm64.deb ... 84s Unpacking python3-yaml (6.0.2-1build1) over (6.0.2-1) ... 84s Preparing to unpack .../09-vim-tiny_2%3a9.1.0861-1ubuntu1_arm64.deb ... 84s Unpacking vim-tiny (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 84s Preparing to unpack .../10-vim-common_2%3a9.1.0861-1ubuntu1_all.deb ... 84s Unpacking vim-common (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 84s Preparing to unpack .../11-xxd_2%3a9.1.0861-1ubuntu1_arm64.deb ... 84s Unpacking xxd (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 84s Preparing to unpack .../12-libplymouth5_24.004.60-2ubuntu3_arm64.deb ... 84s Unpacking libplymouth5:arm64 (24.004.60-2ubuntu3) over (24.004.60-1ubuntu11) ... 84s Preparing to unpack .../13-plymouth-theme-ubuntu-text_24.004.60-2ubuntu3_arm64.deb ... 84s Unpacking plymouth-theme-ubuntu-text (24.004.60-2ubuntu3) over (24.004.60-1ubuntu11) ... 84s Preparing to unpack .../14-plymouth_24.004.60-2ubuntu3_arm64.deb ... 84s Unpacking plymouth (24.004.60-2ubuntu3) over (24.004.60-1ubuntu11) ... 84s Preparing to unpack .../15-bpftrace_0.21.2-2ubuntu3_arm64.deb ... 84s Unpacking bpftrace (0.21.2-2ubuntu3) over (0.21.2-2ubuntu2) ... 84s Preparing to unpack .../16-curl_8.9.1-2ubuntu3_arm64.deb ... 84s Unpacking curl (8.9.1-2ubuntu3) over (8.9.1-2ubuntu2) ... 85s Preparing to unpack .../17-libcurl4t64_8.9.1-2ubuntu3_arm64.deb ... 85s Unpacking libcurl4t64:arm64 (8.9.1-2ubuntu3) over (8.9.1-2ubuntu2) ... 85s Preparing to unpack .../18-fwupd-signed_1.55+1.7-1_arm64.deb ... 85s Unpacking fwupd-signed (1.55+1.7-1) over (1.54+1.6-1build1) ... 85s Preparing to unpack .../19-libcurl3t64-gnutls_8.9.1-2ubuntu3_arm64.deb ... 85s Unpacking libcurl3t64-gnutls:arm64 (8.9.1-2ubuntu3) over (8.9.1-2ubuntu2) ... 85s Selecting previously unselected package libsgutils2-1.48:arm64. 85s Preparing to unpack .../20-libsgutils2-1.48_1.48-0ubuntu1_arm64.deb ... 85s Unpacking libsgutils2-1.48:arm64 (1.48-0ubuntu1) ... 85s Preparing to unpack .../21-linux-base_4.10.1ubuntu1_all.deb ... 85s Unpacking linux-base (4.10.1ubuntu1) over (4.5ubuntu9) ... 85s Preparing to unpack .../22-lxd-installer_10_all.deb ... 85s Unpacking lxd-installer (10) over (9) ... 85s Preparing to unpack .../23-python3-blinker_1.9.0-1_all.deb ... 85s Unpacking python3-blinker (1.9.0-1) over (1.8.2-1) ... 85s Preparing to unpack .../24-python3-rpds-py_0.21.0-2ubuntu1_arm64.deb ... 85s Unpacking python3-rpds-py (0.21.0-2ubuntu1) over (0.20.0-0ubuntu3) ... 85s Preparing to unpack .../25-python3-jsonschema-specifications_2023.12.1-2_all.deb ... 85s Unpacking python3-jsonschema-specifications (2023.12.1-2) over (2023.12.1-1ubuntu1) ... 85s Preparing to unpack .../26-sg3-utils_1.48-0ubuntu1_arm64.deb ... 85s Unpacking sg3-utils (1.48-0ubuntu1) over (1.46-3ubuntu5) ... 85s Preparing to unpack .../27-sg3-utils-udev_1.48-0ubuntu1_all.deb ... 85s Unpacking sg3-utils-udev (1.48-0ubuntu1) over (1.46-3ubuntu5) ... 85s Setting up distro-info (1.12) ... 85s Setting up linux-base (4.10.1ubuntu1) ... 85s Setting up libcurl4t64:arm64 (8.9.1-2ubuntu3) ... 85s Setting up bpftrace (0.21.2-2ubuntu3) ... 85s Setting up openssh-client (1:9.9p1-3ubuntu2) ... 85s Setting up libcurl3t64-gnutls:arm64 (8.9.1-2ubuntu3) ... 85s Setting up fwupd-signed (1.55+1.7-1) ... 85s Setting up libsgutils2-1.48:arm64 (1.48-0ubuntu1) ... 85s Setting up debconf-i18n (1.5.87ubuntu1) ... 85s Setting up xxd (2:9.1.0861-1ubuntu1) ... 85s Setting up libglib2.0-0t64:arm64 (2.82.2-3) ... 85s No schema files found: doing nothing. 85s Setting up libglib2.0-data (2.82.2-3) ... 85s Setting up vim-common (2:9.1.0861-1ubuntu1) ... 85s Setting up gir1.2-glib-2.0:arm64 (2.82.2-3) ... 85s Setting up lxd-installer (10) ... 86s Setting up libplymouth5:arm64 (24.004.60-2ubuntu3) ... 86s Setting up libgirepository-1.0-1:arm64 (1.82.0-2) ... 86s Setting up curl (8.9.1-2ubuntu3) ... 86s Setting up libpython3-stdlib:arm64 (3.12.7-1) ... 86s Setting up sg3-utils (1.48-0ubuntu1) ... 86s Setting up openssh-sftp-server (1:9.9p1-3ubuntu2) ... 86s Setting up openssh-server (1:9.9p1-3ubuntu2) ... 86s Installing new version of config file /etc/ssh/moduli ... 86s Replacing config file /etc/ssh/sshd_config with new version 87s Setting up plymouth (24.004.60-2ubuntu3) ... 87s update-initramfs: Generating /boot/initrd.img-6.11.0-8-generic 87s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 103s flash-kernel: deferring update (trigger activated) 103s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 104s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 104s Setting up python3 (3.12.7-1) ... 104s Setting up vim-tiny (2:9.1.0861-1ubuntu1) ... 104s Setting up sg3-utils-udev (1.48-0ubuntu1) ... 104s update-initramfs: deferring update (trigger activated) 104s Setting up plymouth-theme-ubuntu-text (24.004.60-2ubuntu3) ... 104s update-initramfs: deferring update (trigger activated) 104s Setting up gir1.2-girepository-2.0:arm64 (1.82.0-2) ... 104s Setting up python3-gi (3.50.0-3build1) ... 105s Setting up python3-rpds-py (0.21.0-2ubuntu1) ... 105s Setting up python3-jsonschema-specifications (2023.12.1-2) ... 105s Setting up python3-blinker (1.9.0-1) ... 105s Setting up python3-dbus (1.3.2-5build4) ... 105s Setting up python3-debconf (1.5.87ubuntu1) ... 105s Setting up python3-yaml (6.0.2-1build1) ... 105s Processing triggers for man-db (2.13.0-1) ... 107s Processing triggers for debianutils (5.21) ... 107s Processing triggers for install-info (7.1.1-1) ... 107s Processing triggers for initramfs-tools (0.142ubuntu35) ... 107s update-initramfs: Generating /boot/initrd.img-6.11.0-8-generic 107s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 122s System running in EFI mode, skipping. 122s Processing triggers for libc-bin (2.40-1ubuntu3) ... 122s Processing triggers for ufw (0.36.2-8) ... 122s Processing triggers for flash-kernel (3.107ubuntu13) ... 122s System running in EFI mode, skipping. 123s Reading package lists... 123s Building dependency tree... 123s Reading state information... 123s The following packages will be REMOVED: 123s libsgutils2-1.46-2* 124s 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. 124s After this operation, 314 kB disk space will be freed. 124s (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 ... 80037 files and directories currently installed.) 124s Removing libsgutils2-1.46-2:arm64 (1.46-3ubuntu5) ... 124s Processing triggers for libc-bin (2.40-1ubuntu3) ... 125s Hit:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease 125s Hit:2 http://ftpmaster.internal/ubuntu plucky InRelease 125s Hit:3 http://ftpmaster.internal/ubuntu plucky-updates InRelease 125s Hit:4 http://ftpmaster.internal/ubuntu plucky-security InRelease 126s Reading package lists... 126s Reading package lists... 126s Building dependency tree... 126s Reading state information... 127s Calculating upgrade... 127s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 127s Reading package lists... 127s Building dependency tree... 127s Reading state information... 128s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 128s autopkgtest [20:33:07]: rebooting testbed after setup commands that affected boot 132s autopkgtest-virt-ssh: WARNING: ssh connection failed. Retrying in 3 seconds... 154s autopkgtest [20:33:33]: testbed running kernel: Linux 6.11.0-8-generic #8-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 16 14:19:41 UTC 2024 157s autopkgtest [20:33:36]: @@@@@@@@@@@@@@@@@@@@ apt-source tiktoken 159s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed/universe tiktoken 0.8.0-1build1 (dsc) [2247 B] 159s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/universe tiktoken 0.8.0-1build1 (tar) [31.6 kB] 159s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/universe tiktoken 0.8.0-1build1 (diff) [3908 B] 159s gpgv: Signature made Mon Nov 18 15:38:19 2024 UTC 159s gpgv: using RSA key 25E3FF2D7F469DBE7D0D4E50AFCFEC8E669CE1C2 159s gpgv: Can't check signature: No public key 159s dpkg-source: warning: cannot verify inline signature for ./tiktoken_0.8.0-1build1.dsc: no acceptable signature found 159s autopkgtest [20:33:38]: testing package tiktoken version 0.8.0-1build1 160s autopkgtest [20:33:39]: build not needed 160s autopkgtest [20:33:39]: test pybuild-autopkgtest: preparing testbed 161s Reading package lists... 162s Building dependency tree... 162s Reading state information... 162s Starting pkgProblemResolver with broken count: 0 162s Starting 2 pkgProblemResolver with broken count: 0 162s Done 163s The following additional packages will be installed: 163s autoconf automake autopoint autotools-dev binutils-mingw-w64-i686 163s binutils-mingw-w64-x86-64 build-essential cargo cargo-1.80 cmake cmake-data 163s cpp cpp-14 cpp-14-aarch64-linux-gnu cpp-aarch64-linux-gnu debhelper 163s debugedit dh-autoreconf dh-python dh-strip-nondeterminism dwz 163s fontconfig-config fonts-dejavu-core fonts-dejavu-mono g++ g++-14 163s g++-14-aarch64-linux-gnu g++-aarch64-linux-gnu gcc gcc-14 163s gcc-14-aarch64-linux-gnu gcc-aarch64-linux-gnu gettext intltool-debian 163s libarchive-zip-perl libasan8 libbrotli-dev libbz2-dev libcc1-0 163s libdebhelper-perl libexpat1-dev libfile-stripnondeterminism-perl 163s libfontconfig-dev libfontconfig1 libfreetype-dev libgcc-14-dev libgit2-1.7 163s libgomp1 libhttp-parser2.9 libhwasan0 libisl23 libitm1 libjsoncpp25 liblsan0 163s libmpc3 libpfm4 libpkgconf3 libpng-dev libpython3-all-dev libpython3-dev 163s libpython3.12-dev libpython3.13 libpython3.13-dev libpython3.13-minimal 163s libpython3.13-stdlib librhash0 librust-ab-glyph-dev 163s librust-ab-glyph-rasterizer+libm-dev librust-ab-glyph-rasterizer-dev 163s librust-addr2line-dev librust-adler-dev librust-ahash-dev 163s librust-aho-corasick-dev librust-allocator-api2-dev librust-anes-dev 163s librust-anstream-dev librust-anstyle-dev librust-anstyle-parse-dev 163s librust-anstyle-query-dev librust-anyhow-dev librust-approx-dev 163s librust-arbitrary-dev librust-array-init-dev librust-arrayvec-dev 163s librust-async-attributes-dev librust-async-channel-dev 163s librust-async-executor-dev librust-async-fs-dev 163s librust-async-global-executor-dev librust-async-io-dev 163s librust-async-lock-dev librust-async-net-dev librust-async-process-dev 163s librust-async-signal-dev librust-async-std-dev librust-async-task-dev 163s librust-atomic-dev librust-atomic-waker-dev librust-autocfg-dev 163s librust-backtrace-dev librust-base64-dev librust-bit-set+std-dev 163s librust-bit-set-dev librust-bit-vec-dev librust-bitflags-1-dev 163s librust-bitflags-dev librust-bitvec-dev librust-blobby-dev 163s librust-block-buffer-dev librust-blocking-dev librust-bstr-dev 163s librust-bumpalo-dev librust-bytecheck-derive-dev librust-bytecheck-dev 163s librust-bytemuck-derive-dev librust-bytemuck-dev librust-byteorder-dev 163s librust-bytes-dev librust-cast-dev librust-cc-dev librust-cfg-if-0.1-dev 163s librust-cfg-if-dev librust-chrono-dev librust-chrono-tz-build-dev 163s librust-chrono-tz-dev librust-ciborium-dev librust-ciborium-io-dev 163s librust-ciborium-ll-dev librust-clap-builder-dev librust-clap-derive-dev 163s librust-clap-dev librust-clap-lex-dev librust-cmake-dev 163s librust-color-quant-dev librust-colorchoice-dev 163s librust-compiler-builtins+core-dev 163s librust-compiler-builtins+rustc-dep-of-std-dev librust-compiler-builtins-dev 163s librust-concurrent-queue-dev librust-const-cstr-dev librust-const-oid-dev 163s librust-const-random-dev librust-const-random-macro-dev 163s librust-convert-case-dev librust-core-maths-dev librust-cpp-demangle-dev 163s librust-cpufeatures-dev librust-crc32fast-dev librust-criterion-dev 163s librust-critical-section-dev librust-crossbeam-deque-dev 163s librust-crossbeam-epoch+std-dev librust-crossbeam-epoch-dev 163s librust-crossbeam-utils-dev librust-crunchy-dev librust-crypto-common-dev 163s librust-csv-core-dev librust-csv-dev librust-ctor-dev librust-deranged-dev 163s librust-derive-arbitrary-dev librust-derive-more-0.99-dev librust-digest-dev 163s librust-dirs-next-dev librust-dirs-sys-next-dev librust-dlib-dev 163s librust-either-dev librust-env-logger-dev librust-equivalent-dev 163s librust-erased-serde-dev librust-errno-dev librust-eui48-dev 163s librust-event-listener-dev librust-event-listener-strategy-dev 163s librust-eyre+default-dev librust-eyre-dev librust-fallible-iterator-dev 163s librust-fancy-regex-dev librust-fastrand-dev librust-flate2-dev 163s librust-float-ord-dev librust-fnv-dev librust-font-kit-dev 163s librust-freetype-dev librust-freetype-sys-dev librust-funty-dev 163s librust-futures-channel-dev librust-futures-core-dev librust-futures-dev 163s librust-futures-executor-dev librust-futures-io-dev librust-futures-lite-dev 163s librust-futures-macro-dev librust-futures-sink-dev librust-futures-task-dev 163s librust-futures-util-dev librust-generic-array-dev librust-geo-types-dev 163s librust-getrandom-dev librust-ghost-dev librust-gif-dev librust-gimli-dev 163s librust-half-dev librust-hashbrown-dev librust-heck-dev librust-hmac-dev 163s librust-humantime-dev librust-iana-time-zone-dev librust-image-dev 163s librust-indenter-dev librust-indexmap-dev librust-indoc-dev 163s librust-inventory-dev librust-is-terminal-dev librust-itertools-dev 163s librust-itoa-dev librust-jobserver-dev librust-jpeg-decoder-dev 163s librust-js-sys-dev librust-kv-log-macro-dev librust-lazy-static-dev 163s librust-libc-dev librust-libloading-dev librust-libm-dev 163s librust-libwebp-sys-dev librust-libz-sys-dev librust-linux-raw-sys-dev 163s librust-lock-api-dev librust-log-dev librust-md-5-dev librust-md5-asm-dev 163s librust-memchr-dev librust-memmap2-dev librust-memoffset-dev 163s librust-miniz-oxide-dev librust-mio-dev librust-no-panic-dev 163s librust-num-bigint-dev librust-num-complex-dev librust-num-conv-dev 163s librust-num-cpus-dev librust-num-integer-dev librust-num-rational-dev 163s librust-num-threads-dev librust-num-traits-dev librust-object-dev 163s librust-once-cell-dev librust-oorandom-dev librust-owned-ttf-parser-dev 163s librust-owning-ref-dev librust-parking-dev librust-parking-lot-core-dev 163s librust-parking-lot-dev librust-parse-zoneinfo-dev 163s librust-pathfinder-geometry-dev librust-pathfinder-simd-dev 163s librust-phf+uncased-dev librust-phf-codegen-dev librust-phf-dev 163s librust-phf-generator-dev librust-phf-shared+uncased-dev 163s librust-phf-shared-dev librust-pin-project-lite-dev librust-pin-utils-dev 163s librust-pkg-config-dev librust-plotters-backend-dev 163s librust-plotters-bitmap-dev librust-plotters-dev librust-plotters-svg-dev 163s librust-png-dev librust-polling-dev librust-portable-atomic-dev 163s librust-postgres-derive-dev librust-postgres-protocol-dev 163s librust-postgres-types-dev librust-powerfmt-dev librust-powerfmt-macros-dev 163s librust-ppv-lite86-dev librust-proc-macro2-dev librust-proptest-dev 163s librust-ptr-meta-derive-dev librust-ptr-meta-dev 163s librust-pure-rust-locales-dev librust-pyo3-build-config-dev librust-pyo3-dev 163s librust-pyo3-ffi-dev librust-pyo3-macros-backend-dev librust-pyo3-macros-dev 163s librust-python3-dll-a-dev librust-qoi-dev librust-quick-error-dev 163s librust-quickcheck-dev librust-quote-dev librust-radium-dev 163s librust-rand-chacha-dev librust-rand-core+getrandom-dev 163s librust-rand-core+serde-dev librust-rand-core+std-dev librust-rand-core-dev 163s librust-rand-dev librust-rand-xorshift-dev librust-rayon-core-dev 163s librust-rayon-dev librust-regex-automata-dev librust-regex-dev 163s librust-regex-syntax-dev librust-rend-dev librust-rkyv-derive-dev 163s librust-rkyv-dev librust-rust-decimal-dev librust-rustc-demangle-dev 163s librust-rustc-hash-dev librust-rustc-std-workspace-core-dev 163s librust-rustc-version-dev librust-rustix-dev 163s librust-rusty-fork+wait-timeout-dev librust-rusty-fork-dev 163s librust-ruzstd-dev librust-ryu-dev librust-same-file-dev 163s librust-scopeguard-dev librust-seahash-dev librust-semver-dev 163s librust-serde-derive-dev librust-serde-dev librust-serde-fmt-dev 163s librust-serde-json-dev librust-serde-test-dev librust-sha1-asm-dev 163s librust-sha1-dev librust-sha2-asm-dev librust-sha2-dev librust-shlex-dev 163s librust-signal-hook-registry-dev librust-simdutf8-dev librust-siphasher-dev 163s librust-slab-dev librust-slog-dev librust-smallvec-dev librust-smol-dev 163s librust-smol-str-dev librust-socket2-dev librust-spin-dev 163s librust-stable-deref-trait-dev librust-static-assertions-dev 163s librust-stringprep-dev librust-strsim-dev librust-subtle-dev 163s librust-sval-buffer-dev librust-sval-derive-dev librust-sval-dev 163s librust-sval-dynamic-dev librust-sval-fmt-dev librust-sval-ref-dev 163s librust-sval-serde-dev librust-syn-1-dev librust-syn-dev librust-tap-dev 163s librust-target-lexicon-dev librust-tempfile-dev librust-termcolor-dev 163s librust-terminal-size-dev librust-tiff-dev librust-time-core-dev 163s librust-time-dev librust-time-macros-dev librust-tiny-keccak-dev 163s librust-tinytemplate-dev librust-tinyvec+tinyvec-macros-dev 163s librust-tinyvec-dev librust-tinyvec-macros-dev librust-tokio-dev 163s librust-tokio-macros-dev librust-tracing-attributes-dev 163s librust-tracing-core-dev librust-tracing-dev librust-traitobject-dev 163s librust-ttf-parser-dev librust-twox-hash-dev librust-typemap-dev 163s librust-typenum-dev librust-unarray-dev librust-uncased-dev 163s librust-unicase-dev librust-unicode-bidi-dev librust-unicode-ident-dev 163s librust-unicode-normalization-dev librust-unicode-segmentation-dev 163s librust-unicode-width-dev librust-unindent-dev librust-unsafe-any-dev 163s librust-utf8parse-dev librust-uuid-dev librust-valuable-derive-dev 163s librust-valuable-dev librust-value-bag-dev librust-value-bag-serde1-dev 163s librust-value-bag-sval2-dev librust-version-check-dev 163s librust-wait-timeout-dev librust-walkdir-dev 163s librust-wasm-bindgen+default-dev librust-wasm-bindgen+spans-dev 163s librust-wasm-bindgen-backend-dev librust-wasm-bindgen-dev 163s librust-wasm-bindgen-macro+spans-dev librust-wasm-bindgen-macro-dev 163s librust-wasm-bindgen-macro-support+spans-dev 163s librust-wasm-bindgen-macro-support-dev librust-wasm-bindgen-shared-dev 163s librust-web-sys-dev librust-webp-dev librust-weezl-dev librust-winapi-dev 163s librust-winapi-i686-pc-windows-gnu-dev librust-winapi-util-dev 163s librust-winapi-x86-64-pc-windows-gnu-dev librust-wyz-dev 163s librust-yeslogic-fontconfig-sys-dev librust-zerocopy-derive-dev 163s librust-zerocopy-dev librust-zeroize-derive-dev librust-zeroize-dev 163s libsharpyuv-dev libsharpyuv0 libstd-rust-1.80 libstd-rust-1.80-dev 163s libstdc++-14-dev libtool libtsan2 libubsan1 libwebp-dev libwebp7 163s libwebpdecoder3 libwebpdemux2 libwebpmux3 llvm llvm-19 llvm-19-linker-tools 163s llvm-19-runtime llvm-runtime m4 pkg-config pkgconf pkgconf-bin po-debconf 163s pybuild-plugin-autopkgtest pybuild-plugin-pyproject python3-all 163s python3-build python3-dateutil python3-hypothesis python3-iniconfig 163s python3-installer python3-packaging python3-pluggy python3-pyproject-hooks 163s python3-pytest python3-regex python3-semantic-version 163s python3-setuptools-rust python3-sortedcontainers python3-tiktoken 163s python3-toml python3-wheel python3.12-dev python3.13 python3.13-minimal 163s rustc rustc-1.80 uuid-dev zlib1g-dev 163s Suggested packages: 163s autoconf-archive gnu-standards autoconf-doc cargo-1.80-doc cmake-doc 163s cmake-format elpa-cmake-mode ninja-build cpp-doc gcc-14-locales cpp-14-doc 163s dh-make flit gcc-14-doc gcc-multilib manpages-dev flex bison gdb gcc-doc 163s gdb-aarch64-linux-gnu gettext-doc libasprintf-dev libgettextpo-dev 163s freetype2-doc librust-adler+compiler-builtins-dev librust-adler+core-dev 163s librust-adler+rustc-dep-of-std-dev librust-backtrace+cpp-demangle-dev 163s librust-backtrace+rustc-serialize-dev librust-backtrace+serde-dev 163s librust-backtrace+verify-winapi-dev librust-backtrace+winapi-dev 163s librust-cfg-if-0.1+core-dev librust-cfg-if+core-dev 163s librust-compiler-builtins+c-dev gnuplot-nox librust-csv-core+libc-dev 163s librust-either+serde-dev librust-getrandom+compiler-builtins-dev 163s librust-getrandom+core-dev librust-getrandom+rustc-dep-of-std-dev 163s librust-libc+rustc-dep-of-std-dev librust-libc+rustc-std-workspace-core-dev 163s librust-phf+phf-macros-dev librust-phf+serde-dev librust-phf+unicase-dev 163s librust-phf-shared+unicase-dev librust-rand-xorshift+serde-dev 163s librust-rustc-demangle+compiler-builtins-dev librust-rustc-demangle+core-dev 163s librust-rustc-demangle+rustc-dep-of-std-dev librust-ryu+no-panic-dev 163s librust-slog+erased-serde-dev librust-tinyvec+arbitrary-dev 163s librust-tinyvec+serde-dev librust-uncased+serde-dev 163s librust-uncased+with-serde-alloc-dev 163s librust-wasm-bindgen-backend+extra-traits-dev librust-wasm-bindgen+serde-dev 163s librust-wasm-bindgen+serde-serialize-dev librust-wasm-bindgen+serde-json-dev 163s librust-wasm-bindgen+strict-macro-dev 163s librust-wasm-bindgen+xxx-debug-only-print-generated-code-dev 163s librust-wasm-bindgen-macro+strict-macro-dev 163s librust-wasm-bindgen-macro-support+extra-traits-dev librust-weezl+async-dev 163s librust-weezl+futures-dev libstdc++-14-doc libtool-doc gfortran 163s | fortran95-compiler gcj-jdk llvm-19-doc m4-doc libmail-box-perl python3-pip 163s python3-venv python-build-doc python-hypothesis-doc python-installer-doc 163s python-semantic-version-doc python-sortedcontainers-doc python3.13-venv 163s python3.13-doc binfmt-support llvm-18 lld-18 clang-18 163s Recommended packages: 163s bzip2-doc libarchive-cpio-perl libpng-tools librust-phf+std-dev 163s librust-subtle+default-dev libltdl-dev llvm-19-dev libmail-sendmail-perl 163s python3-click 163s The following NEW packages will be installed: 163s autoconf automake autopkgtest-satdep autopoint autotools-dev 163s binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 build-essential cargo 163s cargo-1.80 cmake cmake-data cpp cpp-14 cpp-14-aarch64-linux-gnu 163s cpp-aarch64-linux-gnu debhelper debugedit dh-autoreconf dh-python 163s dh-strip-nondeterminism dwz fontconfig-config fonts-dejavu-core 163s fonts-dejavu-mono g++ g++-14 g++-14-aarch64-linux-gnu g++-aarch64-linux-gnu 163s gcc gcc-14 gcc-14-aarch64-linux-gnu gcc-aarch64-linux-gnu gettext 163s intltool-debian libarchive-zip-perl libasan8 libbrotli-dev libbz2-dev 163s libcc1-0 libdebhelper-perl libexpat1-dev libfile-stripnondeterminism-perl 163s libfontconfig-dev libfontconfig1 libfreetype-dev libgcc-14-dev libgit2-1.7 163s libgomp1 libhttp-parser2.9 libhwasan0 libisl23 libitm1 libjsoncpp25 liblsan0 163s libmpc3 libpfm4 libpkgconf3 libpng-dev libpython3-all-dev libpython3-dev 163s libpython3.12-dev libpython3.13 libpython3.13-dev libpython3.13-minimal 163s libpython3.13-stdlib librhash0 librust-ab-glyph-dev 163s librust-ab-glyph-rasterizer+libm-dev librust-ab-glyph-rasterizer-dev 163s librust-addr2line-dev librust-adler-dev librust-ahash-dev 163s librust-aho-corasick-dev librust-allocator-api2-dev librust-anes-dev 163s librust-anstream-dev librust-anstyle-dev librust-anstyle-parse-dev 163s librust-anstyle-query-dev librust-anyhow-dev librust-approx-dev 163s librust-arbitrary-dev librust-array-init-dev librust-arrayvec-dev 163s librust-async-attributes-dev librust-async-channel-dev 163s librust-async-executor-dev librust-async-fs-dev 163s librust-async-global-executor-dev librust-async-io-dev 163s librust-async-lock-dev librust-async-net-dev librust-async-process-dev 163s librust-async-signal-dev librust-async-std-dev librust-async-task-dev 163s librust-atomic-dev librust-atomic-waker-dev librust-autocfg-dev 163s librust-backtrace-dev librust-base64-dev librust-bit-set+std-dev 163s librust-bit-set-dev librust-bit-vec-dev librust-bitflags-1-dev 163s librust-bitflags-dev librust-bitvec-dev librust-blobby-dev 163s librust-block-buffer-dev librust-blocking-dev librust-bstr-dev 163s librust-bumpalo-dev librust-bytecheck-derive-dev librust-bytecheck-dev 163s librust-bytemuck-derive-dev librust-bytemuck-dev librust-byteorder-dev 163s librust-bytes-dev librust-cast-dev librust-cc-dev librust-cfg-if-0.1-dev 163s librust-cfg-if-dev librust-chrono-dev librust-chrono-tz-build-dev 163s librust-chrono-tz-dev librust-ciborium-dev librust-ciborium-io-dev 163s librust-ciborium-ll-dev librust-clap-builder-dev librust-clap-derive-dev 163s librust-clap-dev librust-clap-lex-dev librust-cmake-dev 163s librust-color-quant-dev librust-colorchoice-dev 163s librust-compiler-builtins+core-dev 163s librust-compiler-builtins+rustc-dep-of-std-dev librust-compiler-builtins-dev 163s librust-concurrent-queue-dev librust-const-cstr-dev librust-const-oid-dev 163s librust-const-random-dev librust-const-random-macro-dev 163s librust-convert-case-dev librust-core-maths-dev librust-cpp-demangle-dev 163s librust-cpufeatures-dev librust-crc32fast-dev librust-criterion-dev 163s librust-critical-section-dev librust-crossbeam-deque-dev 163s librust-crossbeam-epoch+std-dev librust-crossbeam-epoch-dev 163s librust-crossbeam-utils-dev librust-crunchy-dev librust-crypto-common-dev 163s librust-csv-core-dev librust-csv-dev librust-ctor-dev librust-deranged-dev 163s librust-derive-arbitrary-dev librust-derive-more-0.99-dev librust-digest-dev 163s librust-dirs-next-dev librust-dirs-sys-next-dev librust-dlib-dev 163s librust-either-dev librust-env-logger-dev librust-equivalent-dev 163s librust-erased-serde-dev librust-errno-dev librust-eui48-dev 163s librust-event-listener-dev librust-event-listener-strategy-dev 163s librust-eyre+default-dev librust-eyre-dev librust-fallible-iterator-dev 163s librust-fancy-regex-dev librust-fastrand-dev librust-flate2-dev 163s librust-float-ord-dev librust-fnv-dev librust-font-kit-dev 163s librust-freetype-dev librust-freetype-sys-dev librust-funty-dev 163s librust-futures-channel-dev librust-futures-core-dev librust-futures-dev 163s librust-futures-executor-dev librust-futures-io-dev librust-futures-lite-dev 163s librust-futures-macro-dev librust-futures-sink-dev librust-futures-task-dev 163s librust-futures-util-dev librust-generic-array-dev librust-geo-types-dev 163s librust-getrandom-dev librust-ghost-dev librust-gif-dev librust-gimli-dev 163s librust-half-dev librust-hashbrown-dev librust-heck-dev librust-hmac-dev 163s librust-humantime-dev librust-iana-time-zone-dev librust-image-dev 163s librust-indenter-dev librust-indexmap-dev librust-indoc-dev 163s librust-inventory-dev librust-is-terminal-dev librust-itertools-dev 163s librust-itoa-dev librust-jobserver-dev librust-jpeg-decoder-dev 163s librust-js-sys-dev librust-kv-log-macro-dev librust-lazy-static-dev 163s librust-libc-dev librust-libloading-dev librust-libm-dev 163s librust-libwebp-sys-dev librust-libz-sys-dev librust-linux-raw-sys-dev 163s librust-lock-api-dev librust-log-dev librust-md-5-dev librust-md5-asm-dev 163s librust-memchr-dev librust-memmap2-dev librust-memoffset-dev 163s librust-miniz-oxide-dev librust-mio-dev librust-no-panic-dev 163s librust-num-bigint-dev librust-num-complex-dev librust-num-conv-dev 163s librust-num-cpus-dev librust-num-integer-dev librust-num-rational-dev 163s librust-num-threads-dev librust-num-traits-dev librust-object-dev 163s librust-once-cell-dev librust-oorandom-dev librust-owned-ttf-parser-dev 163s librust-owning-ref-dev librust-parking-dev librust-parking-lot-core-dev 163s librust-parking-lot-dev librust-parse-zoneinfo-dev 163s librust-pathfinder-geometry-dev librust-pathfinder-simd-dev 163s librust-phf+uncased-dev librust-phf-codegen-dev librust-phf-dev 163s librust-phf-generator-dev librust-phf-shared+uncased-dev 163s librust-phf-shared-dev librust-pin-project-lite-dev librust-pin-utils-dev 163s librust-pkg-config-dev librust-plotters-backend-dev 163s librust-plotters-bitmap-dev librust-plotters-dev librust-plotters-svg-dev 163s librust-png-dev librust-polling-dev librust-portable-atomic-dev 163s librust-postgres-derive-dev librust-postgres-protocol-dev 163s librust-postgres-types-dev librust-powerfmt-dev librust-powerfmt-macros-dev 163s librust-ppv-lite86-dev librust-proc-macro2-dev librust-proptest-dev 163s librust-ptr-meta-derive-dev librust-ptr-meta-dev 163s librust-pure-rust-locales-dev librust-pyo3-build-config-dev librust-pyo3-dev 163s librust-pyo3-ffi-dev librust-pyo3-macros-backend-dev librust-pyo3-macros-dev 163s librust-python3-dll-a-dev librust-qoi-dev librust-quick-error-dev 163s librust-quickcheck-dev librust-quote-dev librust-radium-dev 163s librust-rand-chacha-dev librust-rand-core+getrandom-dev 163s librust-rand-core+serde-dev librust-rand-core+std-dev librust-rand-core-dev 163s librust-rand-dev librust-rand-xorshift-dev librust-rayon-core-dev 163s librust-rayon-dev librust-regex-automata-dev librust-regex-dev 163s librust-regex-syntax-dev librust-rend-dev librust-rkyv-derive-dev 163s librust-rkyv-dev librust-rust-decimal-dev librust-rustc-demangle-dev 163s librust-rustc-hash-dev librust-rustc-std-workspace-core-dev 163s librust-rustc-version-dev librust-rustix-dev 163s librust-rusty-fork+wait-timeout-dev librust-rusty-fork-dev 163s librust-ruzstd-dev librust-ryu-dev librust-same-file-dev 163s librust-scopeguard-dev librust-seahash-dev librust-semver-dev 163s librust-serde-derive-dev librust-serde-dev librust-serde-fmt-dev 163s librust-serde-json-dev librust-serde-test-dev librust-sha1-asm-dev 163s librust-sha1-dev librust-sha2-asm-dev librust-sha2-dev librust-shlex-dev 163s librust-signal-hook-registry-dev librust-simdutf8-dev librust-siphasher-dev 163s librust-slab-dev librust-slog-dev librust-smallvec-dev librust-smol-dev 163s librust-smol-str-dev librust-socket2-dev librust-spin-dev 163s librust-stable-deref-trait-dev librust-static-assertions-dev 163s librust-stringprep-dev librust-strsim-dev librust-subtle-dev 163s librust-sval-buffer-dev librust-sval-derive-dev librust-sval-dev 163s librust-sval-dynamic-dev librust-sval-fmt-dev librust-sval-ref-dev 163s librust-sval-serde-dev librust-syn-1-dev librust-syn-dev librust-tap-dev 163s librust-target-lexicon-dev librust-tempfile-dev librust-termcolor-dev 163s librust-terminal-size-dev librust-tiff-dev librust-time-core-dev 163s librust-time-dev librust-time-macros-dev librust-tiny-keccak-dev 163s librust-tinytemplate-dev librust-tinyvec+tinyvec-macros-dev 163s librust-tinyvec-dev librust-tinyvec-macros-dev librust-tokio-dev 163s librust-tokio-macros-dev librust-tracing-attributes-dev 163s librust-tracing-core-dev librust-tracing-dev librust-traitobject-dev 163s librust-ttf-parser-dev librust-twox-hash-dev librust-typemap-dev 163s librust-typenum-dev librust-unarray-dev librust-uncased-dev 163s librust-unicase-dev librust-unicode-bidi-dev librust-unicode-ident-dev 163s librust-unicode-normalization-dev librust-unicode-segmentation-dev 163s librust-unicode-width-dev librust-unindent-dev librust-unsafe-any-dev 163s librust-utf8parse-dev librust-uuid-dev librust-valuable-derive-dev 163s librust-valuable-dev librust-value-bag-dev librust-value-bag-serde1-dev 163s librust-value-bag-sval2-dev librust-version-check-dev 163s librust-wait-timeout-dev librust-walkdir-dev 163s librust-wasm-bindgen+default-dev librust-wasm-bindgen+spans-dev 163s librust-wasm-bindgen-backend-dev librust-wasm-bindgen-dev 163s librust-wasm-bindgen-macro+spans-dev librust-wasm-bindgen-macro-dev 163s librust-wasm-bindgen-macro-support+spans-dev 163s librust-wasm-bindgen-macro-support-dev librust-wasm-bindgen-shared-dev 163s librust-web-sys-dev librust-webp-dev librust-weezl-dev librust-winapi-dev 163s librust-winapi-i686-pc-windows-gnu-dev librust-winapi-util-dev 163s librust-winapi-x86-64-pc-windows-gnu-dev librust-wyz-dev 163s librust-yeslogic-fontconfig-sys-dev librust-zerocopy-derive-dev 163s librust-zerocopy-dev librust-zeroize-derive-dev librust-zeroize-dev 163s libsharpyuv-dev libsharpyuv0 libstd-rust-1.80 libstd-rust-1.80-dev 163s libstdc++-14-dev libtool libtsan2 libubsan1 libwebp-dev libwebp7 163s libwebpdecoder3 libwebpdemux2 libwebpmux3 llvm llvm-19 llvm-19-linker-tools 163s llvm-19-runtime llvm-runtime m4 pkg-config pkgconf pkgconf-bin po-debconf 163s pybuild-plugin-autopkgtest pybuild-plugin-pyproject python3-all 163s python3-build python3-dateutil python3-hypothesis python3-iniconfig 163s python3-installer python3-packaging python3-pluggy python3-pyproject-hooks 163s python3-pytest python3-regex python3-semantic-version 163s python3-setuptools-rust python3-sortedcontainers python3-tiktoken 163s python3-toml python3-wheel python3.12-dev python3.13 python3.13-minimal 163s rustc rustc-1.80 uuid-dev zlib1g-dev 163s 0 upgraded, 473 newly installed, 0 to remove and 0 not upgraded. 163s Need to get 223 MB/223 MB of archives. 163s After this operation, 945 MB of additional disk space will be used. 163s Get:1 /tmp/autopkgtest.2NAS1E/1-autopkgtest-satdep.deb autopkgtest-satdep arm64 0 [864 B] 163s Get:2 http://ftpmaster.internal/ubuntu plucky/main arm64 libpython3.13-minimal arm64 3.13.0-2 [877 kB] 164s Get:3 http://ftpmaster.internal/ubuntu plucky/main arm64 python3.13-minimal arm64 3.13.0-2 [2100 kB] 165s Get:4 http://ftpmaster.internal/ubuntu plucky/main arm64 m4 arm64 1.4.19-4build1 [240 kB] 165s Get:5 http://ftpmaster.internal/ubuntu plucky/main arm64 autoconf all 2.72-3 [382 kB] 165s Get:6 http://ftpmaster.internal/ubuntu plucky/main arm64 autotools-dev all 20220109.1 [44.9 kB] 165s Get:7 http://ftpmaster.internal/ubuntu plucky/main arm64 automake all 1:1.16.5-1.3ubuntu1 [558 kB] 165s Get:8 http://ftpmaster.internal/ubuntu plucky/main arm64 autopoint all 0.22.5-2 [616 kB] 165s Get:9 http://ftpmaster.internal/ubuntu plucky/main arm64 libisl23 arm64 0.27-1 [676 kB] 165s Get:10 http://ftpmaster.internal/ubuntu plucky/main arm64 libmpc3 arm64 1.3.1-1build2 [56.8 kB] 165s Get:11 http://ftpmaster.internal/ubuntu plucky/main arm64 cpp-14-aarch64-linux-gnu arm64 14.2.0-8ubuntu1 [10.6 MB] 166s Get:12 http://ftpmaster.internal/ubuntu plucky/main arm64 cpp-14 arm64 14.2.0-8ubuntu1 [1028 B] 166s Get:13 http://ftpmaster.internal/ubuntu plucky/main arm64 cpp-aarch64-linux-gnu arm64 4:14.1.0-2ubuntu1 [5452 B] 166s Get:14 http://ftpmaster.internal/ubuntu plucky/main arm64 cpp arm64 4:14.1.0-2ubuntu1 [22.5 kB] 166s Get:15 http://ftpmaster.internal/ubuntu plucky/main arm64 libcc1-0 arm64 14.2.0-8ubuntu1 [49.7 kB] 166s Get:16 http://ftpmaster.internal/ubuntu plucky/main arm64 libgomp1 arm64 14.2.0-8ubuntu1 [145 kB] 166s Get:17 http://ftpmaster.internal/ubuntu plucky/main arm64 libitm1 arm64 14.2.0-8ubuntu1 [27.8 kB] 166s Get:18 http://ftpmaster.internal/ubuntu plucky/main arm64 libasan8 arm64 14.2.0-8ubuntu1 [2893 kB] 167s Get:19 http://ftpmaster.internal/ubuntu plucky/main arm64 liblsan0 arm64 14.2.0-8ubuntu1 [1283 kB] 167s Get:20 http://ftpmaster.internal/ubuntu plucky/main arm64 libtsan2 arm64 14.2.0-8ubuntu1 [2686 kB] 167s Get:21 http://ftpmaster.internal/ubuntu plucky/main arm64 libubsan1 arm64 14.2.0-8ubuntu1 [1151 kB] 167s Get:22 http://ftpmaster.internal/ubuntu plucky/main arm64 libhwasan0 arm64 14.2.0-8ubuntu1 [1598 kB] 167s Get:23 http://ftpmaster.internal/ubuntu plucky/main arm64 libgcc-14-dev arm64 14.2.0-8ubuntu1 [2594 kB] 167s Get:24 http://ftpmaster.internal/ubuntu plucky/main arm64 gcc-14-aarch64-linux-gnu arm64 14.2.0-8ubuntu1 [20.9 MB] 168s Get:25 http://ftpmaster.internal/ubuntu plucky/main arm64 gcc-14 arm64 14.2.0-8ubuntu1 [518 kB] 168s Get:26 http://ftpmaster.internal/ubuntu plucky/main arm64 gcc-aarch64-linux-gnu arm64 4:14.1.0-2ubuntu1 [1200 B] 168s Get:27 http://ftpmaster.internal/ubuntu plucky/main arm64 gcc arm64 4:14.1.0-2ubuntu1 [4994 B] 168s Get:28 http://ftpmaster.internal/ubuntu plucky/main arm64 libstdc++-14-dev arm64 14.2.0-8ubuntu1 [2476 kB] 168s Get:29 http://ftpmaster.internal/ubuntu plucky/main arm64 g++-14-aarch64-linux-gnu arm64 14.2.0-8ubuntu1 [12.1 MB] 168s Get:30 http://ftpmaster.internal/ubuntu plucky/main arm64 g++-14 arm64 14.2.0-8ubuntu1 [19.9 kB] 168s Get:31 http://ftpmaster.internal/ubuntu plucky/main arm64 g++-aarch64-linux-gnu arm64 4:14.1.0-2ubuntu1 [958 B] 168s Get:32 http://ftpmaster.internal/ubuntu plucky/main arm64 g++ arm64 4:14.1.0-2ubuntu1 [1080 B] 168s Get:33 http://ftpmaster.internal/ubuntu plucky/main arm64 build-essential arm64 12.10ubuntu1 [4932 B] 168s Get:34 http://ftpmaster.internal/ubuntu plucky/main arm64 libhttp-parser2.9 arm64 2.9.4-6build1 [21.9 kB] 168s Get:35 http://ftpmaster.internal/ubuntu plucky/main arm64 libgit2-1.7 arm64 1.7.2+ds-1ubuntu3 [528 kB] 168s Get:36 http://ftpmaster.internal/ubuntu plucky/main arm64 libstd-rust-1.80 arm64 1.80.1+dfsg0ubuntu1-0ubuntu1 [20.0 MB] 169s Get:37 http://ftpmaster.internal/ubuntu plucky/main arm64 libstd-rust-1.80-dev arm64 1.80.1+dfsg0ubuntu1-0ubuntu1 [40.8 MB] 170s Get:38 http://ftpmaster.internal/ubuntu plucky/main arm64 rustc-1.80 arm64 1.80.1+dfsg0ubuntu1-0ubuntu1 [3139 kB] 170s Get:39 http://ftpmaster.internal/ubuntu plucky/main arm64 cargo-1.80 arm64 1.80.1+dfsg0ubuntu1-0ubuntu1 [5764 kB] 170s Get:40 http://ftpmaster.internal/ubuntu plucky/main arm64 libjsoncpp25 arm64 1.9.5-6build1 [78.2 kB] 170s Get:41 http://ftpmaster.internal/ubuntu plucky/main arm64 librhash0 arm64 1.4.3-3build1 [126 kB] 170s Get:42 http://ftpmaster.internal/ubuntu plucky/main arm64 cmake-data all 3.30.3-1 [2246 kB] 171s Get:43 http://ftpmaster.internal/ubuntu plucky/main arm64 cmake arm64 3.30.3-1 [10.9 MB] 171s Get:44 http://ftpmaster.internal/ubuntu plucky/main arm64 libdebhelper-perl all 13.20ubuntu1 [94.2 kB] 171s Get:45 http://ftpmaster.internal/ubuntu plucky/main arm64 libtool all 2.4.7-8 [166 kB] 171s Get:46 http://ftpmaster.internal/ubuntu plucky/main arm64 dh-autoreconf all 20 [16.1 kB] 171s Get:47 http://ftpmaster.internal/ubuntu plucky/main arm64 libarchive-zip-perl all 1.68-1 [90.2 kB] 171s Get:48 http://ftpmaster.internal/ubuntu plucky/main arm64 libfile-stripnondeterminism-perl all 1.14.0-1 [20.1 kB] 171s Get:49 http://ftpmaster.internal/ubuntu plucky/main arm64 dh-strip-nondeterminism all 1.14.0-1 [5058 B] 171s Get:50 http://ftpmaster.internal/ubuntu plucky/main arm64 debugedit arm64 1:5.1-1 [45.9 kB] 171s Get:51 http://ftpmaster.internal/ubuntu plucky/main arm64 dwz arm64 0.15-1build6 [113 kB] 171s Get:52 http://ftpmaster.internal/ubuntu plucky/main arm64 gettext arm64 0.22.5-2 [930 kB] 171s Get:53 http://ftpmaster.internal/ubuntu plucky/main arm64 intltool-debian all 0.35.0+20060710.6 [23.2 kB] 171s Get:54 http://ftpmaster.internal/ubuntu plucky/main arm64 po-debconf all 1.0.21+nmu1 [233 kB] 171s Get:55 http://ftpmaster.internal/ubuntu plucky/main arm64 debhelper all 13.20ubuntu1 [893 kB] 171s Get:56 http://ftpmaster.internal/ubuntu plucky/universe arm64 dh-python all 6.20241024 [112 kB] 171s Get:57 http://ftpmaster.internal/ubuntu plucky/main arm64 fonts-dejavu-mono all 2.37-8 [502 kB] 171s Get:58 http://ftpmaster.internal/ubuntu plucky/main arm64 fonts-dejavu-core all 2.37-8 [835 kB] 171s Get:59 http://ftpmaster.internal/ubuntu plucky/main arm64 fontconfig-config arm64 2.15.0-1.1ubuntu2 [37.4 kB] 171s Get:60 http://ftpmaster.internal/ubuntu plucky/main arm64 libbrotli-dev arm64 1.1.0-2build3 [359 kB] 171s Get:61 http://ftpmaster.internal/ubuntu plucky/main arm64 libbz2-dev arm64 1.0.8-6 [36.1 kB] 171s Get:62 http://ftpmaster.internal/ubuntu plucky/main arm64 libexpat1-dev arm64 2.6.4-1 [129 kB] 171s Get:63 http://ftpmaster.internal/ubuntu plucky/main arm64 libfontconfig1 arm64 2.15.0-1.1ubuntu2 [142 kB] 171s Get:64 http://ftpmaster.internal/ubuntu plucky/main arm64 zlib1g-dev arm64 1:1.3.dfsg+really1.3.1-1ubuntu1 [894 kB] 171s Get:65 http://ftpmaster.internal/ubuntu plucky/main arm64 libpng-dev arm64 1.6.44-2 [270 kB] 171s Get:66 http://ftpmaster.internal/ubuntu plucky/main arm64 libfreetype-dev arm64 2.13.3+dfsg-1 [574 kB] 171s Get:67 http://ftpmaster.internal/ubuntu plucky/main arm64 uuid-dev arm64 2.40.2-1ubuntu1 [53.6 kB] 171s Get:68 http://ftpmaster.internal/ubuntu plucky/main arm64 libpkgconf3 arm64 1.8.1-4 [31.4 kB] 171s Get:69 http://ftpmaster.internal/ubuntu plucky/main arm64 pkgconf-bin arm64 1.8.1-4 [20.9 kB] 171s Get:70 http://ftpmaster.internal/ubuntu plucky/main arm64 pkgconf arm64 1.8.1-4 [16.7 kB] 171s Get:71 http://ftpmaster.internal/ubuntu plucky/main arm64 libfontconfig-dev arm64 2.15.0-1.1ubuntu2 [165 kB] 171s Get:72 http://ftpmaster.internal/ubuntu plucky/main arm64 libpython3.12-dev arm64 3.12.7-3 [5565 kB] 172s Get:73 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 libpython3-dev arm64 3.12.7-1 [10.3 kB] 172s Get:74 http://ftpmaster.internal/ubuntu plucky/main arm64 libpython3.13-stdlib arm64 3.13.0-2 [2073 kB] 172s Get:75 http://ftpmaster.internal/ubuntu plucky/main arm64 libpython3.13 arm64 3.13.0-2 [2262 kB] 172s Get:76 http://ftpmaster.internal/ubuntu plucky/main arm64 libpython3.13-dev arm64 3.13.0-2 [5386 kB] 172s Get:77 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 libpython3-all-dev arm64 3.12.7-1 [916 B] 172s Get:78 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ab-glyph-rasterizer-dev arm64 0.1.7-1 [12.2 kB] 172s Get:79 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-libm-dev arm64 0.2.8-1 [101 kB] 172s Get:80 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ab-glyph-rasterizer+libm-dev arm64 0.1.7-1 [1062 B] 172s Get:81 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-core-maths-dev arm64 0.1.0-2 [7944 B] 172s Get:82 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ttf-parser-dev arm64 0.24.1-1 [148 kB] 172s Get:83 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-owned-ttf-parser-dev arm64 0.24.0-1 [129 kB] 172s Get:84 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ab-glyph-dev arm64 0.2.28-1 [20.7 kB] 172s Get:85 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-cfg-if-dev arm64 1.0.0-1 [10.5 kB] 172s Get:86 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-cpp-demangle-dev arm64 0.4.0-1 [66.1 kB] 172s Get:87 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-fallible-iterator-dev arm64 0.3.0-2 [20.3 kB] 172s Get:88 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-unicode-ident-dev arm64 1.0.13-1 [38.5 kB] 172s Get:89 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-proc-macro2-dev arm64 1.0.86-1 [44.8 kB] 172s Get:90 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-quote-dev arm64 1.0.37-1 [29.5 kB] 172s Get:91 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-syn-dev arm64 2.0.85-1 [219 kB] 172s Get:92 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-derive-arbitrary-dev arm64 1.3.2-1 [12.3 kB] 172s Get:93 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-arbitrary-dev arm64 1.3.2-1 [31.4 kB] 172s Get:94 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-equivalent-dev arm64 1.0.1-1 [8240 B] 172s Get:95 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-critical-section-dev arm64 1.1.3-1 [20.5 kB] 172s Get:96 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-serde-derive-dev arm64 1.0.210-1 [50.1 kB] 172s Get:97 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-serde-dev arm64 1.0.210-2 [66.4 kB] 172s Get:98 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-portable-atomic-dev arm64 1.9.0-4 [124 kB] 172s Get:99 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-libc-dev arm64 0.2.155-1 [367 kB] 172s Get:100 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-getrandom-dev arm64 0.2.12-1 [36.4 kB] 172s Get:101 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-smallvec-dev arm64 1.13.2-1 [35.5 kB] 172s Get:102 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-parking-lot-core-dev arm64 0.9.10-1 [32.6 kB] 172s Get:103 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-once-cell-dev arm64 1.20.2-1 [31.9 kB] 173s Get:104 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-crunchy-dev arm64 0.2.2-1 [5336 B] 173s Get:105 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-tiny-keccak-dev arm64 2.0.2-1 [20.9 kB] 173s Get:106 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-const-random-macro-dev arm64 0.1.16-2 [10.5 kB] 173s Get:107 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-const-random-dev arm64 0.1.17-2 [8588 B] 173s Get:108 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-version-check-dev arm64 0.9.5-1 [16.9 kB] 173s Get:109 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-byteorder-dev arm64 1.5.0-1 [22.4 kB] 173s Get:110 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-zerocopy-derive-dev arm64 0.7.32-2 [29.7 kB] 173s Get:111 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-zerocopy-dev arm64 0.7.32-1 [116 kB] 173s Get:112 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ahash-dev all 0.8.11-8 [37.9 kB] 173s Get:113 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-allocator-api2-dev arm64 0.2.16-1 [54.8 kB] 173s Get:114 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-compiler-builtins-dev arm64 0.1.101-1 [156 kB] 173s Get:115 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-either-dev arm64 1.13.0-1 [20.2 kB] 173s Get:116 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-crossbeam-utils-dev arm64 0.8.19-1 [41.1 kB] 173s Get:117 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-crossbeam-epoch-dev arm64 0.9.18-1 [42.3 kB] 173s Get:118 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-crossbeam-epoch+std-dev arm64 0.9.18-1 [1128 B] 173s Get:119 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-crossbeam-deque-dev arm64 0.8.5-1 [22.4 kB] 173s Get:120 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rayon-core-dev arm64 1.12.1-1 [63.7 kB] 173s Get:121 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rayon-dev arm64 1.10.0-1 [149 kB] 173s Get:122 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rustc-std-workspace-core-dev arm64 1.0.0-1 [3020 B] 173s Get:123 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-hashbrown-dev arm64 0.14.5-5 [110 kB] 173s Get:124 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-indexmap-dev arm64 2.2.6-1 [66.7 kB] 173s Get:125 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-stable-deref-trait-dev arm64 1.2.0-1 [9794 B] 173s Get:126 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-gimli-dev arm64 0.28.1-2 [209 kB] 173s Get:127 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-memmap2-dev arm64 0.9.3-1 [30.8 kB] 173s Get:128 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-crc32fast-dev arm64 1.4.2-1 [39.8 kB] 173s Get:129 http://ftpmaster.internal/ubuntu plucky/main arm64 pkg-config arm64 1.8.1-4 [7362 B] 173s Get:130 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-pkg-config-dev arm64 0.3.27-1 [21.5 kB] 173s Get:131 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-libz-sys-dev arm64 1.1.20-1 [19.8 kB] 173s Get:132 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-adler-dev arm64 1.0.2-2 [15.3 kB] 173s Get:133 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-miniz-oxide-dev arm64 0.7.1-1 [51.5 kB] 173s Get:134 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-flate2-dev arm64 1.0.34-1 [94.5 kB] 173s Get:135 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-sval-derive-dev arm64 2.6.1-2 [11.0 kB] 173s Get:136 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-sval-dev arm64 2.6.1-2 [28.0 kB] 173s Get:137 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-sval-ref-dev arm64 2.6.1-1 [8942 B] 173s Get:138 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-erased-serde-dev arm64 0.3.31-1 [22.7 kB] 173s Get:139 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-serde-fmt-dev all 1.0.3-3 [6956 B] 173s Get:140 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-syn-1-dev arm64 1.0.109-2 [188 kB] 173s Get:141 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-no-panic-dev arm64 0.1.13-1 [11.3 kB] 173s Get:142 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-itoa-dev arm64 1.0.9-1 [13.1 kB] 173s Get:143 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ryu-dev arm64 1.0.15-1 [41.7 kB] 173s Get:144 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-serde-json-dev arm64 1.0.128-1 [128 kB] 173s Get:145 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-serde-test-dev arm64 1.0.171-1 [20.6 kB] 173s Get:146 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-value-bag-serde1-dev arm64 1.9.0-1 [7820 B] 173s Get:147 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-sval-buffer-dev arm64 2.6.1-1 [16.7 kB] 173s Get:148 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-sval-dynamic-dev arm64 2.6.1-1 [9540 B] 173s Get:149 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-sval-fmt-dev arm64 2.6.1-1 [12.0 kB] 173s Get:150 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-sval-serde-dev arm64 2.6.1-1 [13.2 kB] 173s Get:151 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-value-bag-sval2-dev arm64 1.9.0-1 [7860 B] 173s Get:152 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-value-bag-dev arm64 1.9.0-1 [37.6 kB] 173s Get:153 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-log-dev arm64 0.4.22-1 [43.0 kB] 173s Get:154 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-memchr-dev arm64 2.7.4-1 [71.8 kB] 173s Get:155 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ppv-lite86-dev arm64 0.2.16-1 [21.9 kB] 173s Get:156 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rand-core-dev arm64 0.6.4-2 [23.8 kB] 173s Get:157 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rand-chacha-dev arm64 0.3.1-2 [16.9 kB] 173s Get:158 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rand-core+getrandom-dev arm64 0.6.4-2 [1052 B] 173s Get:159 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rand-core+serde-dev arm64 0.6.4-2 [1108 B] 173s Get:160 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rand-core+std-dev arm64 0.6.4-2 [1050 B] 173s Get:161 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rand-dev arm64 0.8.5-1 [77.5 kB] 173s Get:162 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-unicode-segmentation-dev arm64 1.11.0-1 [74.2 kB] 173s Get:163 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-convert-case-dev arm64 0.6.0-2 [19.5 kB] 174s Get:164 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-semver-dev arm64 1.0.23-1 [30.6 kB] 174s Get:165 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rustc-version-dev arm64 0.4.0-1 [13.8 kB] 174s Get:166 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-derive-more-0.99-dev arm64 0.99.18-1 [49.9 kB] 174s Get:167 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-cfg-if-0.1-dev arm64 0.1.10-2 [10.2 kB] 174s Get:168 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-blobby-dev arm64 0.3.1-1 [11.3 kB] 174s Get:169 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-typenum-dev arm64 1.17.0-2 [41.2 kB] 174s Get:170 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-zeroize-derive-dev arm64 1.4.2-1 [12.7 kB] 174s Get:171 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-zeroize-dev arm64 1.8.1-1 [21.6 kB] 174s Get:172 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-generic-array-dev arm64 0.14.7-1 [16.9 kB] 174s Get:173 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-block-buffer-dev arm64 0.10.2-2 [12.2 kB] 174s Get:174 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-const-oid-dev arm64 0.9.3-1 [40.9 kB] 174s Get:175 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-crypto-common-dev arm64 0.1.6-1 [10.5 kB] 174s Get:176 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-subtle-dev arm64 2.6.1-1 [16.1 kB] 174s Get:177 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-digest-dev arm64 0.10.7-2 [20.9 kB] 174s Get:178 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-static-assertions-dev arm64 1.1.0-1 [19.0 kB] 174s Get:179 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-twox-hash-dev arm64 1.6.3-1 [21.6 kB] 174s Get:180 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ruzstd-dev arm64 0.5.0-1 [44.6 kB] 174s Get:181 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-object-dev arm64 0.32.2-1 [228 kB] 174s Get:182 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rustc-demangle-dev arm64 0.1.21-1 [27.7 kB] 174s Get:183 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-addr2line-dev arm64 0.21.0-2 [36.4 kB] 174s Get:184 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-aho-corasick-dev arm64 1.1.3-1 [146 kB] 174s Get:185 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-bitflags-1-dev arm64 1.3.2-5 [25.3 kB] 174s Get:186 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-anes-dev arm64 0.1.6-1 [21.1 kB] 174s Get:187 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-anstyle-dev arm64 1.0.8-1 [16.7 kB] 174s Get:188 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-arrayvec-dev arm64 0.7.4-2 [29.9 kB] 174s Get:189 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-utf8parse-dev arm64 0.2.1-1 [15.0 kB] 174s Get:190 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-anstyle-parse-dev arm64 0.2.1-1 [17.1 kB] 174s Get:191 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-anstyle-query-dev arm64 1.0.0-1 [9768 B] 174s Get:192 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-colorchoice-dev arm64 1.0.0-1 [8336 B] 174s Get:193 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-anstream-dev arm64 0.6.15-1 [25.7 kB] 174s Get:194 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-jobserver-dev arm64 0.1.32-1 [29.1 kB] 174s Get:195 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-shlex-dev arm64 1.3.0-1 [20.1 kB] 174s Get:196 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-cc-dev arm64 1.1.14-1 [73.6 kB] 174s Get:197 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-backtrace-dev arm64 0.3.69-2 [69.9 kB] 174s Get:198 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-anyhow-dev arm64 1.0.86-1 [44.3 kB] 174s Get:199 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-bytecheck-derive-dev arm64 0.6.12-1 [7086 B] 174s Get:200 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ptr-meta-derive-dev arm64 0.1.4-1 [3964 B] 174s Get:201 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ptr-meta-dev arm64 0.1.4-1 [7342 B] 174s Get:202 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-simdutf8-dev arm64 0.1.4-4 [27.2 kB] 174s Get:203 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-bytemuck-derive-dev arm64 1.5.0-2 [18.7 kB] 174s Get:204 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-bytemuck-dev arm64 1.14.0-1 [42.7 kB] 174s Get:205 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-atomic-dev arm64 0.6.0-1 [15.5 kB] 174s Get:206 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-md5-asm-dev arm64 0.5.0-2 [7512 B] 174s Get:207 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-md-5-dev arm64 0.10.6-1 [17.5 kB] 174s Get:208 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-cpufeatures-dev arm64 0.2.11-1 [14.9 kB] 174s Get:209 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-sha1-asm-dev arm64 0.5.1-2 [8058 B] 175s Get:210 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-sha1-dev arm64 0.10.6-1 [16.0 kB] 175s Get:211 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-slog-dev arm64 2.7.0-1 [44.0 kB] 175s Get:212 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-uuid-dev arm64 1.10.0-1 [44.2 kB] 175s Get:213 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-bytecheck-dev arm64 0.6.12-1 [10.2 kB] 175s Get:214 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-autocfg-dev arm64 1.1.0-1 [15.1 kB] 175s Get:215 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-num-traits-dev arm64 0.2.19-2 [46.2 kB] 175s Get:216 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-funty-dev arm64 2.0.0-1 [13.8 kB] 175s Get:217 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-radium-dev arm64 1.1.0-1 [14.9 kB] 175s Get:218 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-tap-dev arm64 1.0.1-1 [12.7 kB] 175s Get:219 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-traitobject-dev arm64 0.1.0-1 [4540 B] 175s Get:220 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-unsafe-any-dev arm64 0.4.2-2 [4622 B] 175s Get:221 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-typemap-dev arm64 0.3.3-2 [6724 B] 175s Get:222 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-wyz-dev arm64 0.5.1-1 [19.7 kB] 175s Get:223 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-bitvec-dev arm64 1.0.1-1 [179 kB] 175s Get:224 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-bytes-dev arm64 1.8.0-1 [56.9 kB] 175s Get:225 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rend-dev arm64 0.4.0-1 [10.3 kB] 175s Get:226 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rkyv-derive-dev arm64 0.7.44-1 [17.5 kB] 175s Get:227 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-seahash-dev arm64 4.1.0-1 [25.1 kB] 175s Get:228 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-smol-str-dev arm64 0.2.0-1 [15.2 kB] 175s Get:229 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-tinyvec-dev arm64 1.6.0-2 [37.7 kB] 175s Get:230 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-tinyvec-macros-dev arm64 0.1.0-1 [3852 B] 175s Get:231 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-tinyvec+tinyvec-macros-dev arm64 1.6.0-2 [1124 B] 175s Get:232 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rkyv-dev arm64 0.7.44-1 [94.4 kB] 175s Get:233 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-num-complex-dev arm64 0.4.6-2 [30.8 kB] 175s Get:234 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-approx-dev arm64 0.5.1-1 [16.0 kB] 175s Get:235 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-array-init-dev arm64 2.0.1-1 [12.3 kB] 175s Get:236 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-async-attributes-dev all 1.1.2-6 [6756 B] 175s Get:237 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-concurrent-queue-dev arm64 2.5.0-4 [23.9 kB] 175s Get:238 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-parking-dev arm64 2.2.0-1 [11.6 kB] 175s Get:239 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-pin-project-lite-dev arm64 0.2.13-1 [30.2 kB] 175s Get:240 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-event-listener-dev all 5.3.1-8 [29.6 kB] 175s Get:241 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-event-listener-strategy-dev arm64 0.5.2-3 [12.6 kB] 175s Get:242 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-futures-core-dev arm64 0.3.30-1 [16.7 kB] 175s Get:243 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-async-channel-dev all 2.3.1-8 [13.1 kB] 175s Get:244 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-async-task-dev all 4.7.1-3 [29.4 kB] 175s Get:245 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-fastrand-dev arm64 2.1.1-1 [17.8 kB] 175s Get:246 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-futures-io-dev arm64 0.3.31-1 [11.2 kB] 175s Get:247 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-futures-lite-dev arm64 2.3.0-2 [38.6 kB] 175s Get:248 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-slab-dev arm64 0.4.9-1 [21.2 kB] 175s Get:249 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-async-executor-dev all 1.13.1-1 [18.7 kB] 175s Get:250 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-async-lock-dev all 3.4.0-4 [29.3 kB] 175s Get:251 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-atomic-waker-dev arm64 1.1.2-1 [14.3 kB] 175s Get:252 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-tracing-attributes-dev arm64 0.1.27-1 [33.3 kB] 175s Get:253 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-valuable-derive-dev arm64 0.1.0-1 [5942 B] 175s Get:254 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-valuable-dev arm64 0.1.0-4 [23.5 kB] 175s Get:255 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-tracing-core-dev arm64 0.1.32-1 [53.8 kB] 175s Get:256 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-tracing-dev arm64 0.1.40-1 [69.5 kB] 175s Get:257 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-blocking-dev all 1.6.1-5 [17.5 kB] 175s Get:258 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-async-fs-dev all 2.1.2-4 [15.3 kB] 175s Get:259 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-bitflags-dev arm64 2.6.0-1 [41.1 kB] 175s Get:260 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-compiler-builtins+core-dev arm64 0.1.101-1 [1090 B] 175s Get:261 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-compiler-builtins+rustc-dep-of-std-dev arm64 0.1.101-1 [1104 B] 175s Get:262 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-errno-dev arm64 0.3.8-1 [13.0 kB] 175s Get:263 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-linux-raw-sys-dev arm64 0.4.14-1 [138 kB] 175s Get:264 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rustix-dev arm64 0.38.32-1 [274 kB] 175s Get:265 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-polling-dev arm64 3.4.0-1 [47.8 kB] 175s Get:266 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-async-io-dev arm64 2.3.3-4 [41.0 kB] 175s Get:267 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-mio-dev arm64 1.0.2-2 [87.6 kB] 175s Get:268 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-owning-ref-dev arm64 0.4.1-1 [13.7 kB] 175s Get:269 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-scopeguard-dev arm64 1.2.0-1 [13.3 kB] 175s Get:270 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-lock-api-dev arm64 0.4.12-1 [22.9 kB] 175s Get:271 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-parking-lot-dev arm64 0.12.3-1 [38.7 kB] 175s Get:272 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-signal-hook-registry-dev arm64 1.4.0-1 [19.2 kB] 175s Get:273 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-socket2-dev arm64 0.5.7-1 [48.3 kB] 175s Get:274 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-tokio-macros-dev arm64 2.4.0-2 [14.0 kB] 175s Get:275 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-tokio-dev arm64 1.39.3-3 [561 kB] 175s Get:276 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-async-global-executor-dev arm64 2.4.1-5 [14.6 kB] 175s Get:277 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-async-net-dev all 2.0.0-4 [14.6 kB] 175s Get:278 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-async-signal-dev arm64 0.2.10-1 [16.0 kB] 175s Get:279 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-async-process-dev all 2.3.0-1 [21.2 kB] 175s Get:280 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-kv-log-macro-dev all 1.0.8-4 [7290 B] 175s Get:281 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-pin-utils-dev arm64 0.1.0-1 [9340 B] 176s Get:282 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-async-std-dev all 1.13.0-1 [170 kB] 176s Get:283 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-base64-dev arm64 0.21.7-1 [65.1 kB] 176s Get:284 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-bit-vec-dev arm64 0.6.3-1 [21.1 kB] 176s Get:285 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-bit-set-dev arm64 0.5.2-1 [15.7 kB] 176s Get:286 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-bit-set+std-dev arm64 0.5.2-1 [1084 B] 176s Get:287 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-regex-syntax-dev arm64 0.8.2-1 [200 kB] 176s Get:288 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-regex-automata-dev arm64 0.4.7-1 [424 kB] 176s Get:289 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-bstr-dev arm64 1.7.0-2build1 [271 kB] 176s Get:290 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-bumpalo-dev arm64 3.16.0-1 [75.7 kB] 176s Get:291 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-cast-dev arm64 0.3.0-1 [13.1 kB] 176s Get:292 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-iana-time-zone-dev arm64 0.1.60-1 [25.1 kB] 176s Get:293 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-wasm-bindgen-shared-dev arm64 0.2.87-1 [9090 B] 176s Get:294 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-wasm-bindgen-backend-dev arm64 0.2.87-1 [27.0 kB] 176s Get:295 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-wasm-bindgen-macro-support-dev arm64 0.2.87-1 [21.2 kB] 176s Get:296 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-wasm-bindgen-macro-dev arm64 0.2.87-1 [16.6 kB] 176s Get:297 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-wasm-bindgen-dev arm64 0.2.87-1 [157 kB] 176s Get:298 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-wasm-bindgen-macro-support+spans-dev arm64 0.2.87-1 [1074 B] 176s Get:299 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-wasm-bindgen-macro+spans-dev arm64 0.2.87-1 [1058 B] 176s Get:300 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-wasm-bindgen+spans-dev arm64 0.2.87-1 [1038 B] 176s Get:301 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-wasm-bindgen+default-dev arm64 0.2.87-1 [1046 B] 176s Get:302 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-js-sys-dev arm64 0.3.64-1 [71.9 kB] 176s Get:303 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-pure-rust-locales-dev arm64 0.8.1-1 [112 kB] 176s Get:304 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-chrono-dev arm64 0.4.38-2 [172 kB] 176s Get:305 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-regex-dev arm64 1.10.6-1 [199 kB] 176s Get:306 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-parse-zoneinfo-dev arm64 0.3.0-1 [71.0 kB] 176s Get:307 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-siphasher-dev arm64 0.3.10-1 [12.0 kB] 176s Get:308 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-phf-shared-dev arm64 0.11.2-1 [15.6 kB] 176s Get:309 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-phf-dev arm64 0.11.2-1 [21.6 kB] 176s Get:310 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-uncased-dev arm64 0.9.6-2 [12.2 kB] 176s Get:311 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-phf-shared+uncased-dev arm64 0.11.2-1 [1028 B] 176s Get:312 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-phf+uncased-dev arm64 0.11.2-1 [1028 B] 176s Get:313 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ciborium-io-dev arm64 0.2.2-1 [8180 B] 176s Get:314 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-half-dev arm64 1.8.2-4 [34.8 kB] 176s Get:315 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ciborium-ll-dev arm64 0.2.2-1 [15.8 kB] 177s Get:316 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ciborium-dev arm64 0.2.2-2 [32.6 kB] 177s Get:317 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-clap-lex-dev arm64 0.7.2-2 [14.3 kB] 177s Get:318 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-strsim-dev arm64 0.11.1-1 [15.9 kB] 177s Get:319 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-terminal-size-dev arm64 0.3.0-2 [12.6 kB] 177s Get:320 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-unicase-dev arm64 2.7.0-1 [19.4 kB] 177s Get:321 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-unicode-width-dev arm64 0.1.14-1 [196 kB] 177s Get:322 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-clap-builder-dev arm64 4.5.15-2 [135 kB] 177s Get:323 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-heck-dev arm64 0.4.1-1 [13.3 kB] 177s Get:324 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-clap-derive-dev arm64 4.5.13-2 [29.3 kB] 177s Get:325 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-clap-dev arm64 4.5.16-1 [52.3 kB] 177s Get:326 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-csv-core-dev arm64 0.1.11-1 [25.9 kB] 177s Get:327 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-csv-dev arm64 1.3.0-1 [729 kB] 177s Get:328 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-futures-sink-dev arm64 0.3.31-1 [10.1 kB] 177s Get:329 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-futures-channel-dev arm64 0.3.30-1 [31.8 kB] 177s Get:330 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-futures-task-dev arm64 0.3.30-1 [13.5 kB] 177s Get:331 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-futures-macro-dev arm64 0.3.30-1 [13.3 kB] 177s Get:332 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-futures-util-dev arm64 0.3.30-2 [127 kB] 177s Get:333 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-num-cpus-dev arm64 1.16.0-1 [18.1 kB] 177s Get:334 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-futures-executor-dev arm64 0.3.30-1 [19.8 kB] 177s Get:335 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-futures-dev arm64 0.3.30-2 [53.2 kB] 177s Get:336 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-is-terminal-dev arm64 0.4.13-1 [8264 B] 177s Get:337 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-itertools-dev arm64 0.10.5-1 [101 kB] 177s Get:338 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-oorandom-dev arm64 11.1.3-1 [11.3 kB] 177s Get:339 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-winapi-i686-pc-windows-gnu-dev arm64 0.4.0-1 [3652 B] 177s Get:340 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-winapi-x86-64-pc-windows-gnu-dev arm64 0.4.0-1 [3660 B] 177s Get:341 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-winapi-dev arm64 0.3.9-1 [953 kB] 177s Get:342 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-dirs-sys-next-dev arm64 0.1.1-1 [12.1 kB] 177s Get:343 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-dirs-next-dev arm64 2.0.0-1 [13.1 kB] 177s Get:344 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-float-ord-dev arm64 0.3.2-1 [9400 B] 177s Get:345 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-cmake-dev arm64 0.1.45-1 [16.0 kB] 177s Get:346 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-freetype-sys-dev arm64 0.13.1-1 [11.8 kB] 177s Get:347 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-freetype-dev arm64 0.7.0-4 [20.4 kB] 177s Get:348 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-spin-dev arm64 0.9.8-4 [33.4 kB] 177s Get:349 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-lazy-static-dev arm64 1.5.0-1 [14.2 kB] 177s Get:350 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-pathfinder-simd-dev arm64 0.5.2-1 [20.1 kB] 177s Get:351 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-pathfinder-geometry-dev arm64 0.5.1-1 [13.2 kB] 177s Get:352 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-winapi-util-dev arm64 0.1.6-1 [14.0 kB] 177s Get:353 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-same-file-dev arm64 1.0.6-1 [11.5 kB] 177s Get:354 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-walkdir-dev arm64 2.5.0-1 [24.5 kB] 177s Get:355 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-const-cstr-dev arm64 0.3.0-1 [9068 B] 177s Get:356 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-libloading-dev arm64 0.8.5-1 [29.2 kB] 177s Get:357 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-dlib-dev arm64 0.5.2-2 [7970 B] 177s Get:358 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-yeslogic-fontconfig-sys-dev arm64 3.0.1-1 [8110 B] 177s Get:359 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-font-kit-dev arm64 0.11.0-2 [56.2 kB] 177s Get:360 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-color-quant-dev arm64 1.1.0-1 [8462 B] 178s Get:361 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-weezl-dev arm64 0.1.5-1 [30.3 kB] 178s Get:362 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-gif-dev arm64 0.11.3-1 [31.9 kB] 178s Get:363 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-jpeg-decoder-dev arm64 0.3.0-1 [717 kB] 178s Get:364 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-num-integer-dev arm64 0.1.46-1 [22.6 kB] 178s Get:365 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-humantime-dev arm64 2.1.0-1 [18.2 kB] 178s Get:366 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-termcolor-dev arm64 1.4.1-1 [19.7 kB] 178s Get:367 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-env-logger-dev arm64 0.10.2-2 [34.4 kB] 178s Get:368 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-quickcheck-dev arm64 1.0.3-3 [27.9 kB] 178s Get:369 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-num-bigint-dev arm64 0.4.6-1 [84.9 kB] 178s Get:370 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-num-rational-dev arm64 0.4.2-1 [28.7 kB] 178s Get:371 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-png-dev arm64 0.17.7-3 [63.4 kB] 178s Get:372 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-qoi-dev arm64 0.4.1-2 [56.7 kB] 178s Get:373 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-tiff-dev arm64 0.9.0-1 [1413 kB] 178s Get:374 http://ftpmaster.internal/ubuntu plucky/main arm64 libsharpyuv0 arm64 1.4.0-0.1 [16.3 kB] 178s Get:375 http://ftpmaster.internal/ubuntu plucky/main arm64 libwebp7 arm64 1.4.0-0.1 [192 kB] 178s Get:376 http://ftpmaster.internal/ubuntu plucky/main arm64 libwebpdemux2 arm64 1.4.0-0.1 [12.3 kB] 178s Get:377 http://ftpmaster.internal/ubuntu plucky/main arm64 libwebpmux3 arm64 1.4.0-0.1 [25.1 kB] 178s Get:378 http://ftpmaster.internal/ubuntu plucky/main arm64 libwebpdecoder3 arm64 1.4.0-0.1 [89.0 kB] 178s Get:379 http://ftpmaster.internal/ubuntu plucky/main arm64 libsharpyuv-dev arm64 1.4.0-0.1 [17.9 kB] 178s Get:380 http://ftpmaster.internal/ubuntu plucky/main arm64 libwebp-dev arm64 1.4.0-0.1 [339 kB] 178s Get:381 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-libwebp-sys-dev arm64 0.9.5-1build1 [1357 kB] 179s Get:382 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-webp-dev arm64 0.2.6-1 [1846 kB] 179s Get:383 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-image-dev arm64 0.24.7-2 [229 kB] 179s Get:384 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-plotters-backend-dev arm64 0.3.7-1 [15.7 kB] 179s Get:385 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-plotters-bitmap-dev arm64 0.3.3-3 [17.1 kB] 179s Get:386 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-plotters-svg-dev arm64 0.3.5-1 [9258 B] 179s Get:387 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-web-sys-dev arm64 0.3.64-2 [581 kB] 179s Get:388 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-plotters-dev arm64 0.3.5-4 [118 kB] 179s Get:389 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-smol-dev all 2.0.2-1 [205 kB] 179s Get:390 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-tinytemplate-dev arm64 1.2.1-1 [26.8 kB] 179s Get:391 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-criterion-dev all 0.5.1-6 [104 kB] 179s Get:392 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-phf-generator-dev arm64 0.11.2-2 [12.3 kB] 179s Get:393 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-phf-codegen-dev arm64 0.11.2-1 [14.3 kB] 179s Get:394 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-chrono-tz-build-dev arm64 0.2.1-1 [12.1 kB] 179s Get:395 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-chrono-tz-dev arm64 0.8.6-2 [513 kB] 179s Get:396 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ctor-dev arm64 0.1.26-1 [12.0 kB] 179s Get:397 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-powerfmt-macros-dev arm64 0.1.0-1 [10.5 kB] 179s Get:398 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-powerfmt-dev arm64 0.2.0-1 [16.5 kB] 179s Get:399 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-deranged-dev arm64 0.3.11-1 [18.4 kB] 179s Get:400 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-eui48-dev arm64 1.1.0-2 [16.1 kB] 179s Get:401 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-indenter-dev arm64 0.3.3-1 [8646 B] 179s Get:402 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-eyre-dev arm64 0.6.12-1 [38.0 kB] 179s Get:403 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-eyre+default-dev arm64 0.6.12-1 [1050 B] 179s Get:404 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-fancy-regex-dev arm64 0.11.0-2 [54.7 kB] 179s Get:405 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-fnv-dev arm64 1.0.7-1 [12.8 kB] 179s Get:406 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-geo-types-dev arm64 0.7.11-2 [32.8 kB] 180s Get:407 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-ghost-dev arm64 0.1.5-1 [16.1 kB] 180s Get:408 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-hmac-dev arm64 0.12.1-1 [43.9 kB] 180s Get:409 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-indoc-dev arm64 2.0.5-1 [16.7 kB] 180s Get:410 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-inventory-dev arm64 0.3.2-1 [13.5 kB] 180s Get:411 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-memoffset-dev arm64 0.8.0-1 [10.9 kB] 180s Get:412 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-num-conv-dev arm64 0.1.0-1 [8990 B] 180s Get:413 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-num-threads-dev arm64 0.1.7-1 [9150 B] 180s Get:414 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-postgres-derive-dev arm64 0.4.5-1 [13.4 kB] 180s Get:415 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-sha2-asm-dev arm64 0.6.2-2 [14.4 kB] 180s Get:416 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-sha2-dev arm64 0.10.8-1 [25.6 kB] 180s Get:417 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-unicode-bidi-dev arm64 0.3.13-1 [39.8 kB] 180s Get:418 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-unicode-normalization-dev arm64 0.1.22-1 [104 kB] 180s Get:419 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-stringprep-dev arm64 0.1.2-1 [16.5 kB] 180s Get:420 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-postgres-protocol-dev arm64 0.6.6-2 [25.9 kB] 180s Get:421 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-time-core-dev arm64 0.1.2-1 [9134 B] 180s Get:422 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-time-macros-dev arm64 0.2.16-1 [25.1 kB] 180s Get:423 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-time-dev arm64 0.3.36-2 [99.4 kB] 180s Get:424 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-postgres-types-dev arm64 0.2.6-2 [30.1 kB] 180s Get:425 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rand-xorshift-dev arm64 0.3.0-2 [10.9 kB] 180s Get:426 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-quick-error-dev arm64 2.0.1-1 [15.6 kB] 180s Get:427 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-tempfile-dev arm64 3.10.1-1 [33.7 kB] 180s Get:428 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rusty-fork-dev arm64 0.3.0-1 [20.4 kB] 180s Get:429 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-wait-timeout-dev arm64 0.2.0-1 [14.2 kB] 180s Get:430 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rusty-fork+wait-timeout-dev arm64 0.3.0-1 [1132 B] 180s Get:431 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-unarray-dev arm64 0.1.4-1 [14.6 kB] 180s Get:432 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-proptest-dev arm64 1.5.0-2 [171 kB] 180s Get:433 http://ftpmaster.internal/ubuntu plucky/universe arm64 llvm-19-runtime arm64 1:19.1.2-1ubuntu1 [532 kB] 180s Get:434 http://ftpmaster.internal/ubuntu plucky/universe arm64 llvm-runtime arm64 1:19.0-60~exp1 [5608 B] 180s Get:435 http://ftpmaster.internal/ubuntu plucky/universe arm64 llvm-19-linker-tools arm64 1:19.1.2-1ubuntu1 [1232 kB] 181s Get:436 http://ftpmaster.internal/ubuntu plucky/universe arm64 libpfm4 arm64 4.13.0+git83-g91970fe-1 [71.9 kB] 181s Get:437 http://ftpmaster.internal/ubuntu plucky/universe arm64 llvm-19 arm64 1:19.1.2-1ubuntu1 [17.0 MB] 183s Get:438 http://ftpmaster.internal/ubuntu plucky/universe arm64 llvm arm64 1:19.0-60~exp1 [4140 B] 183s Get:439 http://ftpmaster.internal/ubuntu plucky/universe arm64 binutils-mingw-w64-x86-64 arm64 2.43.1-4ubuntu1+12 [3460 kB] 183s Get:440 http://ftpmaster.internal/ubuntu plucky/universe arm64 binutils-mingw-w64-i686 arm64 2.43.1-4ubuntu1+12 [3166 kB] 183s Get:441 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-python3-dll-a-dev arm64 0.2.10-1 [31.6 kB] 183s Get:442 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-target-lexicon-dev arm64 0.12.14-1 [25.1 kB] 183s Get:443 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-pyo3-build-config-dev arm64 0.22.6-1 [30.8 kB] 183s Get:444 http://ftpmaster.internal/ubuntu plucky/main arm64 python3.12-dev arm64 3.12.7-3 [505 kB] 183s Get:445 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-pyo3-ffi-dev arm64 0.22.6-1build1 [62.6 kB] 183s Get:446 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-pyo3-macros-backend-dev arm64 0.22.6-1 [58.5 kB] 183s Get:447 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-pyo3-macros-dev arm64 0.22.6-1 [10.4 kB] 183s Get:448 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rust-decimal-dev arm64 1.36.0-1 [114 kB] 183s Get:449 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-unindent-dev arm64 0.2.3-1 [9188 B] 183s Get:450 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-pyo3-dev arm64 0.22.6-1 [415 kB] 183s Get:451 http://ftpmaster.internal/ubuntu plucky/universe arm64 librust-rustc-hash-dev arm64 1.1.0-1 [10.8 kB] 183s Get:452 http://ftpmaster.internal/ubuntu plucky/universe arm64 pybuild-plugin-autopkgtest all 6.20241024 [1746 B] 183s Get:453 http://ftpmaster.internal/ubuntu plucky/main arm64 python3-packaging all 24.2-1 [51.5 kB] 183s Get:454 http://ftpmaster.internal/ubuntu plucky/universe arm64 python3-pyproject-hooks all 1.2.0-1 [10.2 kB] 183s Get:455 http://ftpmaster.internal/ubuntu plucky/universe arm64 python3-toml all 0.10.2-1 [16.5 kB] 183s Get:456 http://ftpmaster.internal/ubuntu plucky/universe arm64 python3-wheel all 0.45.0-1 [57.7 kB] 183s Get:457 http://ftpmaster.internal/ubuntu plucky/universe arm64 python3-build all 1.2.2-1 [31.0 kB] 183s Get:458 http://ftpmaster.internal/ubuntu plucky/universe arm64 python3-installer all 0.7.0+dfsg1-3 [17.4 kB] 183s Get:459 http://ftpmaster.internal/ubuntu plucky/universe arm64 pybuild-plugin-pyproject all 6.20241024 [1728 B] 183s Get:460 http://ftpmaster.internal/ubuntu plucky/main arm64 python3.13 arm64 3.13.0-2 [719 kB] 183s Get:461 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 python3-all arm64 3.12.7-1 [890 B] 183s Get:462 http://ftpmaster.internal/ubuntu plucky/main arm64 python3-dateutil all 2.9.0-3 [80.2 kB] 183s Get:463 http://ftpmaster.internal/ubuntu plucky/main arm64 python3-sortedcontainers all 2.4.0-2 [27.6 kB] 183s Get:464 http://ftpmaster.internal/ubuntu plucky/universe arm64 python3-hypothesis all 6.119.3-1 [329 kB] 183s Get:465 http://ftpmaster.internal/ubuntu plucky/universe arm64 python3-iniconfig all 1.1.1-2 [6024 B] 183s Get:466 http://ftpmaster.internal/ubuntu plucky/universe arm64 python3-pluggy all 1.5.0-1 [21.0 kB] 183s Get:467 http://ftpmaster.internal/ubuntu plucky/universe arm64 python3-pytest all 8.3.3-1 [251 kB] 184s Get:468 http://ftpmaster.internal/ubuntu plucky/universe arm64 python3-regex arm64 0.1.20240724-1build1 [285 kB] 184s Get:469 http://ftpmaster.internal/ubuntu plucky/main arm64 python3-semantic-version all 2.10.0-2 [15.1 kB] 184s Get:470 http://ftpmaster.internal/ubuntu plucky/main arm64 rustc arm64 1.80.1ubuntu2 [2754 B] 184s Get:471 http://ftpmaster.internal/ubuntu plucky/main arm64 cargo arm64 1.80.1ubuntu2 [2244 B] 184s Get:472 http://ftpmaster.internal/ubuntu plucky/universe arm64 python3-setuptools-rust all 1.9.0+dfsg-2 [23.1 kB] 184s Get:473 http://ftpmaster.internal/ubuntu plucky-proposed/universe arm64 python3-tiktoken arm64 0.8.0-1build1 [753 kB] 185s Fetched 223 MB in 20s (11.0 MB/s) 185s Selecting previously unselected package libpython3.13-minimal:arm64. 185s (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 ... 80032 files and directories currently installed.) 185s Preparing to unpack .../000-libpython3.13-minimal_3.13.0-2_arm64.deb ... 185s Unpacking libpython3.13-minimal:arm64 (3.13.0-2) ... 185s Selecting previously unselected package python3.13-minimal. 185s Preparing to unpack .../001-python3.13-minimal_3.13.0-2_arm64.deb ... 185s Unpacking python3.13-minimal (3.13.0-2) ... 185s Selecting previously unselected package m4. 185s Preparing to unpack .../002-m4_1.4.19-4build1_arm64.deb ... 185s Unpacking m4 (1.4.19-4build1) ... 185s Selecting previously unselected package autoconf. 185s Preparing to unpack .../003-autoconf_2.72-3_all.deb ... 185s Unpacking autoconf (2.72-3) ... 185s Selecting previously unselected package autotools-dev. 185s Preparing to unpack .../004-autotools-dev_20220109.1_all.deb ... 185s Unpacking autotools-dev (20220109.1) ... 185s Selecting previously unselected package automake. 185s Preparing to unpack .../005-automake_1%3a1.16.5-1.3ubuntu1_all.deb ... 185s Unpacking automake (1:1.16.5-1.3ubuntu1) ... 185s Selecting previously unselected package autopoint. 185s Preparing to unpack .../006-autopoint_0.22.5-2_all.deb ... 185s Unpacking autopoint (0.22.5-2) ... 186s Selecting previously unselected package libisl23:arm64. 186s Preparing to unpack .../007-libisl23_0.27-1_arm64.deb ... 186s Unpacking libisl23:arm64 (0.27-1) ... 186s Selecting previously unselected package libmpc3:arm64. 186s Preparing to unpack .../008-libmpc3_1.3.1-1build2_arm64.deb ... 186s Unpacking libmpc3:arm64 (1.3.1-1build2) ... 186s Selecting previously unselected package cpp-14-aarch64-linux-gnu. 186s Preparing to unpack .../009-cpp-14-aarch64-linux-gnu_14.2.0-8ubuntu1_arm64.deb ... 186s Unpacking cpp-14-aarch64-linux-gnu (14.2.0-8ubuntu1) ... 186s Selecting previously unselected package cpp-14. 186s Preparing to unpack .../010-cpp-14_14.2.0-8ubuntu1_arm64.deb ... 186s Unpacking cpp-14 (14.2.0-8ubuntu1) ... 186s Selecting previously unselected package cpp-aarch64-linux-gnu. 186s Preparing to unpack .../011-cpp-aarch64-linux-gnu_4%3a14.1.0-2ubuntu1_arm64.deb ... 186s Unpacking cpp-aarch64-linux-gnu (4:14.1.0-2ubuntu1) ... 186s Selecting previously unselected package cpp. 186s Preparing to unpack .../012-cpp_4%3a14.1.0-2ubuntu1_arm64.deb ... 186s Unpacking cpp (4:14.1.0-2ubuntu1) ... 186s Selecting previously unselected package libcc1-0:arm64. 186s Preparing to unpack .../013-libcc1-0_14.2.0-8ubuntu1_arm64.deb ... 186s Unpacking libcc1-0:arm64 (14.2.0-8ubuntu1) ... 186s Selecting previously unselected package libgomp1:arm64. 186s Preparing to unpack .../014-libgomp1_14.2.0-8ubuntu1_arm64.deb ... 186s Unpacking libgomp1:arm64 (14.2.0-8ubuntu1) ... 186s Selecting previously unselected package libitm1:arm64. 186s Preparing to unpack .../015-libitm1_14.2.0-8ubuntu1_arm64.deb ... 186s Unpacking libitm1:arm64 (14.2.0-8ubuntu1) ... 186s Selecting previously unselected package libasan8:arm64. 186s Preparing to unpack .../016-libasan8_14.2.0-8ubuntu1_arm64.deb ... 186s Unpacking libasan8:arm64 (14.2.0-8ubuntu1) ... 187s Selecting previously unselected package liblsan0:arm64. 187s Preparing to unpack .../017-liblsan0_14.2.0-8ubuntu1_arm64.deb ... 187s Unpacking liblsan0:arm64 (14.2.0-8ubuntu1) ... 187s Selecting previously unselected package libtsan2:arm64. 187s Preparing to unpack .../018-libtsan2_14.2.0-8ubuntu1_arm64.deb ... 187s Unpacking libtsan2:arm64 (14.2.0-8ubuntu1) ... 187s Selecting previously unselected package libubsan1:arm64. 187s Preparing to unpack .../019-libubsan1_14.2.0-8ubuntu1_arm64.deb ... 187s Unpacking libubsan1:arm64 (14.2.0-8ubuntu1) ... 187s Selecting previously unselected package libhwasan0:arm64. 187s Preparing to unpack .../020-libhwasan0_14.2.0-8ubuntu1_arm64.deb ... 187s Unpacking libhwasan0:arm64 (14.2.0-8ubuntu1) ... 187s Selecting previously unselected package libgcc-14-dev:arm64. 187s Preparing to unpack .../021-libgcc-14-dev_14.2.0-8ubuntu1_arm64.deb ... 187s Unpacking libgcc-14-dev:arm64 (14.2.0-8ubuntu1) ... 187s Selecting previously unselected package gcc-14-aarch64-linux-gnu. 187s Preparing to unpack .../022-gcc-14-aarch64-linux-gnu_14.2.0-8ubuntu1_arm64.deb ... 187s Unpacking gcc-14-aarch64-linux-gnu (14.2.0-8ubuntu1) ... 188s Selecting previously unselected package gcc-14. 188s Preparing to unpack .../023-gcc-14_14.2.0-8ubuntu1_arm64.deb ... 188s Unpacking gcc-14 (14.2.0-8ubuntu1) ... 188s Selecting previously unselected package gcc-aarch64-linux-gnu. 188s Preparing to unpack .../024-gcc-aarch64-linux-gnu_4%3a14.1.0-2ubuntu1_arm64.deb ... 188s Unpacking gcc-aarch64-linux-gnu (4:14.1.0-2ubuntu1) ... 188s Selecting previously unselected package gcc. 188s Preparing to unpack .../025-gcc_4%3a14.1.0-2ubuntu1_arm64.deb ... 188s Unpacking gcc (4:14.1.0-2ubuntu1) ... 188s Selecting previously unselected package libstdc++-14-dev:arm64. 188s Preparing to unpack .../026-libstdc++-14-dev_14.2.0-8ubuntu1_arm64.deb ... 188s Unpacking libstdc++-14-dev:arm64 (14.2.0-8ubuntu1) ... 188s Selecting previously unselected package g++-14-aarch64-linux-gnu. 188s Preparing to unpack .../027-g++-14-aarch64-linux-gnu_14.2.0-8ubuntu1_arm64.deb ... 188s Unpacking g++-14-aarch64-linux-gnu (14.2.0-8ubuntu1) ... 188s Selecting previously unselected package g++-14. 188s Preparing to unpack .../028-g++-14_14.2.0-8ubuntu1_arm64.deb ... 188s Unpacking g++-14 (14.2.0-8ubuntu1) ... 188s Selecting previously unselected package g++-aarch64-linux-gnu. 188s Preparing to unpack .../029-g++-aarch64-linux-gnu_4%3a14.1.0-2ubuntu1_arm64.deb ... 188s Unpacking g++-aarch64-linux-gnu (4:14.1.0-2ubuntu1) ... 188s Selecting previously unselected package g++. 188s Preparing to unpack .../030-g++_4%3a14.1.0-2ubuntu1_arm64.deb ... 188s Unpacking g++ (4:14.1.0-2ubuntu1) ... 188s Selecting previously unselected package build-essential. 188s Preparing to unpack .../031-build-essential_12.10ubuntu1_arm64.deb ... 188s Unpacking build-essential (12.10ubuntu1) ... 188s Selecting previously unselected package libhttp-parser2.9:arm64. 188s Preparing to unpack .../032-libhttp-parser2.9_2.9.4-6build1_arm64.deb ... 188s Unpacking libhttp-parser2.9:arm64 (2.9.4-6build1) ... 188s Selecting previously unselected package libgit2-1.7:arm64. 188s Preparing to unpack .../033-libgit2-1.7_1.7.2+ds-1ubuntu3_arm64.deb ... 188s Unpacking libgit2-1.7:arm64 (1.7.2+ds-1ubuntu3) ... 188s Selecting previously unselected package libstd-rust-1.80:arm64. 189s Preparing to unpack .../034-libstd-rust-1.80_1.80.1+dfsg0ubuntu1-0ubuntu1_arm64.deb ... 189s Unpacking libstd-rust-1.80:arm64 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 189s Selecting previously unselected package libstd-rust-1.80-dev:arm64. 189s Preparing to unpack .../035-libstd-rust-1.80-dev_1.80.1+dfsg0ubuntu1-0ubuntu1_arm64.deb ... 189s Unpacking libstd-rust-1.80-dev:arm64 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 190s Selecting previously unselected package rustc-1.80. 190s Preparing to unpack .../036-rustc-1.80_1.80.1+dfsg0ubuntu1-0ubuntu1_arm64.deb ... 190s Unpacking rustc-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 190s Selecting previously unselected package cargo-1.80. 190s Preparing to unpack .../037-cargo-1.80_1.80.1+dfsg0ubuntu1-0ubuntu1_arm64.deb ... 190s Unpacking cargo-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 190s Selecting previously unselected package libjsoncpp25:arm64. 190s Preparing to unpack .../038-libjsoncpp25_1.9.5-6build1_arm64.deb ... 190s Unpacking libjsoncpp25:arm64 (1.9.5-6build1) ... 190s Selecting previously unselected package librhash0:arm64. 190s Preparing to unpack .../039-librhash0_1.4.3-3build1_arm64.deb ... 190s Unpacking librhash0:arm64 (1.4.3-3build1) ... 190s Selecting previously unselected package cmake-data. 190s Preparing to unpack .../040-cmake-data_3.30.3-1_all.deb ... 190s Unpacking cmake-data (3.30.3-1) ... 191s Selecting previously unselected package cmake. 191s Preparing to unpack .../041-cmake_3.30.3-1_arm64.deb ... 191s Unpacking cmake (3.30.3-1) ... 191s Selecting previously unselected package libdebhelper-perl. 191s Preparing to unpack .../042-libdebhelper-perl_13.20ubuntu1_all.deb ... 191s Unpacking libdebhelper-perl (13.20ubuntu1) ... 191s Selecting previously unselected package libtool. 191s Preparing to unpack .../043-libtool_2.4.7-8_all.deb ... 191s Unpacking libtool (2.4.7-8) ... 191s Selecting previously unselected package dh-autoreconf. 191s Preparing to unpack .../044-dh-autoreconf_20_all.deb ... 191s Unpacking dh-autoreconf (20) ... 191s Selecting previously unselected package libarchive-zip-perl. 191s Preparing to unpack .../045-libarchive-zip-perl_1.68-1_all.deb ... 191s Unpacking libarchive-zip-perl (1.68-1) ... 191s Selecting previously unselected package libfile-stripnondeterminism-perl. 191s Preparing to unpack .../046-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... 191s Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... 191s Selecting previously unselected package dh-strip-nondeterminism. 192s Preparing to unpack .../047-dh-strip-nondeterminism_1.14.0-1_all.deb ... 192s Unpacking dh-strip-nondeterminism (1.14.0-1) ... 192s Selecting previously unselected package debugedit. 192s Preparing to unpack .../048-debugedit_1%3a5.1-1_arm64.deb ... 192s Unpacking debugedit (1:5.1-1) ... 192s Selecting previously unselected package dwz. 192s Preparing to unpack .../049-dwz_0.15-1build6_arm64.deb ... 192s Unpacking dwz (0.15-1build6) ... 192s Selecting previously unselected package gettext. 192s Preparing to unpack .../050-gettext_0.22.5-2_arm64.deb ... 192s Unpacking gettext (0.22.5-2) ... 192s Selecting previously unselected package intltool-debian. 192s Preparing to unpack .../051-intltool-debian_0.35.0+20060710.6_all.deb ... 192s Unpacking intltool-debian (0.35.0+20060710.6) ... 192s Selecting previously unselected package po-debconf. 192s Preparing to unpack .../052-po-debconf_1.0.21+nmu1_all.deb ... 192s Unpacking po-debconf (1.0.21+nmu1) ... 192s Selecting previously unselected package debhelper. 192s Preparing to unpack .../053-debhelper_13.20ubuntu1_all.deb ... 192s Unpacking debhelper (13.20ubuntu1) ... 192s Selecting previously unselected package dh-python. 192s Preparing to unpack .../054-dh-python_6.20241024_all.deb ... 192s Unpacking dh-python (6.20241024) ... 192s Selecting previously unselected package fonts-dejavu-mono. 192s Preparing to unpack .../055-fonts-dejavu-mono_2.37-8_all.deb ... 192s Unpacking fonts-dejavu-mono (2.37-8) ... 192s Selecting previously unselected package fonts-dejavu-core. 192s Preparing to unpack .../056-fonts-dejavu-core_2.37-8_all.deb ... 192s Unpacking fonts-dejavu-core (2.37-8) ... 192s Selecting previously unselected package fontconfig-config. 192s Preparing to unpack .../057-fontconfig-config_2.15.0-1.1ubuntu2_arm64.deb ... 192s Unpacking fontconfig-config (2.15.0-1.1ubuntu2) ... 192s Selecting previously unselected package libbrotli-dev:arm64. 193s Preparing to unpack .../058-libbrotli-dev_1.1.0-2build3_arm64.deb ... 193s Unpacking libbrotli-dev:arm64 (1.1.0-2build3) ... 193s Selecting previously unselected package libbz2-dev:arm64. 193s Preparing to unpack .../059-libbz2-dev_1.0.8-6_arm64.deb ... 193s Unpacking libbz2-dev:arm64 (1.0.8-6) ... 193s Selecting previously unselected package libexpat1-dev:arm64. 193s Preparing to unpack .../060-libexpat1-dev_2.6.4-1_arm64.deb ... 193s Unpacking libexpat1-dev:arm64 (2.6.4-1) ... 193s Selecting previously unselected package libfontconfig1:arm64. 193s Preparing to unpack .../061-libfontconfig1_2.15.0-1.1ubuntu2_arm64.deb ... 193s Unpacking libfontconfig1:arm64 (2.15.0-1.1ubuntu2) ... 193s Selecting previously unselected package zlib1g-dev:arm64. 193s Preparing to unpack .../062-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1ubuntu1_arm64.deb ... 193s Unpacking zlib1g-dev:arm64 (1:1.3.dfsg+really1.3.1-1ubuntu1) ... 193s Selecting previously unselected package libpng-dev:arm64. 193s Preparing to unpack .../063-libpng-dev_1.6.44-2_arm64.deb ... 193s Unpacking libpng-dev:arm64 (1.6.44-2) ... 193s Selecting previously unselected package libfreetype-dev:arm64. 193s Preparing to unpack .../064-libfreetype-dev_2.13.3+dfsg-1_arm64.deb ... 193s Unpacking libfreetype-dev:arm64 (2.13.3+dfsg-1) ... 193s Selecting previously unselected package uuid-dev:arm64. 193s Preparing to unpack .../065-uuid-dev_2.40.2-1ubuntu1_arm64.deb ... 193s Unpacking uuid-dev:arm64 (2.40.2-1ubuntu1) ... 193s Selecting previously unselected package libpkgconf3:arm64. 193s Preparing to unpack .../066-libpkgconf3_1.8.1-4_arm64.deb ... 193s Unpacking libpkgconf3:arm64 (1.8.1-4) ... 193s Selecting previously unselected package pkgconf-bin. 193s Preparing to unpack .../067-pkgconf-bin_1.8.1-4_arm64.deb ... 193s Unpacking pkgconf-bin (1.8.1-4) ... 193s Selecting previously unselected package pkgconf:arm64. 193s Preparing to unpack .../068-pkgconf_1.8.1-4_arm64.deb ... 193s Unpacking pkgconf:arm64 (1.8.1-4) ... 193s Selecting previously unselected package libfontconfig-dev:arm64. 193s Preparing to unpack .../069-libfontconfig-dev_2.15.0-1.1ubuntu2_arm64.deb ... 193s Unpacking libfontconfig-dev:arm64 (2.15.0-1.1ubuntu2) ... 193s Selecting previously unselected package libpython3.12-dev:arm64. 193s Preparing to unpack .../070-libpython3.12-dev_3.12.7-3_arm64.deb ... 193s Unpacking libpython3.12-dev:arm64 (3.12.7-3) ... 193s Selecting previously unselected package libpython3-dev:arm64. 193s Preparing to unpack .../071-libpython3-dev_3.12.7-1_arm64.deb ... 193s Unpacking libpython3-dev:arm64 (3.12.7-1) ... 193s Selecting previously unselected package libpython3.13-stdlib:arm64. 193s Preparing to unpack .../072-libpython3.13-stdlib_3.13.0-2_arm64.deb ... 193s Unpacking libpython3.13-stdlib:arm64 (3.13.0-2) ... 194s Selecting previously unselected package libpython3.13:arm64. 194s Preparing to unpack .../073-libpython3.13_3.13.0-2_arm64.deb ... 194s Unpacking libpython3.13:arm64 (3.13.0-2) ... 194s Selecting previously unselected package libpython3.13-dev:arm64. 194s Preparing to unpack .../074-libpython3.13-dev_3.13.0-2_arm64.deb ... 194s Unpacking libpython3.13-dev:arm64 (3.13.0-2) ... 194s Selecting previously unselected package libpython3-all-dev:arm64. 194s Preparing to unpack .../075-libpython3-all-dev_3.12.7-1_arm64.deb ... 194s Unpacking libpython3-all-dev:arm64 (3.12.7-1) ... 194s Selecting previously unselected package librust-ab-glyph-rasterizer-dev:arm64. 194s Preparing to unpack .../076-librust-ab-glyph-rasterizer-dev_0.1.7-1_arm64.deb ... 194s Unpacking librust-ab-glyph-rasterizer-dev:arm64 (0.1.7-1) ... 194s Selecting previously unselected package librust-libm-dev:arm64. 194s Preparing to unpack .../077-librust-libm-dev_0.2.8-1_arm64.deb ... 194s Unpacking librust-libm-dev:arm64 (0.2.8-1) ... 194s Selecting previously unselected package librust-ab-glyph-rasterizer+libm-dev:arm64. 194s Preparing to unpack .../078-librust-ab-glyph-rasterizer+libm-dev_0.1.7-1_arm64.deb ... 194s Unpacking librust-ab-glyph-rasterizer+libm-dev:arm64 (0.1.7-1) ... 194s Selecting previously unselected package librust-core-maths-dev:arm64. 194s Preparing to unpack .../079-librust-core-maths-dev_0.1.0-2_arm64.deb ... 194s Unpacking librust-core-maths-dev:arm64 (0.1.0-2) ... 194s Selecting previously unselected package librust-ttf-parser-dev:arm64. 194s Preparing to unpack .../080-librust-ttf-parser-dev_0.24.1-1_arm64.deb ... 194s Unpacking librust-ttf-parser-dev:arm64 (0.24.1-1) ... 194s Selecting previously unselected package librust-owned-ttf-parser-dev:arm64. 194s Preparing to unpack .../081-librust-owned-ttf-parser-dev_0.24.0-1_arm64.deb ... 194s Unpacking librust-owned-ttf-parser-dev:arm64 (0.24.0-1) ... 194s Selecting previously unselected package librust-ab-glyph-dev:arm64. 194s Preparing to unpack .../082-librust-ab-glyph-dev_0.2.28-1_arm64.deb ... 194s Unpacking librust-ab-glyph-dev:arm64 (0.2.28-1) ... 194s Selecting previously unselected package librust-cfg-if-dev:arm64. 195s Preparing to unpack .../083-librust-cfg-if-dev_1.0.0-1_arm64.deb ... 195s Unpacking librust-cfg-if-dev:arm64 (1.0.0-1) ... 195s Selecting previously unselected package librust-cpp-demangle-dev:arm64. 195s Preparing to unpack .../084-librust-cpp-demangle-dev_0.4.0-1_arm64.deb ... 195s Unpacking librust-cpp-demangle-dev:arm64 (0.4.0-1) ... 195s Selecting previously unselected package librust-fallible-iterator-dev:arm64. 195s Preparing to unpack .../085-librust-fallible-iterator-dev_0.3.0-2_arm64.deb ... 195s Unpacking librust-fallible-iterator-dev:arm64 (0.3.0-2) ... 195s Selecting previously unselected package librust-unicode-ident-dev:arm64. 195s Preparing to unpack .../086-librust-unicode-ident-dev_1.0.13-1_arm64.deb ... 195s Unpacking librust-unicode-ident-dev:arm64 (1.0.13-1) ... 195s Selecting previously unselected package librust-proc-macro2-dev:arm64. 195s Preparing to unpack .../087-librust-proc-macro2-dev_1.0.86-1_arm64.deb ... 195s Unpacking librust-proc-macro2-dev:arm64 (1.0.86-1) ... 195s Selecting previously unselected package librust-quote-dev:arm64. 195s Preparing to unpack .../088-librust-quote-dev_1.0.37-1_arm64.deb ... 195s Unpacking librust-quote-dev:arm64 (1.0.37-1) ... 195s Selecting previously unselected package librust-syn-dev:arm64. 195s Preparing to unpack .../089-librust-syn-dev_2.0.85-1_arm64.deb ... 195s Unpacking librust-syn-dev:arm64 (2.0.85-1) ... 195s Selecting previously unselected package librust-derive-arbitrary-dev:arm64. 195s Preparing to unpack .../090-librust-derive-arbitrary-dev_1.3.2-1_arm64.deb ... 195s Unpacking librust-derive-arbitrary-dev:arm64 (1.3.2-1) ... 195s Selecting previously unselected package librust-arbitrary-dev:arm64. 195s Preparing to unpack .../091-librust-arbitrary-dev_1.3.2-1_arm64.deb ... 195s Unpacking librust-arbitrary-dev:arm64 (1.3.2-1) ... 195s Selecting previously unselected package librust-equivalent-dev:arm64. 195s Preparing to unpack .../092-librust-equivalent-dev_1.0.1-1_arm64.deb ... 195s Unpacking librust-equivalent-dev:arm64 (1.0.1-1) ... 195s Selecting previously unselected package librust-critical-section-dev:arm64. 195s Preparing to unpack .../093-librust-critical-section-dev_1.1.3-1_arm64.deb ... 195s Unpacking librust-critical-section-dev:arm64 (1.1.3-1) ... 195s Selecting previously unselected package librust-serde-derive-dev:arm64. 195s Preparing to unpack .../094-librust-serde-derive-dev_1.0.210-1_arm64.deb ... 195s Unpacking librust-serde-derive-dev:arm64 (1.0.210-1) ... 195s Selecting previously unselected package librust-serde-dev:arm64. 195s Preparing to unpack .../095-librust-serde-dev_1.0.210-2_arm64.deb ... 195s Unpacking librust-serde-dev:arm64 (1.0.210-2) ... 195s Selecting previously unselected package librust-portable-atomic-dev:arm64. 195s Preparing to unpack .../096-librust-portable-atomic-dev_1.9.0-4_arm64.deb ... 195s Unpacking librust-portable-atomic-dev:arm64 (1.9.0-4) ... 195s Selecting previously unselected package librust-libc-dev:arm64. 195s Preparing to unpack .../097-librust-libc-dev_0.2.155-1_arm64.deb ... 195s Unpacking librust-libc-dev:arm64 (0.2.155-1) ... 195s Selecting previously unselected package librust-getrandom-dev:arm64. 195s Preparing to unpack .../098-librust-getrandom-dev_0.2.12-1_arm64.deb ... 195s Unpacking librust-getrandom-dev:arm64 (0.2.12-1) ... 195s Selecting previously unselected package librust-smallvec-dev:arm64. 195s Preparing to unpack .../099-librust-smallvec-dev_1.13.2-1_arm64.deb ... 195s Unpacking librust-smallvec-dev:arm64 (1.13.2-1) ... 195s Selecting previously unselected package librust-parking-lot-core-dev:arm64. 195s Preparing to unpack .../100-librust-parking-lot-core-dev_0.9.10-1_arm64.deb ... 195s Unpacking librust-parking-lot-core-dev:arm64 (0.9.10-1) ... 196s Selecting previously unselected package librust-once-cell-dev:arm64. 196s Preparing to unpack .../101-librust-once-cell-dev_1.20.2-1_arm64.deb ... 196s Unpacking librust-once-cell-dev:arm64 (1.20.2-1) ... 196s Selecting previously unselected package librust-crunchy-dev:arm64. 196s Preparing to unpack .../102-librust-crunchy-dev_0.2.2-1_arm64.deb ... 196s Unpacking librust-crunchy-dev:arm64 (0.2.2-1) ... 196s Selecting previously unselected package librust-tiny-keccak-dev:arm64. 196s Preparing to unpack .../103-librust-tiny-keccak-dev_2.0.2-1_arm64.deb ... 196s Unpacking librust-tiny-keccak-dev:arm64 (2.0.2-1) ... 196s Selecting previously unselected package librust-const-random-macro-dev:arm64. 196s Preparing to unpack .../104-librust-const-random-macro-dev_0.1.16-2_arm64.deb ... 196s Unpacking librust-const-random-macro-dev:arm64 (0.1.16-2) ... 196s Selecting previously unselected package librust-const-random-dev:arm64. 196s Preparing to unpack .../105-librust-const-random-dev_0.1.17-2_arm64.deb ... 196s Unpacking librust-const-random-dev:arm64 (0.1.17-2) ... 196s Selecting previously unselected package librust-version-check-dev:arm64. 196s Preparing to unpack .../106-librust-version-check-dev_0.9.5-1_arm64.deb ... 196s Unpacking librust-version-check-dev:arm64 (0.9.5-1) ... 196s Selecting previously unselected package librust-byteorder-dev:arm64. 196s Preparing to unpack .../107-librust-byteorder-dev_1.5.0-1_arm64.deb ... 196s Unpacking librust-byteorder-dev:arm64 (1.5.0-1) ... 196s Selecting previously unselected package librust-zerocopy-derive-dev:arm64. 196s Preparing to unpack .../108-librust-zerocopy-derive-dev_0.7.32-2_arm64.deb ... 196s Unpacking librust-zerocopy-derive-dev:arm64 (0.7.32-2) ... 196s Selecting previously unselected package librust-zerocopy-dev:arm64. 196s Preparing to unpack .../109-librust-zerocopy-dev_0.7.32-1_arm64.deb ... 196s Unpacking librust-zerocopy-dev:arm64 (0.7.32-1) ... 196s Selecting previously unselected package librust-ahash-dev. 196s Preparing to unpack .../110-librust-ahash-dev_0.8.11-8_all.deb ... 196s Unpacking librust-ahash-dev (0.8.11-8) ... 196s Selecting previously unselected package librust-allocator-api2-dev:arm64. 196s Preparing to unpack .../111-librust-allocator-api2-dev_0.2.16-1_arm64.deb ... 196s Unpacking librust-allocator-api2-dev:arm64 (0.2.16-1) ... 196s Selecting previously unselected package librust-compiler-builtins-dev:arm64. 196s Preparing to unpack .../112-librust-compiler-builtins-dev_0.1.101-1_arm64.deb ... 196s Unpacking librust-compiler-builtins-dev:arm64 (0.1.101-1) ... 196s Selecting previously unselected package librust-either-dev:arm64. 196s Preparing to unpack .../113-librust-either-dev_1.13.0-1_arm64.deb ... 196s Unpacking librust-either-dev:arm64 (1.13.0-1) ... 196s Selecting previously unselected package librust-crossbeam-utils-dev:arm64. 197s Preparing to unpack .../114-librust-crossbeam-utils-dev_0.8.19-1_arm64.deb ... 197s Unpacking librust-crossbeam-utils-dev:arm64 (0.8.19-1) ... 197s Selecting previously unselected package librust-crossbeam-epoch-dev:arm64. 197s Preparing to unpack .../115-librust-crossbeam-epoch-dev_0.9.18-1_arm64.deb ... 197s Unpacking librust-crossbeam-epoch-dev:arm64 (0.9.18-1) ... 197s Selecting previously unselected package librust-crossbeam-epoch+std-dev:arm64. 197s Preparing to unpack .../116-librust-crossbeam-epoch+std-dev_0.9.18-1_arm64.deb ... 197s Unpacking librust-crossbeam-epoch+std-dev:arm64 (0.9.18-1) ... 197s Selecting previously unselected package librust-crossbeam-deque-dev:arm64. 197s Preparing to unpack .../117-librust-crossbeam-deque-dev_0.8.5-1_arm64.deb ... 197s Unpacking librust-crossbeam-deque-dev:arm64 (0.8.5-1) ... 197s Selecting previously unselected package librust-rayon-core-dev:arm64. 197s Preparing to unpack .../118-librust-rayon-core-dev_1.12.1-1_arm64.deb ... 197s Unpacking librust-rayon-core-dev:arm64 (1.12.1-1) ... 197s Selecting previously unselected package librust-rayon-dev:arm64. 197s Preparing to unpack .../119-librust-rayon-dev_1.10.0-1_arm64.deb ... 197s Unpacking librust-rayon-dev:arm64 (1.10.0-1) ... 197s Selecting previously unselected package librust-rustc-std-workspace-core-dev:arm64. 197s Preparing to unpack .../120-librust-rustc-std-workspace-core-dev_1.0.0-1_arm64.deb ... 197s Unpacking librust-rustc-std-workspace-core-dev:arm64 (1.0.0-1) ... 197s Selecting previously unselected package librust-hashbrown-dev:arm64. 197s Preparing to unpack .../121-librust-hashbrown-dev_0.14.5-5_arm64.deb ... 197s Unpacking librust-hashbrown-dev:arm64 (0.14.5-5) ... 197s Selecting previously unselected package librust-indexmap-dev:arm64. 197s Preparing to unpack .../122-librust-indexmap-dev_2.2.6-1_arm64.deb ... 197s Unpacking librust-indexmap-dev:arm64 (2.2.6-1) ... 197s Selecting previously unselected package librust-stable-deref-trait-dev:arm64. 197s Preparing to unpack .../123-librust-stable-deref-trait-dev_1.2.0-1_arm64.deb ... 197s Unpacking librust-stable-deref-trait-dev:arm64 (1.2.0-1) ... 197s Selecting previously unselected package librust-gimli-dev:arm64. 197s Preparing to unpack .../124-librust-gimli-dev_0.28.1-2_arm64.deb ... 197s Unpacking librust-gimli-dev:arm64 (0.28.1-2) ... 197s Selecting previously unselected package librust-memmap2-dev:arm64. 197s Preparing to unpack .../125-librust-memmap2-dev_0.9.3-1_arm64.deb ... 197s Unpacking librust-memmap2-dev:arm64 (0.9.3-1) ... 197s Selecting previously unselected package librust-crc32fast-dev:arm64. 197s Preparing to unpack .../126-librust-crc32fast-dev_1.4.2-1_arm64.deb ... 197s Unpacking librust-crc32fast-dev:arm64 (1.4.2-1) ... 197s Selecting previously unselected package pkg-config:arm64. 197s Preparing to unpack .../127-pkg-config_1.8.1-4_arm64.deb ... 197s Unpacking pkg-config:arm64 (1.8.1-4) ... 197s Selecting previously unselected package librust-pkg-config-dev:arm64. 197s Preparing to unpack .../128-librust-pkg-config-dev_0.3.27-1_arm64.deb ... 197s Unpacking librust-pkg-config-dev:arm64 (0.3.27-1) ... 197s Selecting previously unselected package librust-libz-sys-dev:arm64. 197s Preparing to unpack .../129-librust-libz-sys-dev_1.1.20-1_arm64.deb ... 197s Unpacking librust-libz-sys-dev:arm64 (1.1.20-1) ... 197s Selecting previously unselected package librust-adler-dev:arm64. 197s Preparing to unpack .../130-librust-adler-dev_1.0.2-2_arm64.deb ... 197s Unpacking librust-adler-dev:arm64 (1.0.2-2) ... 197s Selecting previously unselected package librust-miniz-oxide-dev:arm64. 198s Preparing to unpack .../131-librust-miniz-oxide-dev_0.7.1-1_arm64.deb ... 198s Unpacking librust-miniz-oxide-dev:arm64 (0.7.1-1) ... 198s Selecting previously unselected package librust-flate2-dev:arm64. 198s Preparing to unpack .../132-librust-flate2-dev_1.0.34-1_arm64.deb ... 198s Unpacking librust-flate2-dev:arm64 (1.0.34-1) ... 198s Selecting previously unselected package librust-sval-derive-dev:arm64. 198s Preparing to unpack .../133-librust-sval-derive-dev_2.6.1-2_arm64.deb ... 198s Unpacking librust-sval-derive-dev:arm64 (2.6.1-2) ... 198s Selecting previously unselected package librust-sval-dev:arm64. 198s Preparing to unpack .../134-librust-sval-dev_2.6.1-2_arm64.deb ... 198s Unpacking librust-sval-dev:arm64 (2.6.1-2) ... 198s Selecting previously unselected package librust-sval-ref-dev:arm64. 198s Preparing to unpack .../135-librust-sval-ref-dev_2.6.1-1_arm64.deb ... 198s Unpacking librust-sval-ref-dev:arm64 (2.6.1-1) ... 198s Selecting previously unselected package librust-erased-serde-dev:arm64. 198s Preparing to unpack .../136-librust-erased-serde-dev_0.3.31-1_arm64.deb ... 198s Unpacking librust-erased-serde-dev:arm64 (0.3.31-1) ... 198s Selecting previously unselected package librust-serde-fmt-dev. 198s Preparing to unpack .../137-librust-serde-fmt-dev_1.0.3-3_all.deb ... 198s Unpacking librust-serde-fmt-dev (1.0.3-3) ... 198s Selecting previously unselected package librust-syn-1-dev:arm64. 198s Preparing to unpack .../138-librust-syn-1-dev_1.0.109-2_arm64.deb ... 198s Unpacking librust-syn-1-dev:arm64 (1.0.109-2) ... 198s Selecting previously unselected package librust-no-panic-dev:arm64. 198s Preparing to unpack .../139-librust-no-panic-dev_0.1.13-1_arm64.deb ... 198s Unpacking librust-no-panic-dev:arm64 (0.1.13-1) ... 198s Selecting previously unselected package librust-itoa-dev:arm64. 198s Preparing to unpack .../140-librust-itoa-dev_1.0.9-1_arm64.deb ... 198s Unpacking librust-itoa-dev:arm64 (1.0.9-1) ... 198s Selecting previously unselected package librust-ryu-dev:arm64. 198s Preparing to unpack .../141-librust-ryu-dev_1.0.15-1_arm64.deb ... 198s Unpacking librust-ryu-dev:arm64 (1.0.15-1) ... 198s Selecting previously unselected package librust-serde-json-dev:arm64. 198s Preparing to unpack .../142-librust-serde-json-dev_1.0.128-1_arm64.deb ... 198s Unpacking librust-serde-json-dev:arm64 (1.0.128-1) ... 198s Selecting previously unselected package librust-serde-test-dev:arm64. 198s Preparing to unpack .../143-librust-serde-test-dev_1.0.171-1_arm64.deb ... 198s Unpacking librust-serde-test-dev:arm64 (1.0.171-1) ... 198s Selecting previously unselected package librust-value-bag-serde1-dev:arm64. 198s Preparing to unpack .../144-librust-value-bag-serde1-dev_1.9.0-1_arm64.deb ... 198s Unpacking librust-value-bag-serde1-dev:arm64 (1.9.0-1) ... 198s Selecting previously unselected package librust-sval-buffer-dev:arm64. 198s Preparing to unpack .../145-librust-sval-buffer-dev_2.6.1-1_arm64.deb ... 198s Unpacking librust-sval-buffer-dev:arm64 (2.6.1-1) ... 198s Selecting previously unselected package librust-sval-dynamic-dev:arm64. 199s Preparing to unpack .../146-librust-sval-dynamic-dev_2.6.1-1_arm64.deb ... 199s Unpacking librust-sval-dynamic-dev:arm64 (2.6.1-1) ... 199s Selecting previously unselected package librust-sval-fmt-dev:arm64. 199s Preparing to unpack .../147-librust-sval-fmt-dev_2.6.1-1_arm64.deb ... 199s Unpacking librust-sval-fmt-dev:arm64 (2.6.1-1) ... 199s Selecting previously unselected package librust-sval-serde-dev:arm64. 199s Preparing to unpack .../148-librust-sval-serde-dev_2.6.1-1_arm64.deb ... 199s Unpacking librust-sval-serde-dev:arm64 (2.6.1-1) ... 199s Selecting previously unselected package librust-value-bag-sval2-dev:arm64. 199s Preparing to unpack .../149-librust-value-bag-sval2-dev_1.9.0-1_arm64.deb ... 199s Unpacking librust-value-bag-sval2-dev:arm64 (1.9.0-1) ... 199s Selecting previously unselected package librust-value-bag-dev:arm64. 199s Preparing to unpack .../150-librust-value-bag-dev_1.9.0-1_arm64.deb ... 199s Unpacking librust-value-bag-dev:arm64 (1.9.0-1) ... 199s Selecting previously unselected package librust-log-dev:arm64. 199s Preparing to unpack .../151-librust-log-dev_0.4.22-1_arm64.deb ... 199s Unpacking librust-log-dev:arm64 (0.4.22-1) ... 199s Selecting previously unselected package librust-memchr-dev:arm64. 199s Preparing to unpack .../152-librust-memchr-dev_2.7.4-1_arm64.deb ... 199s Unpacking librust-memchr-dev:arm64 (2.7.4-1) ... 199s Selecting previously unselected package librust-ppv-lite86-dev:arm64. 199s Preparing to unpack .../153-librust-ppv-lite86-dev_0.2.16-1_arm64.deb ... 199s Unpacking librust-ppv-lite86-dev:arm64 (0.2.16-1) ... 199s Selecting previously unselected package librust-rand-core-dev:arm64. 199s Preparing to unpack .../154-librust-rand-core-dev_0.6.4-2_arm64.deb ... 199s Unpacking librust-rand-core-dev:arm64 (0.6.4-2) ... 199s Selecting previously unselected package librust-rand-chacha-dev:arm64. 199s Preparing to unpack .../155-librust-rand-chacha-dev_0.3.1-2_arm64.deb ... 199s Unpacking librust-rand-chacha-dev:arm64 (0.3.1-2) ... 199s Selecting previously unselected package librust-rand-core+getrandom-dev:arm64. 199s Preparing to unpack .../156-librust-rand-core+getrandom-dev_0.6.4-2_arm64.deb ... 199s Unpacking librust-rand-core+getrandom-dev:arm64 (0.6.4-2) ... 199s Selecting previously unselected package librust-rand-core+serde-dev:arm64. 199s Preparing to unpack .../157-librust-rand-core+serde-dev_0.6.4-2_arm64.deb ... 199s Unpacking librust-rand-core+serde-dev:arm64 (0.6.4-2) ... 199s Selecting previously unselected package librust-rand-core+std-dev:arm64. 199s Preparing to unpack .../158-librust-rand-core+std-dev_0.6.4-2_arm64.deb ... 199s Unpacking librust-rand-core+std-dev:arm64 (0.6.4-2) ... 199s Selecting previously unselected package librust-rand-dev:arm64. 199s Preparing to unpack .../159-librust-rand-dev_0.8.5-1_arm64.deb ... 199s Unpacking librust-rand-dev:arm64 (0.8.5-1) ... 199s Selecting previously unselected package librust-unicode-segmentation-dev:arm64. 199s Preparing to unpack .../160-librust-unicode-segmentation-dev_1.11.0-1_arm64.deb ... 199s Unpacking librust-unicode-segmentation-dev:arm64 (1.11.0-1) ... 199s Selecting previously unselected package librust-convert-case-dev:arm64. 199s Preparing to unpack .../161-librust-convert-case-dev_0.6.0-2_arm64.deb ... 199s Unpacking librust-convert-case-dev:arm64 (0.6.0-2) ... 199s Selecting previously unselected package librust-semver-dev:arm64. 200s Preparing to unpack .../162-librust-semver-dev_1.0.23-1_arm64.deb ... 200s Unpacking librust-semver-dev:arm64 (1.0.23-1) ... 200s Selecting previously unselected package librust-rustc-version-dev:arm64. 200s Preparing to unpack .../163-librust-rustc-version-dev_0.4.0-1_arm64.deb ... 200s Unpacking librust-rustc-version-dev:arm64 (0.4.0-1) ... 200s Selecting previously unselected package librust-derive-more-0.99-dev:arm64. 200s Preparing to unpack .../164-librust-derive-more-0.99-dev_0.99.18-1_arm64.deb ... 200s Unpacking librust-derive-more-0.99-dev:arm64 (0.99.18-1) ... 200s Selecting previously unselected package librust-cfg-if-0.1-dev:arm64. 200s Preparing to unpack .../165-librust-cfg-if-0.1-dev_0.1.10-2_arm64.deb ... 200s Unpacking librust-cfg-if-0.1-dev:arm64 (0.1.10-2) ... 200s Selecting previously unselected package librust-blobby-dev:arm64. 200s Preparing to unpack .../166-librust-blobby-dev_0.3.1-1_arm64.deb ... 200s Unpacking librust-blobby-dev:arm64 (0.3.1-1) ... 200s Selecting previously unselected package librust-typenum-dev:arm64. 200s Preparing to unpack .../167-librust-typenum-dev_1.17.0-2_arm64.deb ... 200s Unpacking librust-typenum-dev:arm64 (1.17.0-2) ... 200s Selecting previously unselected package librust-zeroize-derive-dev:arm64. 200s Preparing to unpack .../168-librust-zeroize-derive-dev_1.4.2-1_arm64.deb ... 200s Unpacking librust-zeroize-derive-dev:arm64 (1.4.2-1) ... 200s Selecting previously unselected package librust-zeroize-dev:arm64. 200s Preparing to unpack .../169-librust-zeroize-dev_1.8.1-1_arm64.deb ... 200s Unpacking librust-zeroize-dev:arm64 (1.8.1-1) ... 200s Selecting previously unselected package librust-generic-array-dev:arm64. 200s Preparing to unpack .../170-librust-generic-array-dev_0.14.7-1_arm64.deb ... 200s Unpacking librust-generic-array-dev:arm64 (0.14.7-1) ... 200s Selecting previously unselected package librust-block-buffer-dev:arm64. 200s Preparing to unpack .../171-librust-block-buffer-dev_0.10.2-2_arm64.deb ... 200s Unpacking librust-block-buffer-dev:arm64 (0.10.2-2) ... 200s Selecting previously unselected package librust-const-oid-dev:arm64. 200s Preparing to unpack .../172-librust-const-oid-dev_0.9.3-1_arm64.deb ... 200s Unpacking librust-const-oid-dev:arm64 (0.9.3-1) ... 200s Selecting previously unselected package librust-crypto-common-dev:arm64. 200s Preparing to unpack .../173-librust-crypto-common-dev_0.1.6-1_arm64.deb ... 200s Unpacking librust-crypto-common-dev:arm64 (0.1.6-1) ... 200s Selecting previously unselected package librust-subtle-dev:arm64. 201s Preparing to unpack .../174-librust-subtle-dev_2.6.1-1_arm64.deb ... 201s Unpacking librust-subtle-dev:arm64 (2.6.1-1) ... 201s Selecting previously unselected package librust-digest-dev:arm64. 201s Preparing to unpack .../175-librust-digest-dev_0.10.7-2_arm64.deb ... 201s Unpacking librust-digest-dev:arm64 (0.10.7-2) ... 201s Selecting previously unselected package librust-static-assertions-dev:arm64. 201s Preparing to unpack .../176-librust-static-assertions-dev_1.1.0-1_arm64.deb ... 201s Unpacking librust-static-assertions-dev:arm64 (1.1.0-1) ... 201s Selecting previously unselected package librust-twox-hash-dev:arm64. 201s Preparing to unpack .../177-librust-twox-hash-dev_1.6.3-1_arm64.deb ... 201s Unpacking librust-twox-hash-dev:arm64 (1.6.3-1) ... 201s Selecting previously unselected package librust-ruzstd-dev:arm64. 201s Preparing to unpack .../178-librust-ruzstd-dev_0.5.0-1_arm64.deb ... 201s Unpacking librust-ruzstd-dev:arm64 (0.5.0-1) ... 201s Selecting previously unselected package librust-object-dev:arm64. 201s Preparing to unpack .../179-librust-object-dev_0.32.2-1_arm64.deb ... 201s Unpacking librust-object-dev:arm64 (0.32.2-1) ... 201s Selecting previously unselected package librust-rustc-demangle-dev:arm64. 201s Preparing to unpack .../180-librust-rustc-demangle-dev_0.1.21-1_arm64.deb ... 201s Unpacking librust-rustc-demangle-dev:arm64 (0.1.21-1) ... 201s Selecting previously unselected package librust-addr2line-dev:arm64. 201s Preparing to unpack .../181-librust-addr2line-dev_0.21.0-2_arm64.deb ... 201s Unpacking librust-addr2line-dev:arm64 (0.21.0-2) ... 201s Selecting previously unselected package librust-aho-corasick-dev:arm64. 201s Preparing to unpack .../182-librust-aho-corasick-dev_1.1.3-1_arm64.deb ... 201s Unpacking librust-aho-corasick-dev:arm64 (1.1.3-1) ... 201s Selecting previously unselected package librust-bitflags-1-dev:arm64. 201s Preparing to unpack .../183-librust-bitflags-1-dev_1.3.2-5_arm64.deb ... 201s Unpacking librust-bitflags-1-dev:arm64 (1.3.2-5) ... 201s Selecting previously unselected package librust-anes-dev:arm64. 201s Preparing to unpack .../184-librust-anes-dev_0.1.6-1_arm64.deb ... 201s Unpacking librust-anes-dev:arm64 (0.1.6-1) ... 201s Selecting previously unselected package librust-anstyle-dev:arm64. 201s Preparing to unpack .../185-librust-anstyle-dev_1.0.8-1_arm64.deb ... 201s Unpacking librust-anstyle-dev:arm64 (1.0.8-1) ... 201s Selecting previously unselected package librust-arrayvec-dev:arm64. 201s Preparing to unpack .../186-librust-arrayvec-dev_0.7.4-2_arm64.deb ... 201s Unpacking librust-arrayvec-dev:arm64 (0.7.4-2) ... 201s Selecting previously unselected package librust-utf8parse-dev:arm64. 201s Preparing to unpack .../187-librust-utf8parse-dev_0.2.1-1_arm64.deb ... 201s Unpacking librust-utf8parse-dev:arm64 (0.2.1-1) ... 202s Selecting previously unselected package librust-anstyle-parse-dev:arm64. 202s Preparing to unpack .../188-librust-anstyle-parse-dev_0.2.1-1_arm64.deb ... 202s Unpacking librust-anstyle-parse-dev:arm64 (0.2.1-1) ... 202s Selecting previously unselected package librust-anstyle-query-dev:arm64. 202s Preparing to unpack .../189-librust-anstyle-query-dev_1.0.0-1_arm64.deb ... 202s Unpacking librust-anstyle-query-dev:arm64 (1.0.0-1) ... 202s Selecting previously unselected package librust-colorchoice-dev:arm64. 202s Preparing to unpack .../190-librust-colorchoice-dev_1.0.0-1_arm64.deb ... 202s Unpacking librust-colorchoice-dev:arm64 (1.0.0-1) ... 202s Selecting previously unselected package librust-anstream-dev:arm64. 202s Preparing to unpack .../191-librust-anstream-dev_0.6.15-1_arm64.deb ... 202s Unpacking librust-anstream-dev:arm64 (0.6.15-1) ... 202s Selecting previously unselected package librust-jobserver-dev:arm64. 202s Preparing to unpack .../192-librust-jobserver-dev_0.1.32-1_arm64.deb ... 202s Unpacking librust-jobserver-dev:arm64 (0.1.32-1) ... 202s Selecting previously unselected package librust-shlex-dev:arm64. 202s Preparing to unpack .../193-librust-shlex-dev_1.3.0-1_arm64.deb ... 202s Unpacking librust-shlex-dev:arm64 (1.3.0-1) ... 202s Selecting previously unselected package librust-cc-dev:arm64. 202s Preparing to unpack .../194-librust-cc-dev_1.1.14-1_arm64.deb ... 202s Unpacking librust-cc-dev:arm64 (1.1.14-1) ... 202s Selecting previously unselected package librust-backtrace-dev:arm64. 202s Preparing to unpack .../195-librust-backtrace-dev_0.3.69-2_arm64.deb ... 202s Unpacking librust-backtrace-dev:arm64 (0.3.69-2) ... 202s Selecting previously unselected package librust-anyhow-dev:arm64. 202s Preparing to unpack .../196-librust-anyhow-dev_1.0.86-1_arm64.deb ... 202s Unpacking librust-anyhow-dev:arm64 (1.0.86-1) ... 202s Selecting previously unselected package librust-bytecheck-derive-dev:arm64. 202s Preparing to unpack .../197-librust-bytecheck-derive-dev_0.6.12-1_arm64.deb ... 202s Unpacking librust-bytecheck-derive-dev:arm64 (0.6.12-1) ... 202s Selecting previously unselected package librust-ptr-meta-derive-dev:arm64. 202s Preparing to unpack .../198-librust-ptr-meta-derive-dev_0.1.4-1_arm64.deb ... 202s Unpacking librust-ptr-meta-derive-dev:arm64 (0.1.4-1) ... 202s Selecting previously unselected package librust-ptr-meta-dev:arm64. 202s Preparing to unpack .../199-librust-ptr-meta-dev_0.1.4-1_arm64.deb ... 202s Unpacking librust-ptr-meta-dev:arm64 (0.1.4-1) ... 203s Selecting previously unselected package librust-simdutf8-dev:arm64. 203s Preparing to unpack .../200-librust-simdutf8-dev_0.1.4-4_arm64.deb ... 203s Unpacking librust-simdutf8-dev:arm64 (0.1.4-4) ... 203s Selecting previously unselected package librust-bytemuck-derive-dev:arm64. 203s Preparing to unpack .../201-librust-bytemuck-derive-dev_1.5.0-2_arm64.deb ... 203s Unpacking librust-bytemuck-derive-dev:arm64 (1.5.0-2) ... 203s Selecting previously unselected package librust-bytemuck-dev:arm64. 203s Preparing to unpack .../202-librust-bytemuck-dev_1.14.0-1_arm64.deb ... 203s Unpacking librust-bytemuck-dev:arm64 (1.14.0-1) ... 203s Selecting previously unselected package librust-atomic-dev:arm64. 203s Preparing to unpack .../203-librust-atomic-dev_0.6.0-1_arm64.deb ... 203s Unpacking librust-atomic-dev:arm64 (0.6.0-1) ... 203s Selecting previously unselected package librust-md5-asm-dev:arm64. 203s Preparing to unpack .../204-librust-md5-asm-dev_0.5.0-2_arm64.deb ... 203s Unpacking librust-md5-asm-dev:arm64 (0.5.0-2) ... 203s Selecting previously unselected package librust-md-5-dev:arm64. 203s Preparing to unpack .../205-librust-md-5-dev_0.10.6-1_arm64.deb ... 203s Unpacking librust-md-5-dev:arm64 (0.10.6-1) ... 203s Selecting previously unselected package librust-cpufeatures-dev:arm64. 203s Preparing to unpack .../206-librust-cpufeatures-dev_0.2.11-1_arm64.deb ... 203s Unpacking librust-cpufeatures-dev:arm64 (0.2.11-1) ... 203s Selecting previously unselected package librust-sha1-asm-dev:arm64. 203s Preparing to unpack .../207-librust-sha1-asm-dev_0.5.1-2_arm64.deb ... 203s Unpacking librust-sha1-asm-dev:arm64 (0.5.1-2) ... 203s Selecting previously unselected package librust-sha1-dev:arm64. 203s Preparing to unpack .../208-librust-sha1-dev_0.10.6-1_arm64.deb ... 203s Unpacking librust-sha1-dev:arm64 (0.10.6-1) ... 203s Selecting previously unselected package librust-slog-dev:arm64. 203s Preparing to unpack .../209-librust-slog-dev_2.7.0-1_arm64.deb ... 203s Unpacking librust-slog-dev:arm64 (2.7.0-1) ... 203s Selecting previously unselected package librust-uuid-dev:arm64. 203s Preparing to unpack .../210-librust-uuid-dev_1.10.0-1_arm64.deb ... 203s Unpacking librust-uuid-dev:arm64 (1.10.0-1) ... 204s Selecting previously unselected package librust-bytecheck-dev:arm64. 204s Preparing to unpack .../211-librust-bytecheck-dev_0.6.12-1_arm64.deb ... 204s Unpacking librust-bytecheck-dev:arm64 (0.6.12-1) ... 204s Selecting previously unselected package librust-autocfg-dev:arm64. 204s Preparing to unpack .../212-librust-autocfg-dev_1.1.0-1_arm64.deb ... 204s Unpacking librust-autocfg-dev:arm64 (1.1.0-1) ... 204s Selecting previously unselected package librust-num-traits-dev:arm64. 204s Preparing to unpack .../213-librust-num-traits-dev_0.2.19-2_arm64.deb ... 204s Unpacking librust-num-traits-dev:arm64 (0.2.19-2) ... 204s Selecting previously unselected package librust-funty-dev:arm64. 204s Preparing to unpack .../214-librust-funty-dev_2.0.0-1_arm64.deb ... 204s Unpacking librust-funty-dev:arm64 (2.0.0-1) ... 204s Selecting previously unselected package librust-radium-dev:arm64. 204s Preparing to unpack .../215-librust-radium-dev_1.1.0-1_arm64.deb ... 204s Unpacking librust-radium-dev:arm64 (1.1.0-1) ... 204s Selecting previously unselected package librust-tap-dev:arm64. 204s Preparing to unpack .../216-librust-tap-dev_1.0.1-1_arm64.deb ... 204s Unpacking librust-tap-dev:arm64 (1.0.1-1) ... 204s Selecting previously unselected package librust-traitobject-dev:arm64. 204s Preparing to unpack .../217-librust-traitobject-dev_0.1.0-1_arm64.deb ... 204s Unpacking librust-traitobject-dev:arm64 (0.1.0-1) ... 204s Selecting previously unselected package librust-unsafe-any-dev:arm64. 204s Preparing to unpack .../218-librust-unsafe-any-dev_0.4.2-2_arm64.deb ... 204s Unpacking librust-unsafe-any-dev:arm64 (0.4.2-2) ... 204s Selecting previously unselected package librust-typemap-dev:arm64. 204s Preparing to unpack .../219-librust-typemap-dev_0.3.3-2_arm64.deb ... 204s Unpacking librust-typemap-dev:arm64 (0.3.3-2) ... 204s Selecting previously unselected package librust-wyz-dev:arm64. 204s Preparing to unpack .../220-librust-wyz-dev_0.5.1-1_arm64.deb ... 204s Unpacking librust-wyz-dev:arm64 (0.5.1-1) ... 204s Selecting previously unselected package librust-bitvec-dev:arm64. 204s Preparing to unpack .../221-librust-bitvec-dev_1.0.1-1_arm64.deb ... 204s Unpacking librust-bitvec-dev:arm64 (1.0.1-1) ... 204s Selecting previously unselected package librust-bytes-dev:arm64. 205s Preparing to unpack .../222-librust-bytes-dev_1.8.0-1_arm64.deb ... 205s Unpacking librust-bytes-dev:arm64 (1.8.0-1) ... 205s Selecting previously unselected package librust-rend-dev:arm64. 205s Preparing to unpack .../223-librust-rend-dev_0.4.0-1_arm64.deb ... 205s Unpacking librust-rend-dev:arm64 (0.4.0-1) ... 205s Selecting previously unselected package librust-rkyv-derive-dev:arm64. 205s Preparing to unpack .../224-librust-rkyv-derive-dev_0.7.44-1_arm64.deb ... 205s Unpacking librust-rkyv-derive-dev:arm64 (0.7.44-1) ... 205s Selecting previously unselected package librust-seahash-dev:arm64. 205s Preparing to unpack .../225-librust-seahash-dev_4.1.0-1_arm64.deb ... 205s Unpacking librust-seahash-dev:arm64 (4.1.0-1) ... 205s Selecting previously unselected package librust-smol-str-dev:arm64. 205s Preparing to unpack .../226-librust-smol-str-dev_0.2.0-1_arm64.deb ... 205s Unpacking librust-smol-str-dev:arm64 (0.2.0-1) ... 205s Selecting previously unselected package librust-tinyvec-dev:arm64. 205s Preparing to unpack .../227-librust-tinyvec-dev_1.6.0-2_arm64.deb ... 205s Unpacking librust-tinyvec-dev:arm64 (1.6.0-2) ... 205s Selecting previously unselected package librust-tinyvec-macros-dev:arm64. 205s Preparing to unpack .../228-librust-tinyvec-macros-dev_0.1.0-1_arm64.deb ... 205s Unpacking librust-tinyvec-macros-dev:arm64 (0.1.0-1) ... 205s Selecting previously unselected package librust-tinyvec+tinyvec-macros-dev:arm64. 205s Preparing to unpack .../229-librust-tinyvec+tinyvec-macros-dev_1.6.0-2_arm64.deb ... 205s Unpacking librust-tinyvec+tinyvec-macros-dev:arm64 (1.6.0-2) ... 205s Selecting previously unselected package librust-rkyv-dev:arm64. 205s Preparing to unpack .../230-librust-rkyv-dev_0.7.44-1_arm64.deb ... 205s Unpacking librust-rkyv-dev:arm64 (0.7.44-1) ... 205s Selecting previously unselected package librust-num-complex-dev:arm64. 205s Preparing to unpack .../231-librust-num-complex-dev_0.4.6-2_arm64.deb ... 205s Unpacking librust-num-complex-dev:arm64 (0.4.6-2) ... 205s Selecting previously unselected package librust-approx-dev:arm64. 205s Preparing to unpack .../232-librust-approx-dev_0.5.1-1_arm64.deb ... 205s Unpacking librust-approx-dev:arm64 (0.5.1-1) ... 205s Selecting previously unselected package librust-array-init-dev:arm64. 205s Preparing to unpack .../233-librust-array-init-dev_2.0.1-1_arm64.deb ... 205s Unpacking librust-array-init-dev:arm64 (2.0.1-1) ... 205s Selecting previously unselected package librust-async-attributes-dev. 205s Preparing to unpack .../234-librust-async-attributes-dev_1.1.2-6_all.deb ... 205s Unpacking librust-async-attributes-dev (1.1.2-6) ... 205s Selecting previously unselected package librust-concurrent-queue-dev:arm64. 205s Preparing to unpack .../235-librust-concurrent-queue-dev_2.5.0-4_arm64.deb ... 205s Unpacking librust-concurrent-queue-dev:arm64 (2.5.0-4) ... 206s Selecting previously unselected package librust-parking-dev:arm64. 206s Preparing to unpack .../236-librust-parking-dev_2.2.0-1_arm64.deb ... 206s Unpacking librust-parking-dev:arm64 (2.2.0-1) ... 206s Selecting previously unselected package librust-pin-project-lite-dev:arm64. 206s Preparing to unpack .../237-librust-pin-project-lite-dev_0.2.13-1_arm64.deb ... 206s Unpacking librust-pin-project-lite-dev:arm64 (0.2.13-1) ... 206s Selecting previously unselected package librust-event-listener-dev. 206s Preparing to unpack .../238-librust-event-listener-dev_5.3.1-8_all.deb ... 206s Unpacking librust-event-listener-dev (5.3.1-8) ... 206s Selecting previously unselected package librust-event-listener-strategy-dev:arm64. 206s Preparing to unpack .../239-librust-event-listener-strategy-dev_0.5.2-3_arm64.deb ... 206s Unpacking librust-event-listener-strategy-dev:arm64 (0.5.2-3) ... 206s Selecting previously unselected package librust-futures-core-dev:arm64. 206s Preparing to unpack .../240-librust-futures-core-dev_0.3.30-1_arm64.deb ... 206s Unpacking librust-futures-core-dev:arm64 (0.3.30-1) ... 206s Selecting previously unselected package librust-async-channel-dev. 206s Preparing to unpack .../241-librust-async-channel-dev_2.3.1-8_all.deb ... 206s Unpacking librust-async-channel-dev (2.3.1-8) ... 206s Selecting previously unselected package librust-async-task-dev. 206s Preparing to unpack .../242-librust-async-task-dev_4.7.1-3_all.deb ... 206s Unpacking librust-async-task-dev (4.7.1-3) ... 206s Selecting previously unselected package librust-fastrand-dev:arm64. 206s Preparing to unpack .../243-librust-fastrand-dev_2.1.1-1_arm64.deb ... 206s Unpacking librust-fastrand-dev:arm64 (2.1.1-1) ... 206s Selecting previously unselected package librust-futures-io-dev:arm64. 206s Preparing to unpack .../244-librust-futures-io-dev_0.3.31-1_arm64.deb ... 206s Unpacking librust-futures-io-dev:arm64 (0.3.31-1) ... 206s Selecting previously unselected package librust-futures-lite-dev:arm64. 206s Preparing to unpack .../245-librust-futures-lite-dev_2.3.0-2_arm64.deb ... 206s Unpacking librust-futures-lite-dev:arm64 (2.3.0-2) ... 206s Selecting previously unselected package librust-slab-dev:arm64. 206s Preparing to unpack .../246-librust-slab-dev_0.4.9-1_arm64.deb ... 206s Unpacking librust-slab-dev:arm64 (0.4.9-1) ... 206s Selecting previously unselected package librust-async-executor-dev. 206s Preparing to unpack .../247-librust-async-executor-dev_1.13.1-1_all.deb ... 206s Unpacking librust-async-executor-dev (1.13.1-1) ... 206s Selecting previously unselected package librust-async-lock-dev. 206s Preparing to unpack .../248-librust-async-lock-dev_3.4.0-4_all.deb ... 206s Unpacking librust-async-lock-dev (3.4.0-4) ... 206s Selecting previously unselected package librust-atomic-waker-dev:arm64. 207s Preparing to unpack .../249-librust-atomic-waker-dev_1.1.2-1_arm64.deb ... 207s Unpacking librust-atomic-waker-dev:arm64 (1.1.2-1) ... 207s Selecting previously unselected package librust-tracing-attributes-dev:arm64. 207s Preparing to unpack .../250-librust-tracing-attributes-dev_0.1.27-1_arm64.deb ... 207s Unpacking librust-tracing-attributes-dev:arm64 (0.1.27-1) ... 207s Selecting previously unselected package librust-valuable-derive-dev:arm64. 207s Preparing to unpack .../251-librust-valuable-derive-dev_0.1.0-1_arm64.deb ... 207s Unpacking librust-valuable-derive-dev:arm64 (0.1.0-1) ... 207s Selecting previously unselected package librust-valuable-dev:arm64. 207s Preparing to unpack .../252-librust-valuable-dev_0.1.0-4_arm64.deb ... 207s Unpacking librust-valuable-dev:arm64 (0.1.0-4) ... 207s Selecting previously unselected package librust-tracing-core-dev:arm64. 207s Preparing to unpack .../253-librust-tracing-core-dev_0.1.32-1_arm64.deb ... 207s Unpacking librust-tracing-core-dev:arm64 (0.1.32-1) ... 207s Selecting previously unselected package librust-tracing-dev:arm64. 207s Preparing to unpack .../254-librust-tracing-dev_0.1.40-1_arm64.deb ... 207s Unpacking librust-tracing-dev:arm64 (0.1.40-1) ... 207s Selecting previously unselected package librust-blocking-dev. 207s Preparing to unpack .../255-librust-blocking-dev_1.6.1-5_all.deb ... 207s Unpacking librust-blocking-dev (1.6.1-5) ... 207s Selecting previously unselected package librust-async-fs-dev. 207s Preparing to unpack .../256-librust-async-fs-dev_2.1.2-4_all.deb ... 207s Unpacking librust-async-fs-dev (2.1.2-4) ... 207s Selecting previously unselected package librust-bitflags-dev:arm64. 207s Preparing to unpack .../257-librust-bitflags-dev_2.6.0-1_arm64.deb ... 207s Unpacking librust-bitflags-dev:arm64 (2.6.0-1) ... 207s Selecting previously unselected package librust-compiler-builtins+core-dev:arm64. 207s Preparing to unpack .../258-librust-compiler-builtins+core-dev_0.1.101-1_arm64.deb ... 207s Unpacking librust-compiler-builtins+core-dev:arm64 (0.1.101-1) ... 207s Selecting previously unselected package librust-compiler-builtins+rustc-dep-of-std-dev:arm64. 207s Preparing to unpack .../259-librust-compiler-builtins+rustc-dep-of-std-dev_0.1.101-1_arm64.deb ... 207s Unpacking librust-compiler-builtins+rustc-dep-of-std-dev:arm64 (0.1.101-1) ... 207s Selecting previously unselected package librust-errno-dev:arm64. 207s Preparing to unpack .../260-librust-errno-dev_0.3.8-1_arm64.deb ... 207s Unpacking librust-errno-dev:arm64 (0.3.8-1) ... 207s Selecting previously unselected package librust-linux-raw-sys-dev:arm64. 207s Preparing to unpack .../261-librust-linux-raw-sys-dev_0.4.14-1_arm64.deb ... 207s Unpacking librust-linux-raw-sys-dev:arm64 (0.4.14-1) ... 207s Selecting previously unselected package librust-rustix-dev:arm64. 208s Preparing to unpack .../262-librust-rustix-dev_0.38.32-1_arm64.deb ... 208s Unpacking librust-rustix-dev:arm64 (0.38.32-1) ... 208s Selecting previously unselected package librust-polling-dev:arm64. 208s Preparing to unpack .../263-librust-polling-dev_3.4.0-1_arm64.deb ... 208s Unpacking librust-polling-dev:arm64 (3.4.0-1) ... 208s Selecting previously unselected package librust-async-io-dev:arm64. 208s Preparing to unpack .../264-librust-async-io-dev_2.3.3-4_arm64.deb ... 208s Unpacking librust-async-io-dev:arm64 (2.3.3-4) ... 208s Selecting previously unselected package librust-mio-dev:arm64. 208s Preparing to unpack .../265-librust-mio-dev_1.0.2-2_arm64.deb ... 208s Unpacking librust-mio-dev:arm64 (1.0.2-2) ... 208s Selecting previously unselected package librust-owning-ref-dev:arm64. 208s Preparing to unpack .../266-librust-owning-ref-dev_0.4.1-1_arm64.deb ... 208s Unpacking librust-owning-ref-dev:arm64 (0.4.1-1) ... 208s Selecting previously unselected package librust-scopeguard-dev:arm64. 208s Preparing to unpack .../267-librust-scopeguard-dev_1.2.0-1_arm64.deb ... 208s Unpacking librust-scopeguard-dev:arm64 (1.2.0-1) ... 208s Selecting previously unselected package librust-lock-api-dev:arm64. 208s Preparing to unpack .../268-librust-lock-api-dev_0.4.12-1_arm64.deb ... 208s Unpacking librust-lock-api-dev:arm64 (0.4.12-1) ... 208s Selecting previously unselected package librust-parking-lot-dev:arm64. 208s Preparing to unpack .../269-librust-parking-lot-dev_0.12.3-1_arm64.deb ... 208s Unpacking librust-parking-lot-dev:arm64 (0.12.3-1) ... 208s Selecting previously unselected package librust-signal-hook-registry-dev:arm64. 208s Preparing to unpack .../270-librust-signal-hook-registry-dev_1.4.0-1_arm64.deb ... 208s Unpacking librust-signal-hook-registry-dev:arm64 (1.4.0-1) ... 208s Selecting previously unselected package librust-socket2-dev:arm64. 208s Preparing to unpack .../271-librust-socket2-dev_0.5.7-1_arm64.deb ... 208s Unpacking librust-socket2-dev:arm64 (0.5.7-1) ... 208s Selecting previously unselected package librust-tokio-macros-dev:arm64. 208s Preparing to unpack .../272-librust-tokio-macros-dev_2.4.0-2_arm64.deb ... 208s Unpacking librust-tokio-macros-dev:arm64 (2.4.0-2) ... 208s Selecting previously unselected package librust-tokio-dev:arm64. 208s Preparing to unpack .../273-librust-tokio-dev_1.39.3-3_arm64.deb ... 208s Unpacking librust-tokio-dev:arm64 (1.39.3-3) ... 208s Selecting previously unselected package librust-async-global-executor-dev:arm64. 209s Preparing to unpack .../274-librust-async-global-executor-dev_2.4.1-5_arm64.deb ... 209s Unpacking librust-async-global-executor-dev:arm64 (2.4.1-5) ... 209s Selecting previously unselected package librust-async-net-dev. 209s Preparing to unpack .../275-librust-async-net-dev_2.0.0-4_all.deb ... 209s Unpacking librust-async-net-dev (2.0.0-4) ... 209s Selecting previously unselected package librust-async-signal-dev:arm64. 209s Preparing to unpack .../276-librust-async-signal-dev_0.2.10-1_arm64.deb ... 209s Unpacking librust-async-signal-dev:arm64 (0.2.10-1) ... 209s Selecting previously unselected package librust-async-process-dev. 209s Preparing to unpack .../277-librust-async-process-dev_2.3.0-1_all.deb ... 209s Unpacking librust-async-process-dev (2.3.0-1) ... 209s Selecting previously unselected package librust-kv-log-macro-dev. 209s Preparing to unpack .../278-librust-kv-log-macro-dev_1.0.8-4_all.deb ... 209s Unpacking librust-kv-log-macro-dev (1.0.8-4) ... 209s Selecting previously unselected package librust-pin-utils-dev:arm64. 209s Preparing to unpack .../279-librust-pin-utils-dev_0.1.0-1_arm64.deb ... 209s Unpacking librust-pin-utils-dev:arm64 (0.1.0-1) ... 209s Selecting previously unselected package librust-async-std-dev. 209s Preparing to unpack .../280-librust-async-std-dev_1.13.0-1_all.deb ... 209s Unpacking librust-async-std-dev (1.13.0-1) ... 209s Selecting previously unselected package librust-base64-dev:arm64. 209s Preparing to unpack .../281-librust-base64-dev_0.21.7-1_arm64.deb ... 209s Unpacking librust-base64-dev:arm64 (0.21.7-1) ... 209s Selecting previously unselected package librust-bit-vec-dev:arm64. 209s Preparing to unpack .../282-librust-bit-vec-dev_0.6.3-1_arm64.deb ... 209s Unpacking librust-bit-vec-dev:arm64 (0.6.3-1) ... 209s Selecting previously unselected package librust-bit-set-dev:arm64. 209s Preparing to unpack .../283-librust-bit-set-dev_0.5.2-1_arm64.deb ... 209s Unpacking librust-bit-set-dev:arm64 (0.5.2-1) ... 209s Selecting previously unselected package librust-bit-set+std-dev:arm64. 209s Preparing to unpack .../284-librust-bit-set+std-dev_0.5.2-1_arm64.deb ... 209s Unpacking librust-bit-set+std-dev:arm64 (0.5.2-1) ... 209s Selecting previously unselected package librust-regex-syntax-dev:arm64. 209s Preparing to unpack .../285-librust-regex-syntax-dev_0.8.2-1_arm64.deb ... 209s Unpacking librust-regex-syntax-dev:arm64 (0.8.2-1) ... 209s Selecting previously unselected package librust-regex-automata-dev:arm64. 210s Preparing to unpack .../286-librust-regex-automata-dev_0.4.7-1_arm64.deb ... 210s Unpacking librust-regex-automata-dev:arm64 (0.4.7-1) ... 210s Selecting previously unselected package librust-bstr-dev:arm64. 210s Preparing to unpack .../287-librust-bstr-dev_1.7.0-2build1_arm64.deb ... 210s Unpacking librust-bstr-dev:arm64 (1.7.0-2build1) ... 210s Selecting previously unselected package librust-bumpalo-dev:arm64. 210s Preparing to unpack .../288-librust-bumpalo-dev_3.16.0-1_arm64.deb ... 210s Unpacking librust-bumpalo-dev:arm64 (3.16.0-1) ... 210s Selecting previously unselected package librust-cast-dev:arm64. 210s Preparing to unpack .../289-librust-cast-dev_0.3.0-1_arm64.deb ... 210s Unpacking librust-cast-dev:arm64 (0.3.0-1) ... 210s Selecting previously unselected package librust-iana-time-zone-dev:arm64. 210s Preparing to unpack .../290-librust-iana-time-zone-dev_0.1.60-1_arm64.deb ... 210s Unpacking librust-iana-time-zone-dev:arm64 (0.1.60-1) ... 210s Selecting previously unselected package librust-wasm-bindgen-shared-dev:arm64. 210s Preparing to unpack .../291-librust-wasm-bindgen-shared-dev_0.2.87-1_arm64.deb ... 210s Unpacking librust-wasm-bindgen-shared-dev:arm64 (0.2.87-1) ... 210s Selecting previously unselected package librust-wasm-bindgen-backend-dev:arm64. 210s Preparing to unpack .../292-librust-wasm-bindgen-backend-dev_0.2.87-1_arm64.deb ... 210s Unpacking librust-wasm-bindgen-backend-dev:arm64 (0.2.87-1) ... 210s Selecting previously unselected package librust-wasm-bindgen-macro-support-dev:arm64. 210s Preparing to unpack .../293-librust-wasm-bindgen-macro-support-dev_0.2.87-1_arm64.deb ... 210s Unpacking librust-wasm-bindgen-macro-support-dev:arm64 (0.2.87-1) ... 210s Selecting previously unselected package librust-wasm-bindgen-macro-dev:arm64. 210s Preparing to unpack .../294-librust-wasm-bindgen-macro-dev_0.2.87-1_arm64.deb ... 210s Unpacking librust-wasm-bindgen-macro-dev:arm64 (0.2.87-1) ... 210s Selecting previously unselected package librust-wasm-bindgen-dev:arm64. 210s Preparing to unpack .../295-librust-wasm-bindgen-dev_0.2.87-1_arm64.deb ... 210s Unpacking librust-wasm-bindgen-dev:arm64 (0.2.87-1) ... 210s Selecting previously unselected package librust-wasm-bindgen-macro-support+spans-dev:arm64. 211s Preparing to unpack .../296-librust-wasm-bindgen-macro-support+spans-dev_0.2.87-1_arm64.deb ... 211s Unpacking librust-wasm-bindgen-macro-support+spans-dev:arm64 (0.2.87-1) ... 211s Selecting previously unselected package librust-wasm-bindgen-macro+spans-dev:arm64. 211s Preparing to unpack .../297-librust-wasm-bindgen-macro+spans-dev_0.2.87-1_arm64.deb ... 211s Unpacking librust-wasm-bindgen-macro+spans-dev:arm64 (0.2.87-1) ... 211s Selecting previously unselected package librust-wasm-bindgen+spans-dev:arm64. 211s Preparing to unpack .../298-librust-wasm-bindgen+spans-dev_0.2.87-1_arm64.deb ... 211s Unpacking librust-wasm-bindgen+spans-dev:arm64 (0.2.87-1) ... 211s Selecting previously unselected package librust-wasm-bindgen+default-dev:arm64. 211s Preparing to unpack .../299-librust-wasm-bindgen+default-dev_0.2.87-1_arm64.deb ... 211s Unpacking librust-wasm-bindgen+default-dev:arm64 (0.2.87-1) ... 211s Selecting previously unselected package librust-js-sys-dev:arm64. 211s Preparing to unpack .../300-librust-js-sys-dev_0.3.64-1_arm64.deb ... 211s Unpacking librust-js-sys-dev:arm64 (0.3.64-1) ... 211s Selecting previously unselected package librust-pure-rust-locales-dev:arm64. 211s Preparing to unpack .../301-librust-pure-rust-locales-dev_0.8.1-1_arm64.deb ... 211s Unpacking librust-pure-rust-locales-dev:arm64 (0.8.1-1) ... 211s Selecting previously unselected package librust-chrono-dev:arm64. 211s Preparing to unpack .../302-librust-chrono-dev_0.4.38-2_arm64.deb ... 211s Unpacking librust-chrono-dev:arm64 (0.4.38-2) ... 211s Selecting previously unselected package librust-regex-dev:arm64. 211s Preparing to unpack .../303-librust-regex-dev_1.10.6-1_arm64.deb ... 211s Unpacking librust-regex-dev:arm64 (1.10.6-1) ... 211s Selecting previously unselected package librust-parse-zoneinfo-dev:arm64. 211s Preparing to unpack .../304-librust-parse-zoneinfo-dev_0.3.0-1_arm64.deb ... 211s Unpacking librust-parse-zoneinfo-dev:arm64 (0.3.0-1) ... 211s Selecting previously unselected package librust-siphasher-dev:arm64. 211s Preparing to unpack .../305-librust-siphasher-dev_0.3.10-1_arm64.deb ... 211s Unpacking librust-siphasher-dev:arm64 (0.3.10-1) ... 211s Selecting previously unselected package librust-phf-shared-dev:arm64. 211s Preparing to unpack .../306-librust-phf-shared-dev_0.11.2-1_arm64.deb ... 211s Unpacking librust-phf-shared-dev:arm64 (0.11.2-1) ... 211s Selecting previously unselected package librust-phf-dev:arm64. 211s Preparing to unpack .../307-librust-phf-dev_0.11.2-1_arm64.deb ... 211s Unpacking librust-phf-dev:arm64 (0.11.2-1) ... 211s Selecting previously unselected package librust-uncased-dev:arm64. 211s Preparing to unpack .../308-librust-uncased-dev_0.9.6-2_arm64.deb ... 211s Unpacking librust-uncased-dev:arm64 (0.9.6-2) ... 212s Selecting previously unselected package librust-phf-shared+uncased-dev:arm64. 212s Preparing to unpack .../309-librust-phf-shared+uncased-dev_0.11.2-1_arm64.deb ... 212s Unpacking librust-phf-shared+uncased-dev:arm64 (0.11.2-1) ... 212s Selecting previously unselected package librust-phf+uncased-dev:arm64. 212s Preparing to unpack .../310-librust-phf+uncased-dev_0.11.2-1_arm64.deb ... 212s Unpacking librust-phf+uncased-dev:arm64 (0.11.2-1) ... 212s Selecting previously unselected package librust-ciborium-io-dev:arm64. 212s Preparing to unpack .../311-librust-ciborium-io-dev_0.2.2-1_arm64.deb ... 212s Unpacking librust-ciborium-io-dev:arm64 (0.2.2-1) ... 212s Selecting previously unselected package librust-half-dev:arm64. 212s Preparing to unpack .../312-librust-half-dev_1.8.2-4_arm64.deb ... 212s Unpacking librust-half-dev:arm64 (1.8.2-4) ... 212s Selecting previously unselected package librust-ciborium-ll-dev:arm64. 212s Preparing to unpack .../313-librust-ciborium-ll-dev_0.2.2-1_arm64.deb ... 212s Unpacking librust-ciborium-ll-dev:arm64 (0.2.2-1) ... 212s Selecting previously unselected package librust-ciborium-dev:arm64. 212s Preparing to unpack .../314-librust-ciborium-dev_0.2.2-2_arm64.deb ... 212s Unpacking librust-ciborium-dev:arm64 (0.2.2-2) ... 212s Selecting previously unselected package librust-clap-lex-dev:arm64. 212s Preparing to unpack .../315-librust-clap-lex-dev_0.7.2-2_arm64.deb ... 212s Unpacking librust-clap-lex-dev:arm64 (0.7.2-2) ... 212s Selecting previously unselected package librust-strsim-dev:arm64. 212s Preparing to unpack .../316-librust-strsim-dev_0.11.1-1_arm64.deb ... 212s Unpacking librust-strsim-dev:arm64 (0.11.1-1) ... 212s Selecting previously unselected package librust-terminal-size-dev:arm64. 212s Preparing to unpack .../317-librust-terminal-size-dev_0.3.0-2_arm64.deb ... 212s Unpacking librust-terminal-size-dev:arm64 (0.3.0-2) ... 212s Selecting previously unselected package librust-unicase-dev:arm64. 213s Preparing to unpack .../318-librust-unicase-dev_2.7.0-1_arm64.deb ... 213s Unpacking librust-unicase-dev:arm64 (2.7.0-1) ... 213s Selecting previously unselected package librust-unicode-width-dev:arm64. 213s Preparing to unpack .../319-librust-unicode-width-dev_0.1.14-1_arm64.deb ... 213s Unpacking librust-unicode-width-dev:arm64 (0.1.14-1) ... 213s Selecting previously unselected package librust-clap-builder-dev:arm64. 213s Preparing to unpack .../320-librust-clap-builder-dev_4.5.15-2_arm64.deb ... 213s Unpacking librust-clap-builder-dev:arm64 (4.5.15-2) ... 213s Selecting previously unselected package librust-heck-dev:arm64. 213s Preparing to unpack .../321-librust-heck-dev_0.4.1-1_arm64.deb ... 213s Unpacking librust-heck-dev:arm64 (0.4.1-1) ... 213s Selecting previously unselected package librust-clap-derive-dev:arm64. 213s Preparing to unpack .../322-librust-clap-derive-dev_4.5.13-2_arm64.deb ... 213s Unpacking librust-clap-derive-dev:arm64 (4.5.13-2) ... 213s Selecting previously unselected package librust-clap-dev:arm64. 213s Preparing to unpack .../323-librust-clap-dev_4.5.16-1_arm64.deb ... 213s Unpacking librust-clap-dev:arm64 (4.5.16-1) ... 213s Selecting previously unselected package librust-csv-core-dev:arm64. 213s Preparing to unpack .../324-librust-csv-core-dev_0.1.11-1_arm64.deb ... 213s Unpacking librust-csv-core-dev:arm64 (0.1.11-1) ... 213s Selecting previously unselected package librust-csv-dev:arm64. 213s Preparing to unpack .../325-librust-csv-dev_1.3.0-1_arm64.deb ... 213s Unpacking librust-csv-dev:arm64 (1.3.0-1) ... 213s Selecting previously unselected package librust-futures-sink-dev:arm64. 213s Preparing to unpack .../326-librust-futures-sink-dev_0.3.31-1_arm64.deb ... 213s Unpacking librust-futures-sink-dev:arm64 (0.3.31-1) ... 213s Selecting previously unselected package librust-futures-channel-dev:arm64. 214s Preparing to unpack .../327-librust-futures-channel-dev_0.3.30-1_arm64.deb ... 214s Unpacking librust-futures-channel-dev:arm64 (0.3.30-1) ... 214s Selecting previously unselected package librust-futures-task-dev:arm64. 214s Preparing to unpack .../328-librust-futures-task-dev_0.3.30-1_arm64.deb ... 214s Unpacking librust-futures-task-dev:arm64 (0.3.30-1) ... 214s Selecting previously unselected package librust-futures-macro-dev:arm64. 214s Preparing to unpack .../329-librust-futures-macro-dev_0.3.30-1_arm64.deb ... 214s Unpacking librust-futures-macro-dev:arm64 (0.3.30-1) ... 214s Selecting previously unselected package librust-futures-util-dev:arm64. 214s Preparing to unpack .../330-librust-futures-util-dev_0.3.30-2_arm64.deb ... 214s Unpacking librust-futures-util-dev:arm64 (0.3.30-2) ... 214s Selecting previously unselected package librust-num-cpus-dev:arm64. 214s Preparing to unpack .../331-librust-num-cpus-dev_1.16.0-1_arm64.deb ... 214s Unpacking librust-num-cpus-dev:arm64 (1.16.0-1) ... 214s Selecting previously unselected package librust-futures-executor-dev:arm64. 214s Preparing to unpack .../332-librust-futures-executor-dev_0.3.30-1_arm64.deb ... 214s Unpacking librust-futures-executor-dev:arm64 (0.3.30-1) ... 214s Selecting previously unselected package librust-futures-dev:arm64. 214s Preparing to unpack .../333-librust-futures-dev_0.3.30-2_arm64.deb ... 214s Unpacking librust-futures-dev:arm64 (0.3.30-2) ... 215s Selecting previously unselected package librust-is-terminal-dev:arm64. 215s Preparing to unpack .../334-librust-is-terminal-dev_0.4.13-1_arm64.deb ... 215s Unpacking librust-is-terminal-dev:arm64 (0.4.13-1) ... 215s Selecting previously unselected package librust-itertools-dev:arm64. 215s Preparing to unpack .../335-librust-itertools-dev_0.10.5-1_arm64.deb ... 215s Unpacking librust-itertools-dev:arm64 (0.10.5-1) ... 215s Selecting previously unselected package librust-oorandom-dev:arm64. 215s Preparing to unpack .../336-librust-oorandom-dev_11.1.3-1_arm64.deb ... 215s Unpacking librust-oorandom-dev:arm64 (11.1.3-1) ... 215s Selecting previously unselected package librust-winapi-i686-pc-windows-gnu-dev:arm64. 215s Preparing to unpack .../337-librust-winapi-i686-pc-windows-gnu-dev_0.4.0-1_arm64.deb ... 215s Unpacking librust-winapi-i686-pc-windows-gnu-dev:arm64 (0.4.0-1) ... 215s Selecting previously unselected package librust-winapi-x86-64-pc-windows-gnu-dev:arm64. 215s Preparing to unpack .../338-librust-winapi-x86-64-pc-windows-gnu-dev_0.4.0-1_arm64.deb ... 215s Unpacking librust-winapi-x86-64-pc-windows-gnu-dev:arm64 (0.4.0-1) ... 215s Selecting previously unselected package librust-winapi-dev:arm64. 215s Preparing to unpack .../339-librust-winapi-dev_0.3.9-1_arm64.deb ... 215s Unpacking librust-winapi-dev:arm64 (0.3.9-1) ... 215s Selecting previously unselected package librust-dirs-sys-next-dev:arm64. 215s Preparing to unpack .../340-librust-dirs-sys-next-dev_0.1.1-1_arm64.deb ... 215s Unpacking librust-dirs-sys-next-dev:arm64 (0.1.1-1) ... 215s Selecting previously unselected package librust-dirs-next-dev:arm64. 215s Preparing to unpack .../341-librust-dirs-next-dev_2.0.0-1_arm64.deb ... 215s Unpacking librust-dirs-next-dev:arm64 (2.0.0-1) ... 215s Selecting previously unselected package librust-float-ord-dev:arm64. 215s Preparing to unpack .../342-librust-float-ord-dev_0.3.2-1_arm64.deb ... 215s Unpacking librust-float-ord-dev:arm64 (0.3.2-1) ... 215s Selecting previously unselected package librust-cmake-dev:arm64. 216s Preparing to unpack .../343-librust-cmake-dev_0.1.45-1_arm64.deb ... 216s Unpacking librust-cmake-dev:arm64 (0.1.45-1) ... 216s Selecting previously unselected package librust-freetype-sys-dev:arm64. 216s Preparing to unpack .../344-librust-freetype-sys-dev_0.13.1-1_arm64.deb ... 216s Unpacking librust-freetype-sys-dev:arm64 (0.13.1-1) ... 216s Selecting previously unselected package librust-freetype-dev:arm64. 216s Preparing to unpack .../345-librust-freetype-dev_0.7.0-4_arm64.deb ... 216s Unpacking librust-freetype-dev:arm64 (0.7.0-4) ... 216s Selecting previously unselected package librust-spin-dev:arm64. 216s Preparing to unpack .../346-librust-spin-dev_0.9.8-4_arm64.deb ... 216s Unpacking librust-spin-dev:arm64 (0.9.8-4) ... 216s Selecting previously unselected package librust-lazy-static-dev:arm64. 216s Preparing to unpack .../347-librust-lazy-static-dev_1.5.0-1_arm64.deb ... 216s Unpacking librust-lazy-static-dev:arm64 (1.5.0-1) ... 216s Selecting previously unselected package librust-pathfinder-simd-dev:arm64. 216s Preparing to unpack .../348-librust-pathfinder-simd-dev_0.5.2-1_arm64.deb ... 216s Unpacking librust-pathfinder-simd-dev:arm64 (0.5.2-1) ... 216s Selecting previously unselected package librust-pathfinder-geometry-dev:arm64. 216s Preparing to unpack .../349-librust-pathfinder-geometry-dev_0.5.1-1_arm64.deb ... 216s Unpacking librust-pathfinder-geometry-dev:arm64 (0.5.1-1) ... 216s Selecting previously unselected package librust-winapi-util-dev:arm64. 216s Preparing to unpack .../350-librust-winapi-util-dev_0.1.6-1_arm64.deb ... 216s Unpacking librust-winapi-util-dev:arm64 (0.1.6-1) ... 216s Selecting previously unselected package librust-same-file-dev:arm64. 217s Preparing to unpack .../351-librust-same-file-dev_1.0.6-1_arm64.deb ... 217s Unpacking librust-same-file-dev:arm64 (1.0.6-1) ... 217s Selecting previously unselected package librust-walkdir-dev:arm64. 217s Preparing to unpack .../352-librust-walkdir-dev_2.5.0-1_arm64.deb ... 217s Unpacking librust-walkdir-dev:arm64 (2.5.0-1) ... 217s Selecting previously unselected package librust-const-cstr-dev:arm64. 217s Preparing to unpack .../353-librust-const-cstr-dev_0.3.0-1_arm64.deb ... 217s Unpacking librust-const-cstr-dev:arm64 (0.3.0-1) ... 217s Selecting previously unselected package librust-libloading-dev:arm64. 217s Preparing to unpack .../354-librust-libloading-dev_0.8.5-1_arm64.deb ... 217s Unpacking librust-libloading-dev:arm64 (0.8.5-1) ... 217s Selecting previously unselected package librust-dlib-dev:arm64. 217s Preparing to unpack .../355-librust-dlib-dev_0.5.2-2_arm64.deb ... 217s Unpacking librust-dlib-dev:arm64 (0.5.2-2) ... 217s Selecting previously unselected package librust-yeslogic-fontconfig-sys-dev:arm64. 217s Preparing to unpack .../356-librust-yeslogic-fontconfig-sys-dev_3.0.1-1_arm64.deb ... 217s Unpacking librust-yeslogic-fontconfig-sys-dev:arm64 (3.0.1-1) ... 217s Selecting previously unselected package librust-font-kit-dev:arm64. 218s Preparing to unpack .../357-librust-font-kit-dev_0.11.0-2_arm64.deb ... 218s Unpacking librust-font-kit-dev:arm64 (0.11.0-2) ... 218s Selecting previously unselected package librust-color-quant-dev:arm64. 218s Preparing to unpack .../358-librust-color-quant-dev_1.1.0-1_arm64.deb ... 218s Unpacking librust-color-quant-dev:arm64 (1.1.0-1) ... 218s Selecting previously unselected package librust-weezl-dev:arm64. 218s Preparing to unpack .../359-librust-weezl-dev_0.1.5-1_arm64.deb ... 218s Unpacking librust-weezl-dev:arm64 (0.1.5-1) ... 218s Selecting previously unselected package librust-gif-dev:arm64. 218s Preparing to unpack .../360-librust-gif-dev_0.11.3-1_arm64.deb ... 218s Unpacking librust-gif-dev:arm64 (0.11.3-1) ... 218s Selecting previously unselected package librust-jpeg-decoder-dev:arm64. 218s Preparing to unpack .../361-librust-jpeg-decoder-dev_0.3.0-1_arm64.deb ... 218s Unpacking librust-jpeg-decoder-dev:arm64 (0.3.0-1) ... 218s Selecting previously unselected package librust-num-integer-dev:arm64. 218s Preparing to unpack .../362-librust-num-integer-dev_0.1.46-1_arm64.deb ... 218s Unpacking librust-num-integer-dev:arm64 (0.1.46-1) ... 218s Selecting previously unselected package librust-humantime-dev:arm64. 218s Preparing to unpack .../363-librust-humantime-dev_2.1.0-1_arm64.deb ... 218s Unpacking librust-humantime-dev:arm64 (2.1.0-1) ... 218s Selecting previously unselected package librust-termcolor-dev:arm64. 218s Preparing to unpack .../364-librust-termcolor-dev_1.4.1-1_arm64.deb ... 218s Unpacking librust-termcolor-dev:arm64 (1.4.1-1) ... 218s Selecting previously unselected package librust-env-logger-dev:arm64. 218s Preparing to unpack .../365-librust-env-logger-dev_0.10.2-2_arm64.deb ... 218s Unpacking librust-env-logger-dev:arm64 (0.10.2-2) ... 218s Selecting previously unselected package librust-quickcheck-dev:arm64. 218s Preparing to unpack .../366-librust-quickcheck-dev_1.0.3-3_arm64.deb ... 218s Unpacking librust-quickcheck-dev:arm64 (1.0.3-3) ... 218s Selecting previously unselected package librust-num-bigint-dev:arm64. 218s Preparing to unpack .../367-librust-num-bigint-dev_0.4.6-1_arm64.deb ... 218s Unpacking librust-num-bigint-dev:arm64 (0.4.6-1) ... 218s Selecting previously unselected package librust-num-rational-dev:arm64. 218s Preparing to unpack .../368-librust-num-rational-dev_0.4.2-1_arm64.deb ... 218s Unpacking librust-num-rational-dev:arm64 (0.4.2-1) ... 218s Selecting previously unselected package librust-png-dev:arm64. 219s Preparing to unpack .../369-librust-png-dev_0.17.7-3_arm64.deb ... 219s Unpacking librust-png-dev:arm64 (0.17.7-3) ... 219s Selecting previously unselected package librust-qoi-dev:arm64. 219s Preparing to unpack .../370-librust-qoi-dev_0.4.1-2_arm64.deb ... 219s Unpacking librust-qoi-dev:arm64 (0.4.1-2) ... 219s Selecting previously unselected package librust-tiff-dev:arm64. 219s Preparing to unpack .../371-librust-tiff-dev_0.9.0-1_arm64.deb ... 219s Unpacking librust-tiff-dev:arm64 (0.9.0-1) ... 219s Selecting previously unselected package libsharpyuv0:arm64. 219s Preparing to unpack .../372-libsharpyuv0_1.4.0-0.1_arm64.deb ... 219s Unpacking libsharpyuv0:arm64 (1.4.0-0.1) ... 219s Selecting previously unselected package libwebp7:arm64. 219s Preparing to unpack .../373-libwebp7_1.4.0-0.1_arm64.deb ... 219s Unpacking libwebp7:arm64 (1.4.0-0.1) ... 219s Selecting previously unselected package libwebpdemux2:arm64. 219s Preparing to unpack .../374-libwebpdemux2_1.4.0-0.1_arm64.deb ... 219s Unpacking libwebpdemux2:arm64 (1.4.0-0.1) ... 219s Selecting previously unselected package libwebpmux3:arm64. 219s Preparing to unpack .../375-libwebpmux3_1.4.0-0.1_arm64.deb ... 219s Unpacking libwebpmux3:arm64 (1.4.0-0.1) ... 219s Selecting previously unselected package libwebpdecoder3:arm64. 220s Preparing to unpack .../376-libwebpdecoder3_1.4.0-0.1_arm64.deb ... 220s Unpacking libwebpdecoder3:arm64 (1.4.0-0.1) ... 220s Selecting previously unselected package libsharpyuv-dev:arm64. 220s Preparing to unpack .../377-libsharpyuv-dev_1.4.0-0.1_arm64.deb ... 220s Unpacking libsharpyuv-dev:arm64 (1.4.0-0.1) ... 220s Selecting previously unselected package libwebp-dev:arm64. 220s Preparing to unpack .../378-libwebp-dev_1.4.0-0.1_arm64.deb ... 220s Unpacking libwebp-dev:arm64 (1.4.0-0.1) ... 220s Selecting previously unselected package librust-libwebp-sys-dev:arm64. 220s Preparing to unpack .../379-librust-libwebp-sys-dev_0.9.5-1build1_arm64.deb ... 220s Unpacking librust-libwebp-sys-dev:arm64 (0.9.5-1build1) ... 220s Selecting previously unselected package librust-webp-dev:arm64. 220s Preparing to unpack .../380-librust-webp-dev_0.2.6-1_arm64.deb ... 220s Unpacking librust-webp-dev:arm64 (0.2.6-1) ... 220s Selecting previously unselected package librust-image-dev:arm64. 220s Preparing to unpack .../381-librust-image-dev_0.24.7-2_arm64.deb ... 220s Unpacking librust-image-dev:arm64 (0.24.7-2) ... 220s Selecting previously unselected package librust-plotters-backend-dev:arm64. 220s Preparing to unpack .../382-librust-plotters-backend-dev_0.3.7-1_arm64.deb ... 220s Unpacking librust-plotters-backend-dev:arm64 (0.3.7-1) ... 220s Selecting previously unselected package librust-plotters-bitmap-dev:arm64. 220s Preparing to unpack .../383-librust-plotters-bitmap-dev_0.3.3-3_arm64.deb ... 220s Unpacking librust-plotters-bitmap-dev:arm64 (0.3.3-3) ... 220s Selecting previously unselected package librust-plotters-svg-dev:arm64. 220s Preparing to unpack .../384-librust-plotters-svg-dev_0.3.5-1_arm64.deb ... 220s Unpacking librust-plotters-svg-dev:arm64 (0.3.5-1) ... 220s Selecting previously unselected package librust-web-sys-dev:arm64. 221s Preparing to unpack .../385-librust-web-sys-dev_0.3.64-2_arm64.deb ... 221s Unpacking librust-web-sys-dev:arm64 (0.3.64-2) ... 221s Selecting previously unselected package librust-plotters-dev:arm64. 221s Preparing to unpack .../386-librust-plotters-dev_0.3.5-4_arm64.deb ... 221s Unpacking librust-plotters-dev:arm64 (0.3.5-4) ... 221s Selecting previously unselected package librust-smol-dev. 221s Preparing to unpack .../387-librust-smol-dev_2.0.2-1_all.deb ... 221s Unpacking librust-smol-dev (2.0.2-1) ... 221s Selecting previously unselected package librust-tinytemplate-dev:arm64. 221s Preparing to unpack .../388-librust-tinytemplate-dev_1.2.1-1_arm64.deb ... 221s Unpacking librust-tinytemplate-dev:arm64 (1.2.1-1) ... 221s Selecting previously unselected package librust-criterion-dev. 222s Preparing to unpack .../389-librust-criterion-dev_0.5.1-6_all.deb ... 222s Unpacking librust-criterion-dev (0.5.1-6) ... 222s Selecting previously unselected package librust-phf-generator-dev:arm64. 222s Preparing to unpack .../390-librust-phf-generator-dev_0.11.2-2_arm64.deb ... 222s Unpacking librust-phf-generator-dev:arm64 (0.11.2-2) ... 222s Selecting previously unselected package librust-phf-codegen-dev:arm64. 222s Preparing to unpack .../391-librust-phf-codegen-dev_0.11.2-1_arm64.deb ... 222s Unpacking librust-phf-codegen-dev:arm64 (0.11.2-1) ... 222s Selecting previously unselected package librust-chrono-tz-build-dev:arm64. 222s Preparing to unpack .../392-librust-chrono-tz-build-dev_0.2.1-1_arm64.deb ... 222s Unpacking librust-chrono-tz-build-dev:arm64 (0.2.1-1) ... 222s Selecting previously unselected package librust-chrono-tz-dev:arm64. 222s Preparing to unpack .../393-librust-chrono-tz-dev_0.8.6-2_arm64.deb ... 222s Unpacking librust-chrono-tz-dev:arm64 (0.8.6-2) ... 222s Selecting previously unselected package librust-ctor-dev:arm64. 222s Preparing to unpack .../394-librust-ctor-dev_0.1.26-1_arm64.deb ... 222s Unpacking librust-ctor-dev:arm64 (0.1.26-1) ... 222s Selecting previously unselected package librust-powerfmt-macros-dev:arm64. 222s Preparing to unpack .../395-librust-powerfmt-macros-dev_0.1.0-1_arm64.deb ... 222s Unpacking librust-powerfmt-macros-dev:arm64 (0.1.0-1) ... 222s Selecting previously unselected package librust-powerfmt-dev:arm64. 222s Preparing to unpack .../396-librust-powerfmt-dev_0.2.0-1_arm64.deb ... 222s Unpacking librust-powerfmt-dev:arm64 (0.2.0-1) ... 222s Selecting previously unselected package librust-deranged-dev:arm64. 222s Preparing to unpack .../397-librust-deranged-dev_0.3.11-1_arm64.deb ... 222s Unpacking librust-deranged-dev:arm64 (0.3.11-1) ... 222s Selecting previously unselected package librust-eui48-dev:arm64. 222s Preparing to unpack .../398-librust-eui48-dev_1.1.0-2_arm64.deb ... 222s Unpacking librust-eui48-dev:arm64 (1.1.0-2) ... 223s Selecting previously unselected package librust-indenter-dev:arm64. 223s Preparing to unpack .../399-librust-indenter-dev_0.3.3-1_arm64.deb ... 223s Unpacking librust-indenter-dev:arm64 (0.3.3-1) ... 223s Selecting previously unselected package librust-eyre-dev:arm64. 223s Preparing to unpack .../400-librust-eyre-dev_0.6.12-1_arm64.deb ... 223s Unpacking librust-eyre-dev:arm64 (0.6.12-1) ... 223s Selecting previously unselected package librust-eyre+default-dev:arm64. 223s Preparing to unpack .../401-librust-eyre+default-dev_0.6.12-1_arm64.deb ... 223s Unpacking librust-eyre+default-dev:arm64 (0.6.12-1) ... 223s Selecting previously unselected package librust-fancy-regex-dev:arm64. 223s Preparing to unpack .../402-librust-fancy-regex-dev_0.11.0-2_arm64.deb ... 223s Unpacking librust-fancy-regex-dev:arm64 (0.11.0-2) ... 223s Selecting previously unselected package librust-fnv-dev:arm64. 223s Preparing to unpack .../403-librust-fnv-dev_1.0.7-1_arm64.deb ... 223s Unpacking librust-fnv-dev:arm64 (1.0.7-1) ... 223s Selecting previously unselected package librust-geo-types-dev:arm64. 223s Preparing to unpack .../404-librust-geo-types-dev_0.7.11-2_arm64.deb ... 223s Unpacking librust-geo-types-dev:arm64 (0.7.11-2) ... 223s Selecting previously unselected package librust-ghost-dev:arm64. 223s Preparing to unpack .../405-librust-ghost-dev_0.1.5-1_arm64.deb ... 223s Unpacking librust-ghost-dev:arm64 (0.1.5-1) ... 223s Selecting previously unselected package librust-hmac-dev:arm64. 223s Preparing to unpack .../406-librust-hmac-dev_0.12.1-1_arm64.deb ... 223s Unpacking librust-hmac-dev:arm64 (0.12.1-1) ... 223s Selecting previously unselected package librust-indoc-dev:arm64. 223s Preparing to unpack .../407-librust-indoc-dev_2.0.5-1_arm64.deb ... 223s Unpacking librust-indoc-dev:arm64 (2.0.5-1) ... 223s Selecting previously unselected package librust-inventory-dev:arm64. 223s Preparing to unpack .../408-librust-inventory-dev_0.3.2-1_arm64.deb ... 223s Unpacking librust-inventory-dev:arm64 (0.3.2-1) ... 223s Selecting previously unselected package librust-memoffset-dev:arm64. 224s Preparing to unpack .../409-librust-memoffset-dev_0.8.0-1_arm64.deb ... 224s Unpacking librust-memoffset-dev:arm64 (0.8.0-1) ... 224s Selecting previously unselected package librust-num-conv-dev:arm64. 224s Preparing to unpack .../410-librust-num-conv-dev_0.1.0-1_arm64.deb ... 224s Unpacking librust-num-conv-dev:arm64 (0.1.0-1) ... 224s Selecting previously unselected package librust-num-threads-dev:arm64. 224s Preparing to unpack .../411-librust-num-threads-dev_0.1.7-1_arm64.deb ... 224s Unpacking librust-num-threads-dev:arm64 (0.1.7-1) ... 224s Selecting previously unselected package librust-postgres-derive-dev:arm64. 224s Preparing to unpack .../412-librust-postgres-derive-dev_0.4.5-1_arm64.deb ... 224s Unpacking librust-postgres-derive-dev:arm64 (0.4.5-1) ... 224s Selecting previously unselected package librust-sha2-asm-dev:arm64. 224s Preparing to unpack .../413-librust-sha2-asm-dev_0.6.2-2_arm64.deb ... 224s Unpacking librust-sha2-asm-dev:arm64 (0.6.2-2) ... 224s Selecting previously unselected package librust-sha2-dev:arm64. 224s Preparing to unpack .../414-librust-sha2-dev_0.10.8-1_arm64.deb ... 224s Unpacking librust-sha2-dev:arm64 (0.10.8-1) ... 224s Selecting previously unselected package librust-unicode-bidi-dev:arm64. 224s Preparing to unpack .../415-librust-unicode-bidi-dev_0.3.13-1_arm64.deb ... 224s Unpacking librust-unicode-bidi-dev:arm64 (0.3.13-1) ... 224s Selecting previously unselected package librust-unicode-normalization-dev:arm64. 224s Preparing to unpack .../416-librust-unicode-normalization-dev_0.1.22-1_arm64.deb ... 224s Unpacking librust-unicode-normalization-dev:arm64 (0.1.22-1) ... 224s Selecting previously unselected package librust-stringprep-dev:arm64. 224s Preparing to unpack .../417-librust-stringprep-dev_0.1.2-1_arm64.deb ... 224s Unpacking librust-stringprep-dev:arm64 (0.1.2-1) ... 224s Selecting previously unselected package librust-postgres-protocol-dev:arm64. 225s Preparing to unpack .../418-librust-postgres-protocol-dev_0.6.6-2_arm64.deb ... 225s Unpacking librust-postgres-protocol-dev:arm64 (0.6.6-2) ... 225s Selecting previously unselected package librust-time-core-dev:arm64. 225s Preparing to unpack .../419-librust-time-core-dev_0.1.2-1_arm64.deb ... 225s Unpacking librust-time-core-dev:arm64 (0.1.2-1) ... 225s Selecting previously unselected package librust-time-macros-dev:arm64. 225s Preparing to unpack .../420-librust-time-macros-dev_0.2.16-1_arm64.deb ... 225s Unpacking librust-time-macros-dev:arm64 (0.2.16-1) ... 225s Selecting previously unselected package librust-time-dev:arm64. 225s Preparing to unpack .../421-librust-time-dev_0.3.36-2_arm64.deb ... 225s Unpacking librust-time-dev:arm64 (0.3.36-2) ... 225s Selecting previously unselected package librust-postgres-types-dev:arm64. 225s Preparing to unpack .../422-librust-postgres-types-dev_0.2.6-2_arm64.deb ... 225s Unpacking librust-postgres-types-dev:arm64 (0.2.6-2) ... 225s Selecting previously unselected package librust-rand-xorshift-dev:arm64. 225s Preparing to unpack .../423-librust-rand-xorshift-dev_0.3.0-2_arm64.deb ... 225s Unpacking librust-rand-xorshift-dev:arm64 (0.3.0-2) ... 225s Selecting previously unselected package librust-quick-error-dev:arm64. 225s Preparing to unpack .../424-librust-quick-error-dev_2.0.1-1_arm64.deb ... 225s Unpacking librust-quick-error-dev:arm64 (2.0.1-1) ... 225s Selecting previously unselected package librust-tempfile-dev:arm64. 225s Preparing to unpack .../425-librust-tempfile-dev_3.10.1-1_arm64.deb ... 225s Unpacking librust-tempfile-dev:arm64 (3.10.1-1) ... 225s Selecting previously unselected package librust-rusty-fork-dev:arm64. 225s Preparing to unpack .../426-librust-rusty-fork-dev_0.3.0-1_arm64.deb ... 225s Unpacking librust-rusty-fork-dev:arm64 (0.3.0-1) ... 225s Selecting previously unselected package librust-wait-timeout-dev:arm64. 225s Preparing to unpack .../427-librust-wait-timeout-dev_0.2.0-1_arm64.deb ... 225s Unpacking librust-wait-timeout-dev:arm64 (0.2.0-1) ... 225s Selecting previously unselected package librust-rusty-fork+wait-timeout-dev:arm64. 226s Preparing to unpack .../428-librust-rusty-fork+wait-timeout-dev_0.3.0-1_arm64.deb ... 226s Unpacking librust-rusty-fork+wait-timeout-dev:arm64 (0.3.0-1) ... 226s Selecting previously unselected package librust-unarray-dev:arm64. 226s Preparing to unpack .../429-librust-unarray-dev_0.1.4-1_arm64.deb ... 226s Unpacking librust-unarray-dev:arm64 (0.1.4-1) ... 226s Selecting previously unselected package librust-proptest-dev:arm64. 226s Preparing to unpack .../430-librust-proptest-dev_1.5.0-2_arm64.deb ... 226s Unpacking librust-proptest-dev:arm64 (1.5.0-2) ... 226s Selecting previously unselected package llvm-19-runtime. 226s Preparing to unpack .../431-llvm-19-runtime_1%3a19.1.2-1ubuntu1_arm64.deb ... 226s Unpacking llvm-19-runtime (1:19.1.2-1ubuntu1) ... 226s Selecting previously unselected package llvm-runtime:arm64. 226s Preparing to unpack .../432-llvm-runtime_1%3a19.0-60~exp1_arm64.deb ... 226s Unpacking llvm-runtime:arm64 (1:19.0-60~exp1) ... 226s Selecting previously unselected package llvm-19-linker-tools. 226s Preparing to unpack .../433-llvm-19-linker-tools_1%3a19.1.2-1ubuntu1_arm64.deb ... 226s Unpacking llvm-19-linker-tools (1:19.1.2-1ubuntu1) ... 226s Selecting previously unselected package libpfm4:arm64. 226s Preparing to unpack .../434-libpfm4_4.13.0+git83-g91970fe-1_arm64.deb ... 226s Unpacking libpfm4:arm64 (4.13.0+git83-g91970fe-1) ... 226s Selecting previously unselected package llvm-19. 226s Preparing to unpack .../435-llvm-19_1%3a19.1.2-1ubuntu1_arm64.deb ... 226s Unpacking llvm-19 (1:19.1.2-1ubuntu1) ... 227s Selecting previously unselected package llvm. 227s Preparing to unpack .../436-llvm_1%3a19.0-60~exp1_arm64.deb ... 227s Unpacking llvm (1:19.0-60~exp1) ... 227s Selecting previously unselected package binutils-mingw-w64-x86-64. 227s Preparing to unpack .../437-binutils-mingw-w64-x86-64_2.43.1-4ubuntu1+12_arm64.deb ... 227s Unpacking binutils-mingw-w64-x86-64 (2.43.1-4ubuntu1+12) ... 227s Selecting previously unselected package binutils-mingw-w64-i686. 228s Preparing to unpack .../438-binutils-mingw-w64-i686_2.43.1-4ubuntu1+12_arm64.deb ... 228s Unpacking binutils-mingw-w64-i686 (2.43.1-4ubuntu1+12) ... 228s Selecting previously unselected package librust-python3-dll-a-dev:arm64. 228s Preparing to unpack .../439-librust-python3-dll-a-dev_0.2.10-1_arm64.deb ... 228s Unpacking librust-python3-dll-a-dev:arm64 (0.2.10-1) ... 228s Selecting previously unselected package librust-target-lexicon-dev:arm64. 228s Preparing to unpack .../440-librust-target-lexicon-dev_0.12.14-1_arm64.deb ... 228s Unpacking librust-target-lexicon-dev:arm64 (0.12.14-1) ... 228s Selecting previously unselected package librust-pyo3-build-config-dev:arm64. 228s Preparing to unpack .../441-librust-pyo3-build-config-dev_0.22.6-1_arm64.deb ... 228s Unpacking librust-pyo3-build-config-dev:arm64 (0.22.6-1) ... 228s Selecting previously unselected package python3.12-dev. 228s Preparing to unpack .../442-python3.12-dev_3.12.7-3_arm64.deb ... 228s Unpacking python3.12-dev (3.12.7-3) ... 228s Selecting previously unselected package librust-pyo3-ffi-dev:arm64. 228s Preparing to unpack .../443-librust-pyo3-ffi-dev_0.22.6-1build1_arm64.deb ... 228s Unpacking librust-pyo3-ffi-dev:arm64 (0.22.6-1build1) ... 228s Selecting previously unselected package librust-pyo3-macros-backend-dev:arm64. 228s Preparing to unpack .../444-librust-pyo3-macros-backend-dev_0.22.6-1_arm64.deb ... 228s Unpacking librust-pyo3-macros-backend-dev:arm64 (0.22.6-1) ... 229s Selecting previously unselected package librust-pyo3-macros-dev:arm64. 229s Preparing to unpack .../445-librust-pyo3-macros-dev_0.22.6-1_arm64.deb ... 229s Unpacking librust-pyo3-macros-dev:arm64 (0.22.6-1) ... 229s Selecting previously unselected package librust-rust-decimal-dev:arm64. 229s Preparing to unpack .../446-librust-rust-decimal-dev_1.36.0-1_arm64.deb ... 229s Unpacking librust-rust-decimal-dev:arm64 (1.36.0-1) ... 229s Selecting previously unselected package librust-unindent-dev:arm64. 229s Preparing to unpack .../447-librust-unindent-dev_0.2.3-1_arm64.deb ... 229s Unpacking librust-unindent-dev:arm64 (0.2.3-1) ... 229s Selecting previously unselected package librust-pyo3-dev:arm64. 229s Preparing to unpack .../448-librust-pyo3-dev_0.22.6-1_arm64.deb ... 229s Unpacking librust-pyo3-dev:arm64 (0.22.6-1) ... 229s Selecting previously unselected package librust-rustc-hash-dev:arm64. 229s Preparing to unpack .../449-librust-rustc-hash-dev_1.1.0-1_arm64.deb ... 229s Unpacking librust-rustc-hash-dev:arm64 (1.1.0-1) ... 229s Selecting previously unselected package pybuild-plugin-autopkgtest. 229s Preparing to unpack .../450-pybuild-plugin-autopkgtest_6.20241024_all.deb ... 229s Unpacking pybuild-plugin-autopkgtest (6.20241024) ... 229s Selecting previously unselected package python3-packaging. 229s Preparing to unpack .../451-python3-packaging_24.2-1_all.deb ... 229s Unpacking python3-packaging (24.2-1) ... 229s Selecting previously unselected package python3-pyproject-hooks. 229s Preparing to unpack .../452-python3-pyproject-hooks_1.2.0-1_all.deb ... 229s Unpacking python3-pyproject-hooks (1.2.0-1) ... 229s Selecting previously unselected package python3-toml. 229s Preparing to unpack .../453-python3-toml_0.10.2-1_all.deb ... 229s Unpacking python3-toml (0.10.2-1) ... 229s Selecting previously unselected package python3-wheel. 230s Preparing to unpack .../454-python3-wheel_0.45.0-1_all.deb ... 230s Unpacking python3-wheel (0.45.0-1) ... 230s Selecting previously unselected package python3-build. 230s Preparing to unpack .../455-python3-build_1.2.2-1_all.deb ... 230s Unpacking python3-build (1.2.2-1) ... 230s Selecting previously unselected package python3-installer. 230s Preparing to unpack .../456-python3-installer_0.7.0+dfsg1-3_all.deb ... 230s Unpacking python3-installer (0.7.0+dfsg1-3) ... 230s Selecting previously unselected package pybuild-plugin-pyproject. 230s Preparing to unpack .../457-pybuild-plugin-pyproject_6.20241024_all.deb ... 230s Unpacking pybuild-plugin-pyproject (6.20241024) ... 230s Selecting previously unselected package python3.13. 230s Preparing to unpack .../458-python3.13_3.13.0-2_arm64.deb ... 230s Unpacking python3.13 (3.13.0-2) ... 230s Selecting previously unselected package python3-all. 230s Preparing to unpack .../459-python3-all_3.12.7-1_arm64.deb ... 230s Unpacking python3-all (3.12.7-1) ... 230s Selecting previously unselected package python3-dateutil. 230s Preparing to unpack .../460-python3-dateutil_2.9.0-3_all.deb ... 230s Unpacking python3-dateutil (2.9.0-3) ... 230s Selecting previously unselected package python3-sortedcontainers. 230s Preparing to unpack .../461-python3-sortedcontainers_2.4.0-2_all.deb ... 230s Unpacking python3-sortedcontainers (2.4.0-2) ... 231s Selecting previously unselected package python3-hypothesis. 231s Preparing to unpack .../462-python3-hypothesis_6.119.3-1_all.deb ... 231s Unpacking python3-hypothesis (6.119.3-1) ... 231s Selecting previously unselected package python3-iniconfig. 231s Preparing to unpack .../463-python3-iniconfig_1.1.1-2_all.deb ... 231s Unpacking python3-iniconfig (1.1.1-2) ... 231s Selecting previously unselected package python3-pluggy. 231s Preparing to unpack .../464-python3-pluggy_1.5.0-1_all.deb ... 231s Unpacking python3-pluggy (1.5.0-1) ... 231s Selecting previously unselected package python3-pytest. 231s Preparing to unpack .../465-python3-pytest_8.3.3-1_all.deb ... 231s Unpacking python3-pytest (8.3.3-1) ... 231s Selecting previously unselected package python3-regex. 231s Preparing to unpack .../466-python3-regex_0.1.20240724-1build1_arm64.deb ... 231s Unpacking python3-regex (0.1.20240724-1build1) ... 231s Selecting previously unselected package python3-semantic-version. 231s Preparing to unpack .../467-python3-semantic-version_2.10.0-2_all.deb ... 231s Unpacking python3-semantic-version (2.10.0-2) ... 231s Selecting previously unselected package rustc. 231s Preparing to unpack .../468-rustc_1.80.1ubuntu2_arm64.deb ... 231s Unpacking rustc (1.80.1ubuntu2) ... 231s Selecting previously unselected package cargo. 231s Preparing to unpack .../469-cargo_1.80.1ubuntu2_arm64.deb ... 231s Unpacking cargo (1.80.1ubuntu2) ... 231s Selecting previously unselected package python3-setuptools-rust. 231s Preparing to unpack .../470-python3-setuptools-rust_1.9.0+dfsg-2_all.deb ... 231s Unpacking python3-setuptools-rust (1.9.0+dfsg-2) ... 231s Selecting previously unselected package python3-tiktoken. 231s Preparing to unpack .../471-python3-tiktoken_0.8.0-1build1_arm64.deb ... 231s Unpacking python3-tiktoken (0.8.0-1build1) ... 231s Selecting previously unselected package autopkgtest-satdep. 231s Preparing to unpack .../472-1-autopkgtest-satdep.deb ... 231s Unpacking autopkgtest-satdep (0) ... 232s Setting up dh-python (6.20241024) ... 232s Setting up librust-ciborium-io-dev:arm64 (0.2.2-1) ... 232s Setting up librust-crossbeam-utils-dev:arm64 (0.8.19-1) ... 232s Setting up librust-parking-dev:arm64 (2.2.0-1) ... 232s Setting up librust-ppv-lite86-dev:arm64 (0.2.16-1) ... 232s Setting up python3-iniconfig (1.1.1-2) ... 232s Setting up libsharpyuv0:arm64 (1.4.0-0.1) ... 232s Setting up librust-pin-utils-dev:arm64 (0.1.0-1) ... 232s Setting up librust-fnv-dev:arm64 (1.0.7-1) ... 232s Setting up librust-libc-dev:arm64 (0.2.155-1) ... 232s Setting up librust-unindent-dev:arm64 (0.2.3-1) ... 232s Setting up librust-quick-error-dev:arm64 (2.0.1-1) ... 232s Setting up librust-is-terminal-dev:arm64 (0.4.13-1) ... 232s Setting up librust-traitobject-dev:arm64 (0.1.0-1) ... 232s Setting up librust-either-dev:arm64 (1.13.0-1) ... 232s Setting up binutils-mingw-w64-x86-64 (2.43.1-4ubuntu1+12) ... 232s Setting up librust-adler-dev:arm64 (1.0.2-2) ... 232s Setting up librust-version-check-dev:arm64 (0.9.5-1) ... 232s Setting up librust-base64-dev:arm64 (0.21.7-1) ... 232s Setting up librust-indoc-dev:arm64 (2.0.5-1) ... 232s Setting up librust-anstyle-dev:arm64 (1.0.8-1) ... 232s Setting up librust-winapi-i686-pc-windows-gnu-dev:arm64 (0.4.0-1) ... 232s Setting up librust-futures-task-dev:arm64 (0.3.30-1) ... 232s Setting up librust-rustc-hash-dev:arm64 (1.1.0-1) ... 232s Setting up librust-wasm-bindgen-shared-dev:arm64 (0.2.87-1) ... 232s Setting up libarchive-zip-perl (1.68-1) ... 232s Setting up librust-colorchoice-dev:arm64 (1.0.0-1) ... 232s Setting up librust-fastrand-dev:arm64 (2.1.1-1) ... 232s Setting up librust-socket2-dev:arm64 (0.5.7-1) ... 232s Setting up libdebhelper-perl (13.20ubuntu1) ... 232s Setting up librust-unsafe-any-dev:arm64 (0.4.2-2) ... 232s Setting up librust-tinyvec-macros-dev:arm64 (0.1.0-1) ... 232s Setting up librust-num-cpus-dev:arm64 (1.16.0-1) ... 232s Setting up librust-libm-dev:arm64 (0.2.8-1) ... 232s Setting up librust-strsim-dev:arm64 (0.11.1-1) ... 232s Setting up libwebpdecoder3:arm64 (1.4.0-0.1) ... 232s Setting up m4 (1.4.19-4build1) ... 232s Setting up librust-rustc-demangle-dev:arm64 (0.1.21-1) ... 232s Setting up librust-cpufeatures-dev:arm64 (0.2.11-1) ... 232s Setting up librust-const-cstr-dev:arm64 (0.3.0-1) ... 232s Setting up librust-fallible-iterator-dev:arm64 (0.3.0-2) ... 232s Setting up librust-ryu-dev:arm64 (1.0.15-1) ... 232s Setting up python3-sortedcontainers (2.4.0-2) ... 233s Setting up librust-humantime-dev:arm64 (2.1.0-1) ... 233s Setting up librust-anstyle-query-dev:arm64 (1.0.0-1) ... 233s Setting up librust-cast-dev:arm64 (0.3.0-1) ... 233s Setting up libgomp1:arm64 (14.2.0-8ubuntu1) ... 233s Setting up librust-subtle-dev:arm64 (2.6.1-1) ... 233s Setting up librust-simdutf8-dev:arm64 (0.1.4-4) ... 233s Setting up librust-atomic-waker-dev:arm64 (1.1.2-1) ... 233s Setting up librust-miniz-oxide-dev:arm64 (0.7.1-1) ... 233s Setting up librust-pin-project-lite-dev:arm64 (0.2.13-1) ... 233s Setting up python3-wheel (0.45.0-1) ... 233s Setting up librust-unicode-segmentation-dev:arm64 (1.11.0-1) ... 233s Setting up librust-typemap-dev:arm64 (0.3.3-2) ... 233s Setting up libpython3.13-minimal:arm64 (3.13.0-2) ... 233s Setting up librust-compiler-builtins-dev:arm64 (0.1.101-1) ... 233s Setting up librust-weezl-dev:arm64 (0.1.5-1) ... 233s Setting up librust-utf8parse-dev:arm64 (0.2.1-1) ... 233s Setting up librust-signal-hook-registry-dev:arm64 (1.4.0-1) ... 233s Setting up librust-crossbeam-epoch-dev:arm64 (0.9.18-1) ... 233s Setting up autotools-dev (20220109.1) ... 233s Setting up librust-tap-dev:arm64 (1.0.1-1) ... 233s Setting up librust-errno-dev:arm64 (0.3.8-1) ... 233s Setting up python3-packaging (24.2-1) ... 234s Setting up librust-array-init-dev:arm64 (2.0.1-1) ... 234s Setting up libpkgconf3:arm64 (1.8.1-4) ... 234s Setting up libpfm4:arm64 (4.13.0+git83-g91970fe-1) ... 234s Setting up librust-oorandom-dev:arm64 (11.1.3-1) ... 234s Setting up libexpat1-dev:arm64 (2.6.4-1) ... 234s Setting up python3-pyproject-hooks (1.2.0-1) ... 234s Setting up librust-rustc-std-workspace-core-dev:arm64 (1.0.0-1) ... 234s Setting up librust-funty-dev:arm64 (2.0.0-1) ... 234s Setting up librust-futures-io-dev:arm64 (0.3.31-1) ... 234s Setting up librust-typenum-dev:arm64 (1.17.0-2) ... 234s Setting up uuid-dev:arm64 (2.40.2-1ubuntu1) ... 234s Setting up librust-core-maths-dev:arm64 (0.1.0-2) ... 234s Setting up librust-stable-deref-trait-dev:arm64 (1.2.0-1) ... 234s Setting up librust-critical-section-dev:arm64 (1.1.3-1) ... 234s Setting up librust-scopeguard-dev:arm64 (1.2.0-1) ... 234s Setting up librust-iana-time-zone-dev:arm64 (0.1.60-1) ... 234s Setting up fonts-dejavu-mono (2.37-8) ... 234s Setting up libmpc3:arm64 (1.3.1-1build2) ... 234s Setting up librust-rand-core-dev:arm64 (0.6.4-2) ... 234s Setting up python3-semantic-version (2.10.0-2) ... 234s Setting up librust-jobserver-dev:arm64 (0.1.32-1) ... 234s Setting up autopoint (0.22.5-2) ... 234s Setting up libjsoncpp25:arm64 (1.9.5-6build1) ... 234s Setting up fonts-dejavu-core (2.37-8) ... 234s Setting up librust-seahash-dev:arm64 (4.1.0-1) ... 234s Setting up pkgconf-bin (1.8.1-4) ... 235s Setting up librust-ab-glyph-rasterizer-dev:arm64 (0.1.7-1) ... 235s Setting up binutils-mingw-w64-i686 (2.43.1-4ubuntu1+12) ... 235s Setting up librust-time-core-dev:arm64 (0.1.2-1) ... 235s Setting up python3-regex (0.1.20240724-1build1) ... 235s Setting up librust-crunchy-dev:arm64 (0.2.2-1) ... 235s Setting up python3-toml (0.10.2-1) ... 235s Setting up librust-unicase-dev:arm64 (2.7.0-1) ... 235s Setting up librust-unicode-width-dev:arm64 (0.1.14-1) ... 235s Setting up python3-installer (0.7.0+dfsg1-3) ... 236s Setting up autoconf (2.72-3) ... 236s Setting up python3-pluggy (1.5.0-1) ... 236s Setting up libwebp7:arm64 (1.4.0-0.1) ... 236s Setting up libubsan1:arm64 (14.2.0-8ubuntu1) ... 236s Setting up zlib1g-dev:arm64 (1:1.3.dfsg+really1.3.1-1ubuntu1) ... 236s Setting up librust-unicode-ident-dev:arm64 (1.0.13-1) ... 236s Setting up librust-equivalent-dev:arm64 (1.0.1-1) ... 236s Setting up dwz (0.15-1build6) ... 236s Setting up librust-bitflags-1-dev:arm64 (1.3.2-5) ... 236s Setting up librust-uncased-dev:arm64 (0.9.6-2) ... 236s Setting up librust-slog-dev:arm64 (2.7.0-1) ... 236s Setting up python3-tiktoken (0.8.0-1build1) ... 237s Setting up librust-pure-rust-locales-dev:arm64 (0.8.1-1) ... 237s Setting up libhwasan0:arm64 (14.2.0-8ubuntu1) ... 237s Setting up librhash0:arm64 (1.4.3-3build1) ... 237s Setting up libasan8:arm64 (14.2.0-8ubuntu1) ... 237s Setting up librust-wait-timeout-dev:arm64 (0.2.0-1) ... 237s Setting up librust-ttf-parser-dev:arm64 (0.24.1-1) ... 237s Setting up librust-cfg-if-dev:arm64 (1.0.0-1) ... 237s Setting up debugedit (1:5.1-1) ... 237s Setting up librust-color-quant-dev:arm64 (1.1.0-1) ... 237s Setting up python3.13-minimal (3.13.0-2) ... 238s Setting up python3-dateutil (2.9.0-3) ... 238s Setting up librust-blobby-dev:arm64 (0.3.1-1) ... 238s Setting up cmake-data (3.30.3-1) ... 238s Setting up llvm-19-linker-tools (1:19.1.2-1ubuntu1) ... 238s Setting up librust-byteorder-dev:arm64 (1.5.0-1) ... 238s Setting up libtsan2:arm64 (14.2.0-8ubuntu1) ... 238s Setting up librust-static-assertions-dev:arm64 (1.1.0-1) ... 238s Setting up librust-compiler-builtins+core-dev:arm64 (0.1.101-1) ... 238s Setting up librust-float-ord-dev:arm64 (0.3.2-1) ... 238s Setting up librust-autocfg-dev:arm64 (1.1.0-1) ... 238s Setting up libisl23:arm64 (0.27-1) ... 238s Setting up librust-time-macros-dev:arm64 (0.2.16-1) ... 238s Setting up llvm-19-runtime (1:19.1.2-1ubuntu1) ... 238s Setting up librust-futures-sink-dev:arm64 (0.3.31-1) ... 238s Setting up python3-build (1.2.2-1) ... 239s Setting up libsharpyuv-dev:arm64 (1.4.0-0.1) ... 239s Setting up librust-cfg-if-0.1-dev:arm64 (0.1.10-2) ... 239s Setting up librust-tinyvec-dev:arm64 (1.6.0-2) ... 239s Setting up libwebpmux3:arm64 (1.4.0-0.1) ... 239s Setting up librust-plotters-backend-dev:arm64 (0.3.7-1) ... 239s Setting up librust-shlex-dev:arm64 (1.3.0-1) ... 239s Setting up libpython3.13-stdlib:arm64 (3.13.0-2) ... 239s Setting up librust-indenter-dev:arm64 (0.3.3-1) ... 239s Setting up librust-cpp-demangle-dev:arm64 (0.4.0-1) ... 239s Setting up librust-winapi-x86-64-pc-windows-gnu-dev:arm64 (0.4.0-1) ... 239s Setting up libcc1-0:arm64 (14.2.0-8ubuntu1) ... 239s Setting up libbrotli-dev:arm64 (1.1.0-2build3) ... 239s Setting up liblsan0:arm64 (14.2.0-8ubuntu1) ... 239s Setting up libitm1:arm64 (14.2.0-8ubuntu1) ... 239s Setting up librust-clap-lex-dev:arm64 (0.7.2-2) ... 239s Setting up libhttp-parser2.9:arm64 (2.9.4-6build1) ... 239s Setting up librust-unarray-dev:arm64 (0.1.4-1) ... 239s Setting up libstd-rust-1.80:arm64 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 239s Setting up librust-itertools-dev:arm64 (0.10.5-1) ... 239s Setting up librust-heck-dev:arm64 (0.4.1-1) ... 239s Setting up libbz2-dev:arm64 (1.0.8-6) ... 239s Setting up librust-num-conv-dev:arm64 (0.1.0-1) ... 239s Setting up libpython3.13:arm64 (3.13.0-2) ... 239s Setting up automake (1:1.16.5-1.3ubuntu1) ... 239s update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode 239s Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... 239s Setting up librust-owned-ttf-parser-dev:arm64 (0.24.0-1) ... 239s Setting up librust-num-threads-dev:arm64 (0.1.7-1) ... 239s Setting up librust-crossbeam-epoch+std-dev:arm64 (0.9.18-1) ... 239s Setting up gettext (0.22.5-2) ... 239s Setting up librust-gif-dev:arm64 (0.11.3-1) ... 239s Setting up librust-crossbeam-deque-dev:arm64 (0.8.5-1) ... 239s Setting up librust-tiny-keccak-dev:arm64 (2.0.2-1) ... 239s Setting up python3.13 (3.13.0-2) ... 240s Setting up librust-linux-raw-sys-dev:arm64 (0.4.14-1) ... 240s Setting up pybuild-plugin-pyproject (6.20241024) ... 240s Setting up fontconfig-config (2.15.0-1.1ubuntu2) ... 241s Setting up librust-getrandom-dev:arm64 (0.2.12-1) ... 241s Setting up python3-pytest (8.3.3-1) ... 242s Setting up librust-libloading-dev:arm64 (0.8.5-1) ... 242s Setting up librust-memmap2-dev:arm64 (0.9.3-1) ... 242s Setting up libwebpdemux2:arm64 (1.4.0-0.1) ... 242s Setting up python3-hypothesis (6.119.3-1) ... 243s Setting up librust-ab-glyph-rasterizer+libm-dev:arm64 (0.1.7-1) ... 243s Setting up libpng-dev:arm64 (1.6.44-2) ... 243s Setting up librust-tinyvec+tinyvec-macros-dev:arm64 (1.6.0-2) ... 243s Setting up librust-owning-ref-dev:arm64 (0.4.1-1) ... 243s Setting up librust-memoffset-dev:arm64 (0.8.0-1) ... 243s Setting up python3-all (3.12.7-1) ... 243s Setting up libpython3.12-dev:arm64 (3.12.7-3) ... 243s Setting up librust-proc-macro2-dev:arm64 (1.0.86-1) ... 243s Setting up librust-compiler-builtins+rustc-dep-of-std-dev:arm64 (0.1.101-1) ... 243s Setting up librust-rayon-core-dev:arm64 (1.12.1-1) ... 243s Setting up librust-winapi-dev:arm64 (0.3.9-1) ... 243s Setting up pkgconf:arm64 (1.8.1-4) ... 243s Setting up librust-ab-glyph-dev:arm64 (0.2.28-1) ... 243s Setting up libstd-rust-1.80-dev:arm64 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 243s Setting up libfreetype-dev:arm64 (2.13.3+dfsg-1) ... 243s Setting up intltool-debian (0.35.0+20060710.6) ... 243s Setting up librust-rand-core+getrandom-dev:arm64 (0.6.4-2) ... 243s Setting up librust-rand-xorshift-dev:arm64 (0.3.0-2) ... 243s Setting up libwebp-dev:arm64 (1.4.0-0.1) ... 243s Setting up librust-anes-dev:arm64 (0.1.6-1) ... 243s Setting up libpython3.13-dev:arm64 (3.13.0-2) ... 243s Setting up llvm-runtime:arm64 (1:19.0-60~exp1) ... 243s Setting up librust-cc-dev:arm64 (1.1.14-1) ... 243s Setting up python3.12-dev (3.12.7-3) ... 243s Setting up pkg-config:arm64 (1.8.1-4) ... 243s Setting up dh-strip-nondeterminism (1.14.0-1) ... 243s Setting up librust-crc32fast-dev:arm64 (1.4.2-1) ... 243s Setting up cpp-14-aarch64-linux-gnu (14.2.0-8ubuntu1) ... 243s Setting up librust-num-traits-dev:arm64 (0.2.19-2) ... 243s Setting up librust-winapi-util-dev:arm64 (0.1.6-1) ... 243s Setting up cmake (3.30.3-1) ... 243s Setting up libgit2-1.7:arm64 (1.7.2+ds-1ubuntu3) ... 243s Setting up llvm-19 (1:19.1.2-1ubuntu1) ... 243s Setting up libfontconfig1:arm64 (2.15.0-1.1ubuntu2) ... 243s Setting up librust-sha1-asm-dev:arm64 (0.5.1-2) ... 243s Setting up libgcc-14-dev:arm64 (14.2.0-8ubuntu1) ... 243s Setting up librust-same-file-dev:arm64 (1.0.6-1) ... 243s Setting up librust-rayon-dev:arm64 (1.10.0-1) ... 243s Setting up librust-termcolor-dev:arm64 (1.4.1-1) ... 243s Setting up librust-pkg-config-dev:arm64 (0.3.27-1) ... 243s Setting up libstdc++-14-dev:arm64 (14.2.0-8ubuntu1) ... 243s Setting up librust-jpeg-decoder-dev:arm64 (0.3.0-1) ... 243s Setting up librust-dirs-sys-next-dev:arm64 (0.1.1-1) ... 243s Setting up librust-cmake-dev:arm64 (0.1.45-1) ... 243s Setting up librust-num-integer-dev:arm64 (0.1.46-1) ... 243s Setting up librust-dirs-next-dev:arm64 (2.0.0-1) ... 243s Setting up libpython3-dev:arm64 (3.12.7-1) ... 243s Setting up librust-dlib-dev:arm64 (0.5.2-2) ... 243s Setting up libfontconfig-dev:arm64 (2.15.0-1.1ubuntu2) ... 243s Setting up librust-sha2-asm-dev:arm64 (0.6.2-2) ... 243s Setting up librust-libwebp-sys-dev:arm64 (0.9.5-1build1) ... 243s Setting up po-debconf (1.0.21+nmu1) ... 243s Setting up librust-quote-dev:arm64 (1.0.37-1) ... 243s Setting up librust-freetype-sys-dev:arm64 (0.13.1-1) ... 243s Setting up librust-libz-sys-dev:arm64 (1.1.20-1) ... 243s Setting up librust-syn-dev:arm64 (2.0.85-1) ... 243s Setting up librust-rand-core+std-dev:arm64 (0.6.4-2) ... 243s Setting up librust-powerfmt-macros-dev:arm64 (0.1.0-1) ... 243s Setting up cpp-aarch64-linux-gnu (4:14.1.0-2ubuntu1) ... 243s Setting up librust-powerfmt-dev:arm64 (0.2.0-1) ... 243s Setting up librust-sval-derive-dev:arm64 (2.6.1-2) ... 243s Setting up libpython3-all-dev:arm64 (3.12.7-1) ... 243s Setting up librust-md5-asm-dev:arm64 (0.5.0-2) ... 243s Setting up librust-freetype-dev:arm64 (0.7.0-4) ... 243s Setting up librust-zeroize-derive-dev:arm64 (1.4.2-1) ... 243s Setting up llvm (1:19.0-60~exp1) ... 243s Setting up librust-postgres-derive-dev:arm64 (0.4.5-1) ... 243s Setting up librust-syn-1-dev:arm64 (1.0.109-2) ... 243s Setting up cpp-14 (14.2.0-8ubuntu1) ... 243s Setting up librust-clap-derive-dev:arm64 (4.5.13-2) ... 243s Setting up librust-bytecheck-derive-dev:arm64 (0.6.12-1) ... 243s Setting up librust-no-panic-dev:arm64 (0.1.13-1) ... 243s Setting up cpp (4:14.1.0-2ubuntu1) ... 243s Setting up librust-serde-derive-dev:arm64 (1.0.210-1) ... 243s Setting up librust-walkdir-dev:arm64 (2.5.0-1) ... 243s Setting up gcc-14-aarch64-linux-gnu (14.2.0-8ubuntu1) ... 243s Setting up librust-zerocopy-derive-dev:arm64 (0.7.32-2) ... 243s Setting up librust-valuable-derive-dev:arm64 (0.1.0-1) ... 243s Setting up librust-ghost-dev:arm64 (0.1.5-1) ... 243s Setting up librust-serde-dev:arm64 (1.0.210-2) ... 243s Setting up librust-bytemuck-derive-dev:arm64 (1.5.0-2) ... 243s Setting up librust-derive-arbitrary-dev:arm64 (1.3.2-1) ... 243s Setting up librust-allocator-api2-dev:arm64 (0.2.16-1) ... 243s Setting up librust-async-attributes-dev (1.1.2-6) ... 243s Setting up librust-rand-chacha-dev:arm64 (0.3.1-2) ... 243s Setting up gcc-aarch64-linux-gnu (4:14.1.0-2ubuntu1) ... 243s Setting up librust-futures-macro-dev:arm64 (0.3.30-1) ... 243s Setting up librust-ctor-dev:arm64 (0.1.26-1) ... 243s Setting up librust-unicode-bidi-dev:arm64 (0.3.13-1) ... 243s Setting up g++-14-aarch64-linux-gnu (14.2.0-8ubuntu1) ... 243s Setting up librust-tracing-attributes-dev:arm64 (0.1.27-1) ... 243s Setting up librust-ptr-meta-derive-dev:arm64 (0.1.4-1) ... 243s Setting up librust-serde-fmt-dev (1.0.3-3) ... 243s Setting up librust-portable-atomic-dev:arm64 (1.9.0-4) ... 243s Setting up librust-tokio-macros-dev:arm64 (2.4.0-2) ... 243s Setting up librust-flate2-dev:arm64 (1.0.34-1) ... 243s Setting up librust-lock-api-dev:arm64 (0.4.12-1) ... 243s Setting up librust-ptr-meta-dev:arm64 (0.1.4-1) ... 243s Setting up librust-inventory-dev:arm64 (0.3.2-1) ... 243s Setting up librust-sval-dev:arm64 (2.6.1-2) ... 243s Setting up librust-itoa-dev:arm64 (1.0.9-1) ... 243s Setting up gcc-14 (14.2.0-8ubuntu1) ... 243s Setting up librust-bytes-dev:arm64 (1.8.0-1) ... 243s Setting up librust-bumpalo-dev:arm64 (3.16.0-1) ... 243s Setting up librust-python3-dll-a-dev:arm64 (0.2.10-1) ... 243s Setting up librust-siphasher-dev:arm64 (0.3.10-1) ... 243s Setting up librust-rand-core+serde-dev:arm64 (0.6.4-2) ... 243s Setting up librust-sval-ref-dev:arm64 (2.6.1-1) ... 243s Setting up librust-rkyv-derive-dev:arm64 (0.7.44-1) ... 243s Setting up librust-zerocopy-dev:arm64 (0.7.32-1) ... 243s Setting up librust-semver-dev:arm64 (1.0.23-1) ... 243s Setting up librust-bytemuck-dev:arm64 (1.14.0-1) ... 243s Setting up librust-bit-vec-dev:arm64 (0.6.3-1) ... 243s Setting up librust-zeroize-dev:arm64 (1.8.1-1) ... 243s Setting up librust-slab-dev:arm64 (0.4.9-1) ... 243s Setting up librust-arbitrary-dev:arm64 (1.3.2-1) ... 243s Setting up librust-valuable-dev:arm64 (0.1.0-4) ... 243s Setting up librust-target-lexicon-dev:arm64 (0.12.14-1) ... 243s Setting up librust-serde-test-dev:arm64 (1.0.171-1) ... 243s Setting up g++-aarch64-linux-gnu (4:14.1.0-2ubuntu1) ... 243s Setting up librust-bit-set-dev:arm64 (0.5.2-1) ... 243s Setting up librust-concurrent-queue-dev:arm64 (2.5.0-4) ... 243s Setting up g++-14 (14.2.0-8ubuntu1) ... 243s Setting up librust-erased-serde-dev:arm64 (0.3.31-1) ... 243s Setting up librust-radium-dev:arm64 (1.1.0-1) ... 243s Setting up librust-bit-set+std-dev:arm64 (0.5.2-1) ... 243s Setting up librust-phf-shared-dev:arm64 (0.11.2-1) ... 243s Setting up librust-tiff-dev:arm64 (0.9.0-1) ... 243s Setting up librust-smol-str-dev:arm64 (0.2.0-1) ... 243s Setting up librust-atomic-dev:arm64 (0.6.0-1) ... 243s Setting up librust-generic-array-dev:arm64 (0.14.7-1) ... 243s Setting up librust-half-dev:arm64 (1.8.2-4) ... 243s Setting up librust-phf-dev:arm64 (0.11.2-1) ... 243s Setting up librust-spin-dev:arm64 (0.9.8-4) ... 243s Setting up librust-sval-dynamic-dev:arm64 (2.6.1-1) ... 243s Setting up librust-qoi-dev:arm64 (0.4.1-2) ... 243s Setting up librust-async-task-dev (4.7.1-3) ... 243s Setting up librust-crypto-common-dev:arm64 (0.1.6-1) ... 243s Setting up librust-ciborium-ll-dev:arm64 (0.2.2-1) ... 243s Setting up librust-futures-core-dev:arm64 (0.3.30-1) ... 243s Setting up librust-lazy-static-dev:arm64 (1.5.0-1) ... 243s Setting up libtool (2.4.7-8) ... 243s Setting up librust-sval-buffer-dev:arm64 (2.6.1-1) ... 243s Setting up librust-arrayvec-dev:arm64 (0.7.4-2) ... 243s Setting up librust-png-dev:arm64 (0.17.7-3) ... 243s Setting up librust-rustc-version-dev:arm64 (0.4.0-1) ... 243s Setting up librust-event-listener-dev (5.3.1-8) ... 243s Setting up librust-smallvec-dev:arm64 (1.13.2-1) ... 243s Setting up librust-sval-fmt-dev:arm64 (2.6.1-1) ... 243s Setting up librust-const-oid-dev:arm64 (0.9.3-1) ... 243s Setting up gcc (4:14.1.0-2ubuntu1) ... 243s Setting up librust-anstyle-parse-dev:arm64 (0.2.1-1) ... 243s Setting up rustc-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 243s Setting up dh-autoreconf (20) ... 243s Setting up librust-ciborium-dev:arm64 (0.2.2-2) ... 243s Setting up librust-block-buffer-dev:arm64 (0.10.2-2) ... 243s Setting up librust-pathfinder-simd-dev:arm64 (0.5.2-1) ... 243s Setting up librust-unicode-normalization-dev:arm64 (0.1.22-1) ... 243s Setting up librust-anstream-dev:arm64 (0.6.15-1) ... 243s Setting up librust-bitflags-dev:arm64 (2.6.0-1) ... 243s Setting up librust-regex-syntax-dev:arm64 (0.8.2-1) ... 243s Setting up g++ (4:14.1.0-2ubuntu1) ... 243s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 243s Setting up rustc (1.80.1ubuntu2) ... 243s Setting up librust-parking-lot-core-dev:arm64 (0.9.10-1) ... 243s Setting up build-essential (12.10ubuntu1) ... 243s Setting up librust-futures-channel-dev:arm64 (0.3.30-1) ... 243s Setting up cargo-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 243s Setting up librust-once-cell-dev:arm64 (1.20.2-1) ... 243s Setting up librust-pyo3-build-config-dev:arm64 (0.22.6-1) ... 243s Setting up librust-phf-shared+uncased-dev:arm64 (0.11.2-1) ... 243s Setting up librust-digest-dev:arm64 (0.10.7-2) ... 243s Setting up librust-md-5-dev:arm64 (0.10.6-1) ... 243s Setting up librust-sval-serde-dev:arm64 (2.6.1-1) ... 243s Setting up librust-parking-lot-dev:arm64 (0.12.3-1) ... 243s Setting up librust-event-listener-strategy-dev:arm64 (0.5.2-3) ... 243s Setting up librust-pyo3-macros-backend-dev:arm64 (0.22.6-1) ... 243s Setting up librust-pyo3-ffi-dev:arm64 (0.22.6-1build1) ... 243s Setting up librust-const-random-macro-dev:arm64 (0.1.16-2) ... 243s Setting up librust-const-random-dev:arm64 (0.1.17-2) ... 243s Setting up librust-pyo3-macros-dev:arm64 (0.22.6-1) ... 243s Setting up librust-sha1-dev:arm64 (0.10.6-1) ... 243s Setting up debhelper (13.20ubuntu1) ... 243s Setting up librust-ahash-dev (0.8.11-8) ... 243s Setting up librust-async-channel-dev (2.3.1-8) ... 243s Setting up librust-stringprep-dev:arm64 (0.1.2-1) ... 243s Setting up librust-tracing-core-dev:arm64 (0.1.32-1) ... 243s Setting up cargo (1.80.1ubuntu2) ... 243s Setting up librust-async-lock-dev (3.4.0-4) ... 243s Setting up python3-setuptools-rust (1.9.0+dfsg-2) ... 244s Setting up librust-eyre-dev:arm64 (0.6.12-1) ... 244s Setting up librust-yeslogic-fontconfig-sys-dev:arm64 (3.0.1-1) ... 244s Setting up librust-sha2-dev:arm64 (0.10.8-1) ... 244s Setting up librust-hmac-dev:arm64 (0.12.1-1) ... 244s Setting up librust-rustix-dev:arm64 (0.38.32-1) ... 244s Setting up librust-wyz-dev:arm64 (0.5.1-1) ... 244s Setting up librust-bitvec-dev:arm64 (1.0.1-1) ... 244s Setting up librust-phf+uncased-dev:arm64 (0.11.2-1) ... 244s Setting up librust-value-bag-sval2-dev:arm64 (1.9.0-1) ... 244s Setting up librust-tempfile-dev:arm64 (3.10.1-1) ... 244s Setting up librust-eyre+default-dev:arm64 (0.6.12-1) ... 244s Setting up pybuild-plugin-autopkgtest (6.20241024) ... 244s Setting up librust-rusty-fork-dev:arm64 (0.3.0-1) ... 244s Setting up librust-hashbrown-dev:arm64 (0.14.5-5) ... 244s Setting up librust-rusty-fork+wait-timeout-dev:arm64 (0.3.0-1) ... 244s Setting up librust-terminal-size-dev:arm64 (0.3.0-2) ... 244s Setting up librust-indexmap-dev:arm64 (2.2.6-1) ... 244s Setting up librust-gimli-dev:arm64 (0.28.1-2) ... 244s Setting up librust-webp-dev:arm64 (0.2.6-1) ... 244s Setting up librust-memchr-dev:arm64 (2.7.4-1) ... 244s Setting up librust-futures-util-dev:arm64 (0.3.30-2) ... 244s Setting up librust-csv-core-dev:arm64 (0.1.11-1) ... 244s Setting up librust-futures-lite-dev:arm64 (2.3.0-2) ... 244s Setting up librust-csv-dev:arm64 (1.3.0-1) ... 244s Setting up librust-serde-json-dev:arm64 (1.0.128-1) ... 244s Setting up librust-async-executor-dev (1.13.1-1) ... 244s Setting up librust-futures-executor-dev:arm64 (0.3.30-1) ... 244s Setting up librust-value-bag-serde1-dev:arm64 (1.9.0-1) ... 244s Setting up librust-tinytemplate-dev:arm64 (1.2.1-1) ... 244s Setting up librust-futures-dev:arm64 (0.3.30-2) ... 244s Setting up librust-value-bag-dev:arm64 (1.9.0-1) ... 244s Setting up librust-log-dev:arm64 (0.4.22-1) ... 244s Setting up librust-kv-log-macro-dev (1.0.8-4) ... 244s Setting up librust-pathfinder-geometry-dev:arm64 (0.5.1-1) ... 244s Setting up librust-tracing-dev:arm64 (0.1.40-1) ... 244s Setting up librust-polling-dev:arm64 (3.4.0-1) ... 244s Setting up librust-aho-corasick-dev:arm64 (1.1.3-1) ... 244s Setting up librust-font-kit-dev:arm64 (0.11.0-2) ... 244s Setting up librust-async-io-dev:arm64 (2.3.3-4) ... 244s Setting up librust-blocking-dev (1.6.1-5) ... 244s Setting up librust-async-net-dev (2.0.0-4) ... 244s Setting up librust-rand-dev:arm64 (0.8.5-1) ... 244s Setting up librust-mio-dev:arm64 (1.0.2-2) ... 244s Setting up librust-wasm-bindgen-backend-dev:arm64 (0.2.87-1) ... 244s Setting up librust-twox-hash-dev:arm64 (1.6.3-1) ... 244s Setting up librust-proptest-dev:arm64 (1.5.0-2) ... 244s Setting up librust-wasm-bindgen-macro-support-dev:arm64 (0.2.87-1) ... 244s Setting up librust-regex-automata-dev:arm64 (0.4.7-1) ... 244s Setting up librust-wasm-bindgen-macro-support+spans-dev:arm64 (0.2.87-1) ... 244s Setting up librust-wasm-bindgen-macro-dev:arm64 (0.2.87-1) ... 244s Setting up librust-uuid-dev:arm64 (1.10.0-1) ... 244s Setting up librust-bstr-dev:arm64 (1.7.0-2build1) ... 244s Setting up librust-async-signal-dev:arm64 (0.2.10-1) ... 244s Setting up librust-bytecheck-dev:arm64 (0.6.12-1) ... 244s Setting up librust-postgres-protocol-dev:arm64 (0.6.6-2) ... 244s Setting up librust-async-fs-dev (2.1.2-4) ... 244s Setting up librust-wasm-bindgen-dev:arm64 (0.2.87-1) ... 244s Setting up librust-convert-case-dev:arm64 (0.6.0-2) ... 244s Setting up librust-regex-dev:arm64 (1.10.6-1) ... 244s Setting up librust-fancy-regex-dev:arm64 (0.11.0-2) ... 244s Setting up librust-async-process-dev (2.3.0-1) ... 244s Setting up librust-wasm-bindgen-macro+spans-dev:arm64 (0.2.87-1) ... 244s Setting up librust-rend-dev:arm64 (0.4.0-1) ... 244s Setting up librust-derive-more-0.99-dev:arm64 (0.99.18-1) ... 244s Setting up librust-env-logger-dev:arm64 (0.10.2-2) ... 244s Setting up librust-wasm-bindgen+spans-dev:arm64 (0.2.87-1) ... 244s Setting up librust-wasm-bindgen+default-dev:arm64 (0.2.87-1) ... 244s Setting up librust-rkyv-dev:arm64 (0.7.44-1) ... 244s Setting up librust-eui48-dev:arm64 (1.1.0-2) ... 244s Setting up librust-parse-zoneinfo-dev:arm64 (0.3.0-1) ... 244s Setting up librust-smol-dev (2.0.2-1) ... 244s Setting up librust-js-sys-dev:arm64 (0.3.64-1) ... 244s Setting up librust-num-complex-dev:arm64 (0.4.6-2) ... 244s Setting up librust-approx-dev:arm64 (0.5.1-1) ... 244s Setting up librust-ruzstd-dev:arm64 (0.5.0-1) ... 244s Setting up librust-web-sys-dev:arm64 (0.3.64-2) ... 244s Setting up librust-quickcheck-dev:arm64 (1.0.3-3) ... 244s Setting up librust-geo-types-dev:arm64 (0.7.11-2) ... 244s Setting up librust-deranged-dev:arm64 (0.3.11-1) ... 244s Setting up librust-num-bigint-dev:arm64 (0.4.6-1) ... 244s Setting up librust-num-rational-dev:arm64 (0.4.2-1) ... 244s Setting up librust-chrono-dev:arm64 (0.4.38-2) ... 244s Setting up librust-object-dev:arm64 (0.32.2-1) ... 244s Setting up librust-image-dev:arm64 (0.24.7-2) ... 244s Setting up librust-time-dev:arm64 (0.3.36-2) ... 245s Setting up librust-plotters-bitmap-dev:arm64 (0.3.3-3) ... 245s Setting up librust-postgres-types-dev:arm64 (0.2.6-2) ... 245s Setting up librust-addr2line-dev:arm64 (0.21.0-2) ... 245s Setting up librust-plotters-svg-dev:arm64 (0.3.5-1) ... 245s Setting up librust-rust-decimal-dev:arm64 (1.36.0-1) ... 245s Setting up librust-plotters-dev:arm64 (0.3.5-4) ... 245s Setting up librust-backtrace-dev:arm64 (0.3.69-2) ... 245s Setting up librust-tokio-dev:arm64 (1.39.3-3) ... 245s Setting up librust-async-global-executor-dev:arm64 (2.4.1-5) ... 245s Setting up librust-clap-builder-dev:arm64 (4.5.15-2) ... 245s Setting up librust-clap-dev:arm64 (4.5.16-1) ... 245s Setting up librust-async-std-dev (1.13.0-1) ... 245s Setting up librust-anyhow-dev:arm64 (1.0.86-1) ... 245s Setting up librust-criterion-dev (0.5.1-6) ... 245s Setting up librust-phf-generator-dev:arm64 (0.11.2-2) ... 245s Setting up librust-phf-codegen-dev:arm64 (0.11.2-1) ... 245s Setting up librust-chrono-tz-build-dev:arm64 (0.2.1-1) ... 245s Setting up librust-chrono-tz-dev:arm64 (0.8.6-2) ... 245s Setting up librust-pyo3-dev:arm64 (0.22.6-1) ... 245s Setting up autopkgtest-satdep (0) ... 245s Processing triggers for libc-bin (2.40-1ubuntu3) ... 245s Processing triggers for systemd (256.5-2ubuntu4) ... 245s Processing triggers for man-db (2.13.0-1) ... 247s Processing triggers for install-info (7.1.1-1) ... 275s (Reading database ... 106689 files and directories currently installed.) 275s Removing autopkgtest-satdep (0) ... 276s autopkgtest [20:35:35]: test pybuild-autopkgtest: pybuild-autopkgtest 276s autopkgtest [20:35:35]: test pybuild-autopkgtest: [----------------------- 276s pybuild-autopkgtest 277s I: pybuild base:311: cd /tmp/autopkgtest.2NAS1E/autopkgtest_tmp/build; python3.13 -m pytest tests 278s ============================= test session starts ============================== 278s platform linux -- Python 3.13.0, pytest-8.3.3, pluggy-1.5.0 278s rootdir: /tmp/autopkgtest.2NAS1E/autopkgtest_tmp/build 278s configfile: pyproject.toml 278s plugins: hypothesis-6.119.3, typeguard-4.4.1 278s collected 30 items 278s 860s tests/test_encoding.py FFFFFFFFFFFFFFFFFFFFFF [ 73%] 862s tests/test_misc.py F. [ 80%] 864s tests/test_offsets.py FF [ 86%] 866s tests/test_pickle.py F [ 90%] 867s tests/test_simple_public.py FF. [100%] 867s 867s =================================== FAILURES =================================== 867s _________________________________ test_simple __________________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s def test_simple(): 867s > enc = tiktoken.get_encoding("gpt2") 867s 867s tests/test_encoding.py:15: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 867s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 867s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s _____________________________ test_simple_repeated _____________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s def test_simple_repeated(): 867s > enc = tiktoken.get_encoding("gpt2") 867s 867s tests/test_encoding.py:32: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 867s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 867s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ______________________________ test_simple_regex _______________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s def test_simple_regex(): 867s > enc = tiktoken.get_encoding("cl100k_base") 867s 867s tests/test_encoding.py:53: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ______________________________ test_basic_encode _______________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s def test_basic_encode(): 867s > enc = tiktoken.get_encoding("r50k_base") 867s 867s tests/test_encoding.py:62: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ______________________________ test_encode_empty _______________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s def test_encode_empty(): 867s > enc = tiktoken.get_encoding("r50k_base") 867s 867s tests/test_encoding.py:74: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ______________________________ test_encode_bytes _______________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s def test_encode_bytes(): 867s > enc = tiktoken.get_encoding("cl100k_base") 867s 867s tests/test_encoding.py:79: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s _________________________ test_encode_surrogate_pairs __________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s def test_encode_surrogate_pairs(): 867s > enc = tiktoken.get_encoding("cl100k_base") 867s 867s tests/test_encoding.py:84: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s _________________ test_catastrophically_repetitive[r50k_base] __________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'r50k_base') 867s 867s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 867s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 867s > enc = make_enc() 867s 867s tests/test_encoding.py:96: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ________________ test_catastrophically_repetitive[cl100k_base] _________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'cl100k_base') 867s 867s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 867s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 867s > enc = make_enc() 867s 867s tests/test_encoding.py:96: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s _______________________ test_basic_roundtrip[r50k_base] ________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'r50k_base') 867s 867s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 867s def test_basic_roundtrip(make_enc): 867s > enc = make_enc() 867s 867s tests/test_encoding.py:115: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ______________________ test_basic_roundtrip[cl100k_base] _______________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'cl100k_base') 867s 867s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 867s def test_basic_roundtrip(make_enc): 867s > enc = make_enc() 867s 867s tests/test_encoding.py:115: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ________________________ test_hyp_roundtrip[r50k_base] _________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'r50k_base') 867s 867s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 867s > @hypothesis.given(text=st.text()) 867s 867s tests/test_encoding.py:131: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s tests/test_encoding.py:134: in test_hyp_roundtrip 867s enc = make_enc() 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s E Falsifying example: test_hyp_roundtrip( 867s E make_enc=functools.partial(get_encoding, 'r50k_base'), 867s E text='', # or any other generated value 867s E ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s _______________________ test_hyp_roundtrip[cl100k_base] ________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'cl100k_base') 867s 867s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 867s > @hypothesis.given(text=st.text()) 867s 867s tests/test_encoding.py:131: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s tests/test_encoding.py:134: in test_hyp_roundtrip 867s enc = make_enc() 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s E Falsifying example: test_hyp_roundtrip( 867s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 867s E text='', # or any other generated value 867s E ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ____________________ test_single_token_roundtrip[r50k_base] ____________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'r50k_base') 867s 867s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 867s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 867s > enc = make_enc() 867s 867s tests/test_encoding.py:141: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ___________________ test_single_token_roundtrip[cl100k_base] ___________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'cl100k_base') 867s 867s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 867s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 867s > enc = make_enc() 867s 867s tests/test_encoding.py:141: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ______________________________ test_special_token ______________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s def test_special_token(): 867s > enc = tiktoken.get_encoding("cl100k_base") 867s 867s tests/test_encoding.py:157: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s _____________________ test_hyp_special_ordinary[r50k_base] _____________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = NoneE: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.2NAS1E/autopkgtest_tmp/build; python3.13 -m pytest tests 867s I: pybuild base:311: cd /tmp/autopkgtest.2NAS1E/autopkgtest_tmp/build; python3.12 -m pytest tests 867s , 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'r50k_base') 867s 867s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 867s > @hypothesis.given(text=st.text()) 867s 867s tests/test_encoding.py:208: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s tests/test_encoding.py:211: in test_hyp_special_ordinary 867s enc = make_enc() 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s E Falsifying example: test_hyp_special_ordinary( 867s E make_enc=functools.partial(get_encoding, 'r50k_base'), 867s E text='', # or any other generated value 867s E ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ____________________ test_hyp_special_ordinary[cl100k_base] ____________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'cl100k_base') 867s 867s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 867s > @hypothesis.given(text=st.text()) 867s 867s tests/test_encoding.py:208: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s tests/test_encoding.py:211: in test_hyp_special_ordinary 867s enc = make_enc() 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s E Falsifying example: test_hyp_special_ordinary( 867s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 867s E text='', # or any other generated value 867s E ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s _________________________ test_batch_encode[r50k_base] _________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'r50k_base') 867s 867s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 867s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 867s > enc = make_enc() 867s 867s tests/test_encoding.py:222: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ________________________ test_batch_encode[cl100k_base] ________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'cl100k_base') 867s 867s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 867s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 867s > enc = make_enc() 867s 867s tests/test_encoding.py:222: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s _____________________ test_hyp_batch_roundtrip[r50k_base] ______________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'r50k_base') 867s 867s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 867s > @hypothesis.given(batch=st.lists(st.text())) 867s 867s tests/test_encoding.py:237: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 867s enc = make_enc() 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s E Falsifying example: test_hyp_batch_roundtrip( 867s E make_enc=functools.partial(get_encoding, 'r50k_base'), 867s E batch=[], # or any other generated value 867s E ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ____________________ test_hyp_batch_roundtrip[cl100k_base] _____________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'cl100k_base') 867s 867s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 867s > @hypothesis.given(batch=st.lists(st.text())) 867s 867s tests/test_encoding.py:237: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 867s enc = make_enc() 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s E Falsifying example: test_hyp_batch_roundtrip( 867s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 867s E batch=[], # or any other generated value 867s E ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ___________________________ test_encoding_for_model ____________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s def test_encoding_for_model(): 867s > enc = tiktoken.encoding_for_model("gpt2") 867s 867s tests/test_misc.py:8: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 867s return get_encoding(encoding_name_for_model(model_name)) 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 867s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 867s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ________________________ test_hyp_offsets[cl100k_base] _________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s make_enc = functools.partial(, 'cl100k_base') 867s 867s @pytest.mark.parametrize("make_enc", SOME_ENCODING_FACTORIES) 867s > @hypothesis.given(data=st.data()) 867s 867s tests/test_offsets.py:29: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s tests/test_offsets.py:32: in test_hyp_offsets 867s enc = make_enc() 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s E Falsifying example: test_hyp_offsets( 867s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 867s E data=data(...), 867s E ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ______________________________ test_basic_offsets ______________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s def test_basic_offsets(): 867s > enc = tiktoken.get_encoding("cl100k_base") 867s 867s tests/test_offsets.py:50: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s _________________________________ test_pickle __________________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s def test_pickle(): 867s import pickle 867s 867s > enc_old = tiktoken.get_encoding("r50k_base") 867s 867s tests/test_pickle.py:7: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 867s mergeable_ranks = load_tiktoken_bpe( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 867s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s _________________________________ test_simple __________________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s def test_simple(): 867s # Note that there are more actual tests, they're just not currently public :-) 867s > enc = tiktoken.get_encoding("gpt2") 867s 867s tests/test_simple_public.py:9: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 867s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 867s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s ___________________________ test_encoding_for_model ____________________________ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s > sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 867s raise err 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 867s source_address = None, socket_options = [(6, 1, 1)] 867s 867s def create_connection( 867s address: tuple[str, int], 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s source_address: tuple[str, int] | None = None, 867s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 867s ) -> socket.socket: 867s """Connect to *address* and return the socket object. 867s 867s Convenience function. Connect to *address* (a 2-tuple ``(host, 867s port)``) and return the socket object. Passing the optional 867s *timeout* parameter will set the timeout on the socket instance 867s before attempting to connect. If no *timeout* is supplied, the 867s global default timeout setting returned by :func:`socket.getdefaulttimeout` 867s is used. If *source_address* is set it must be a tuple of (host, port) 867s for the socket to bind as a source address before making the connection. 867s An host of '' or port 0 tells the OS to use the default. 867s """ 867s 867s host, port = address 867s if host.startswith("["): 867s host = host.strip("[]") 867s err = None 867s 867s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 867s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 867s # The original create_connection function always returns all records. 867s family = allowed_gai_family() 867s 867s try: 867s host.encode("idna") 867s except UnicodeError: 867s raise LocationParseError(f"'{host}', label empty or too long") from None 867s 867s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 867s af, socktype, proto, canonname, sa = res 867s sock = None 867s try: 867s sock = socket.socket(af, socktype, proto) 867s 867s # If provided, set socket level options before connecting. 867s _set_socket_options(sock, socket_options) 867s 867s if timeout is not _DEFAULT_TIMEOUT: 867s sock.settimeout(timeout) 867s if source_address: 867s sock.bind(source_address) 867s > sock.connect(sa) 867s E ConnectionRefusedError: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 867s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 867s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s redirect = False, assert_same_host = False 867s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 867s release_conn = False, chunked = False, body_pos = None, preload_content = False 867s decode_content = False, response_kw = {} 867s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 867s destination_scheme = None, conn = None, release_this_conn = True 867s http_tunnel_required = False, err = None, clean_exit = False 867s 867s def urlopen( # type: ignore[override] 867s self, 867s method: str, 867s url: str, 867s body: _TYPE_BODY | None = None, 867s headers: typing.Mapping[str, str] | None = None, 867s retries: Retry | bool | int | None = None, 867s redirect: bool = True, 867s assert_same_host: bool = True, 867s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 867s pool_timeout: int | None = None, 867s release_conn: bool | None = None, 867s chunked: bool = False, 867s body_pos: _TYPE_BODY_POSITION | None = None, 867s preload_content: bool = True, 867s decode_content: bool = True, 867s **response_kw: typing.Any, 867s ) -> BaseHTTPResponse: 867s """ 867s Get a connection from the pool and perform an HTTP request. This is the 867s lowest level call for making a request, so you'll need to specify all 867s the raw details. 867s 867s .. note:: 867s 867s More commonly, it's appropriate to use a convenience method 867s such as :meth:`request`. 867s 867s .. note:: 867s 867s `release_conn` will only behave as expected if 867s `preload_content=False` because we want to make 867s `preload_content=False` the default behaviour someday soon without 867s breaking backwards compatibility. 867s 867s :param method: 867s HTTP request method (such as GET, POST, PUT, etc.) 867s 867s :param url: 867s The URL to perform the request on. 867s 867s :param body: 867s Data to send in the request body, either :class:`str`, :class:`bytes`, 867s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 867s 867s :param headers: 867s Dictionary of custom headers to send, such as User-Agent, 867s If-None-Match, etc. If None, pool headers are used. If provided, 867s these headers completely replace any pool-specific headers. 867s 867s :param retries: 867s Configure the number of retries to allow before raising a 867s :class:`~urllib3.exceptions.MaxRetryError` exception. 867s 867s Pass ``None`` to retry until you receive a response. Pass a 867s :class:`~urllib3.util.retry.Retry` object for fine-grained control 867s over different types of retries. 867s Pass an integer number to retry connection errors that many times, 867s but no other types of errors. Pass zero to never retry. 867s 867s If ``False``, then retries are disabled and any exception is raised 867s immediately. Also, instead of raising a MaxRetryError on redirects, 867s the redirect response will be returned. 867s 867s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 867s 867s :param redirect: 867s If True, automatically handle redirects (status codes 301, 302, 867s 303, 307, 308). Each redirect counts as a retry. Disabling retries 867s will disable redirect, too. 867s 867s :param assert_same_host: 867s If ``True``, will make sure that the host of the pool requests is 867s consistent else will raise HostChangedError. When ``False``, you can 867s use the pool on an HTTP proxy and request foreign hosts. 867s 867s :param timeout: 867s If specified, overrides the default timeout for this one 867s request. It may be a float (in seconds) or an instance of 867s :class:`urllib3.util.Timeout`. 867s 867s :param pool_timeout: 867s If set and the pool is set to block=True, then this method will 867s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 867s connection is available within the time period. 867s 867s :param bool preload_content: 867s If True, the response's body will be preloaded into memory. 867s 867s :param bool decode_content: 867s If True, will attempt to decode the body based on the 867s 'content-encoding' header. 867s 867s :param release_conn: 867s If False, then the urlopen call will not release the connection 867s back into the pool once a response is received (but will release if 867s you read the entire contents of the response such as when 867s `preload_content=True`). This is useful if you're not preloading 867s the response's content immediately. You will need to call 867s ``r.release_conn()`` on the response ``r`` to return the connection 867s back into the pool. If None, it takes the value of ``preload_content`` 867s which defaults to ``True``. 867s 867s :param bool chunked: 867s If True, urllib3 will send the body using chunked transfer 867s encoding. Otherwise, urllib3 will send the body using the standard 867s content-length form. Defaults to False. 867s 867s :param int body_pos: 867s Position to seek to in file-like body in the event of a retry or 867s redirect. Typically this won't need to be set because urllib3 will 867s auto-populate the value when needed. 867s """ 867s parsed_url = parse_url(url) 867s destination_scheme = parsed_url.scheme 867s 867s if headers is None: 867s headers = self.headers 867s 867s if not isinstance(retries, Retry): 867s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 867s 867s if release_conn is None: 867s release_conn = preload_content 867s 867s # Check host 867s if assert_same_host and not self.is_same_host(url): 867s raise HostChangedError(self, url, retries) 867s 867s # Ensure that the URL we're connecting to is properly encoded 867s if url.startswith("/"): 867s url = to_str(_encode_target(url)) 867s else: 867s url = to_str(parsed_url.url) 867s 867s conn = None 867s 867s # Track whether `conn` needs to be released before 867s # returning/raising/recursing. Update this variable if necessary, and 867s # leave `release_conn` constant throughout the function. That way, if 867s # the function recurses, the original value of `release_conn` will be 867s # passed down into the recursive call, and its value will be respected. 867s # 867s # See issue #651 [1] for details. 867s # 867s # [1] 867s release_this_conn = release_conn 867s 867s http_tunnel_required = connection_requires_http_tunnel( 867s self.proxy, self.proxy_config, destination_scheme 867s ) 867s 867s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 867s # have to copy the headers dict so we can safely change it without those 867s # changes being reflected in anyone else's copy. 867s if not http_tunnel_required: 867s headers = headers.copy() # type: ignore[attr-defined] 867s headers.update(self.proxy_headers) # type: ignore[union-attr] 867s 867s # Must keep the exception bound to a separate variable or else Python 3 867s # complains about UnboundLocalError. 867s err = None 867s 867s # Keep track of whether we cleanly exited the except block. This 867s # ensures we do proper cleanup in finally. 867s clean_exit = False 867s 867s # Rewind body position, if needed. Record current position 867s # for future rewinds in the event of a redirect/retry. 867s body_pos = set_file_position(body, body_pos) 867s 867s try: 867s # Request a connection from the queue. 867s timeout_obj = self._get_timeout(timeout) 867s conn = self._get_conn(timeout=pool_timeout) 867s 867s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 867s 867s # Is this a closed/new connection that requires CONNECT tunnelling? 867s if self.proxy is not None and http_tunnel_required and conn.is_closed: 867s try: 867s self._prepare_proxy(conn) 867s except (BaseSSLError, OSError, SocketTimeout) as e: 867s self._raise_timeout( 867s err=e, url=self.proxy.url, timeout_value=conn.timeout 867s ) 867s raise 867s 867s # If we're going to release the connection in ``finally:``, then 867s # the response doesn't need to know about the connection. Otherwise 867s # it will also try to release it and we'll have a double-release 867s # mess. 867s response_conn = conn if not release_conn else None 867s 867s # Make the request on the HTTPConnection object 867s > response = self._make_request( 867s conn, 867s method, 867s url, 867s timeout=timeout_obj, 867s body=body, 867s headers=headers, 867s chunked=chunked, 867s retries=retries, 867s response_conn=response_conn, 867s preload_content=preload_content, 867s decode_content=decode_content, 867s **response_kw, 867s ) 867s 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 867s raise new_e 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 867s self._validate_conn(conn) 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 867s conn.connect() 867s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 867s self.sock = sock = self._new_conn() 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s 867s def _new_conn(self) -> socket.socket: 867s """Establish a socket connection and set nodelay settings on it. 867s 867s :return: New socket connection. 867s """ 867s try: 867s sock = connection.create_connection( 867s (self._dns_host, self.port), 867s self.timeout, 867s source_address=self.source_address, 867s socket_options=self.socket_options, 867s ) 867s except socket.gaierror as e: 867s raise NameResolutionError(self.host, self, e) from e 867s except SocketTimeout as e: 867s raise ConnectTimeoutError( 867s self, 867s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 867s ) from e 867s 867s except OSError as e: 867s > raise NewConnectionError( 867s self, f"Failed to establish a new connection: {e}" 867s ) from e 867s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 867s 867s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 867s 867s The above exception was the direct cause of the following exception: 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s > resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:667: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 867s retries = retries.increment( 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 867s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 867s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 867s _pool = 867s _stacktrace = 867s 867s def increment( 867s self, 867s method: str | None = None, 867s url: str | None = None, 867s response: BaseHTTPResponse | None = None, 867s error: Exception | None = None, 867s _pool: ConnectionPool | None = None, 867s _stacktrace: TracebackType | None = None, 867s ) -> Retry: 867s """Return a new Retry object with incremented retry counters. 867s 867s :param response: A response object, or None, if the server did not 867s return a response. 867s :type response: :class:`~urllib3.response.BaseHTTPResponse` 867s :param Exception error: An error encountered during the request, or 867s None if the response was received successfully. 867s 867s :return: A new ``Retry`` object. 867s """ 867s if self.total is False and error: 867s # Disabled, indicate to re-raise the error. 867s raise reraise(type(error), error, _stacktrace) 867s 867s total = self.total 867s if total is not None: 867s total -= 1 867s 867s connect = self.connect 867s read = self.read 867s redirect = self.redirect 867s status_count = self.status 867s other = self.other 867s cause = "unknown" 867s status = None 867s redirect_location = None 867s 867s if error and self._is_connection_error(error): 867s # Connect retry? 867s if connect is False: 867s raise reraise(type(error), error, _stacktrace) 867s elif connect is not None: 867s connect -= 1 867s 867s elif error and self._is_read_error(error): 867s # Read retry? 867s if read is False or method is None or not self._is_method_retryable(method): 867s raise reraise(type(error), error, _stacktrace) 867s elif read is not None: 867s read -= 1 867s 867s elif error: 867s # Other retry? 867s if other is not None: 867s other -= 1 867s 867s elif response and response.get_redirect_location(): 867s # Redirect retry? 867s if redirect is not None: 867s redirect -= 1 867s cause = "too many redirects" 867s response_redirect_location = response.get_redirect_location() 867s if response_redirect_location: 867s redirect_location = response_redirect_location 867s status = response.status 867s 867s else: 867s # Incrementing because of a server error like a 500 in 867s # status_forcelist and the given method is in the allowed_methods 867s cause = ResponseError.GENERIC_ERROR 867s if response and response.status: 867s if status_count is not None: 867s status_count -= 1 867s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 867s status = response.status 867s 867s history = self.history + ( 867s RequestHistory(method, url, error, status, redirect_location), 867s ) 867s 867s new_retry = self.new( 867s total=total, 867s connect=connect, 867s read=read, 867s redirect=redirect, 867s status=status_count, 867s other=other, 867s history=history, 867s ) 867s 867s if new_retry.is_exhausted(): 867s reason = error or ResponseError(cause) 867s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 867s 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')) 867s 867s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 867s 867s During handling of the above exception, another exception occurred: 867s 867s def test_encoding_for_model(): 867s > enc = tiktoken.encoding_for_model("gpt2") 867s 867s tests/test_simple_public.py:26: 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 867s return get_encoding(encoding_name_for_model(model_name)) 867s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 867s enc = Encoding(**constructor()) 867s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 867s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 867s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 867s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 867s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 867s contents = read_file(blobpath) 867s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 867s resp = requests.get(blobpath) 867s /usr/lib/python3/dist-packages/requests/api.py:73: in get 867s return request("get", url, params=params, **kwargs) 867s /usr/lib/python3/dist-packages/requests/api.py:59: in request 867s return session.request(method=method, url=url, **kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 867s resp = self.send(prep, **send_kwargs) 867s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 867s r = adapter.send(request, **kwargs) 867s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867s 867s self = 867s request = , stream = False 867s timeout = Timeout(connect=None, read=None, total=None), verify = True 867s cert = None, proxies = OrderedDict() 867s 867s def send( 867s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 867s ): 867s """Sends PreparedRequest object. Returns Response object. 867s 867s :param request: The :class:`PreparedRequest ` being sent. 867s :param stream: (optional) Whether to stream the request content. 867s :param timeout: (optional) How long to wait for the server to send 867s data before giving up, as a float, or a :ref:`(connect timeout, 867s read timeout) ` tuple. 867s :type timeout: float or tuple or urllib3 Timeout object 867s :param verify: (optional) Either a boolean, in which case it controls whether 867s we verify the server's TLS certificate, or a string, in which case it 867s must be a path to a CA bundle to use 867s :param cert: (optional) Any user-provided SSL certificate to be trusted. 867s :param proxies: (optional) The proxies dictionary to apply to the request. 867s :rtype: requests.Response 867s """ 867s 867s try: 867s conn = self.get_connection_with_tls_context( 867s request, verify, proxies=proxies, cert=cert 867s ) 867s except LocationValueError as e: 867s raise InvalidURL(e, request=request) 867s 867s self.cert_verify(conn, request.url, verify, cert) 867s url = self.request_url(request, proxies) 867s self.add_headers( 867s request, 867s stream=stream, 867s timeout=timeout, 867s verify=verify, 867s cert=cert, 867s proxies=proxies, 867s ) 867s 867s chunked = not (request.body is None or "Content-Length" in request.headers) 867s 867s if isinstance(timeout, tuple): 867s try: 867s connect, read = timeout 867s timeout = TimeoutSauce(connect=connect, read=read) 867s except ValueError: 867s raise ValueError( 867s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 867s f"or a single float to set both timeouts to the same value." 867s ) 867s elif isinstance(timeout, TimeoutSauce): 867s pass 867s else: 867s timeout = TimeoutSauce(connect=timeout, read=timeout) 867s 867s try: 867s resp = conn.urlopen( 867s method=request.method, 867s url=url, 867s body=request.body, 867s headers=request.headers, 867s redirect=False, 867s assert_same_host=False, 867s preload_content=False, 867s decode_content=False, 867s retries=self.max_retries, 867s timeout=timeout, 867s chunked=chunked, 867s ) 867s 867s except (ProtocolError, OSError) as err: 867s raise ConnectionError(err, request=request) 867s 867s except MaxRetryError as e: 867s if isinstance(e.reason, ConnectTimeoutError): 867s # TODO: Remove this in 3.0.0: see #2811 867s if not isinstance(e.reason, NewConnectionError): 867s raise ConnectTimeout(e, request=request) 867s 867s if isinstance(e.reason, ResponseError): 867s raise RetryError(e, request=request) 867s 867s if isinstance(e.reason, _ProxyError): 867s raise ProxyError(e, request=request) 867s 867s if isinstance(e.reason, _SSLError): 867s # This branch is for urllib3 v1.22 and later. 867s raise SSLError(e, request=request) 867s 867s > raise ConnectionError(e, request=request) 867s 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')) 867s 867s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 867s =========================== short test summary info ============================ 867s FAILED tests/test_encoding.py::test_simple - requests.exceptions.ConnectionEr... 867s FAILED tests/test_encoding.py::test_simple_repeated - requests.exceptions.Con... 867s FAILED tests/test_encoding.py::test_simple_regex - requests.exceptions.Connec... 867s FAILED tests/test_encoding.py::test_basic_encode - requests.exceptions.Connec... 867s FAILED tests/test_encoding.py::test_encode_empty - requests.exceptions.Connec... 867s FAILED tests/test_encoding.py::test_encode_bytes - requests.exceptions.Connec... 867s FAILED tests/test_encoding.py::test_encode_surrogate_pairs - requests.excepti... 867s FAILED tests/test_encoding.py::test_catastrophically_repetitive[r50k_base] - ... 867s FAILED tests/test_encoding.py::test_catastrophically_repetitive[cl100k_base] 867s FAILED tests/test_encoding.py::test_basic_roundtrip[r50k_base] - requests.exc... 867s FAILED tests/test_encoding.py::test_basic_roundtrip[cl100k_base] - requests.e... 867s FAILED tests/test_encoding.py::test_hyp_roundtrip[r50k_base] - requests.excep... 867s FAILED tests/test_encoding.py::test_hyp_roundtrip[cl100k_base] - requests.exc... 867s FAILED tests/test_encoding.py::test_single_token_roundtrip[r50k_base] - reque... 867s FAILED tests/test_encoding.py::test_single_token_roundtrip[cl100k_base] - req... 867s FAILED tests/test_encoding.py::test_special_token - requests.exceptions.Conne... 867s FAILED tests/test_encoding.py::test_hyp_special_ordinary[r50k_base] - request... 867s FAILED tests/test_encoding.py::test_hyp_special_ordinary[cl100k_base] - reque... 867s FAILED tests/test_encoding.py::test_batch_encode[r50k_base] - requests.except... 867s FAILED tests/test_encoding.py::test_batch_encode[cl100k_base] - requests.exce... 867s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[r50k_base] - requests... 867s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[cl100k_base] - reques... 867s FAILED tests/test_misc.py::test_encoding_for_model - requests.exceptions.Conn... 867s FAILED tests/test_offsets.py::test_hyp_offsets[cl100k_base] - requests.except... 867s FAILED tests/test_offsets.py::test_basic_offsets - requests.exceptions.Connec... 867s FAILED tests/test_pickle.py::test_pickle - requests.exceptions.ConnectionErro... 867s FAILED tests/test_simple_public.py::test_simple - requests.exceptions.Connect... 867s FAILED tests/test_simple_public.py::test_encoding_for_model - requests.except... 867s =================== 28 failed, 2 passed in 589.67s (0:09:49) =================== 868s ============================= test session starts ============================== 868s platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0 868s rootdir: /tmp/autopkgtest.2NAS1E/autopkgtest_tmp/build 868s configfile: pyproject.toml 868s plugins: hypothesis-6.119.3, typeguard-4.4.1 868s collected 30 items 868s 895s tests/test_encoding.py FFFFFFFFFFFFFFFFFFFFFF [ 73%] 896s tests/test_misc.py F. [ 80%] 899s tests/test_offsets.py FF [ 86%] 900s tests/test_pickle.py F [ 90%] 902s tests/test_simple_public.py FF. [100%] 902s 902s =================================== FAILURES =================================== 902s _________________________________ test_simple __________________________________ 902s 902s self = 902s 902s def _new_conn(self) -> socket.socket: 902s """Establish a socket connection and set nodelay settings on it. 902s 902s :return: New socket connection. 902s """ 902s try: 902s > sock = connection.create_connection( 902s (self._dns_host, self.port), 902s self.timeout, 902s source_address=self.source_address, 902s socket_options=self.socket_options, 902s ) 902s 902s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 902s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 902s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 902s raise err 902s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 902s 902s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 902s source_address = None, socket_options = [(6, 1, 1)] 902s 902s def create_connection( 902s address: tuple[str, int], 902s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 902s source_address: tuple[str, int] | None = None, 902s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 902s ) -> socket.socket: 902s """Connect to *address* and return the socket object. 902s 902s Convenience function. Connect to *address* (a 2-tuple ``(host, 902s port)``) and return the socket object. Passing the optional 902s *timeout* parameter will set the timeout on the socket instance 902s before attempting to connect. If no *timeout* is supplied, the 902s global default timeout setting returned by :func:`socket.getdefaulttimeout` 902s is used. If *source_address* is set it must be a tuple of (host, port) 902s for the socket to bind as a source address before making the connection. 902s An host of '' or port 0 tells the OS to use the default. 902s """ 902s 902s host, port = address 902s if host.startswith("["): 902s host = host.strip("[]") 902s err = None 902s 902s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 902s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 902s # The original create_connection function always returns all records. 902s family = allowed_gai_family() 902s 902s try: 902s host.encode("idna") 902s except UnicodeError: 902s raise LocationParseError(f"'{host}', label empty or too long") from None 902s 902s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 902s af, socktype, proto, canonname, sa = res 902s sock = None 902s try: 902s sock = socket.socket(af, socktype, proto) 902s 902s # If provided, set socket level options before connecting. 902s _set_socket_options(sock, socket_options) 902s 902s if timeout is not _DEFAULT_TIMEOUT: 902s sock.settimeout(timeout) 902s if source_address: 902s sock.bind(source_address) 902s > sock.connect(sa) 902s E ConnectionRefusedError: [Errno 111] Connection refused 902s 902s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 902s 902s The above exception was the direct cause of the following exception: 902s 902s self = 902s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 902s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 902s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 902s redirect = False, assert_same_host = False 902s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 902s release_conn = False, chunked = False, body_pos = None, preload_content = False 902s decode_content = False, response_kw = {} 902s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 902s destination_scheme = None, conn = None, release_this_conn = True 902s http_tunnel_required = False, err = None, clean_exit = False 902s 902s def urlopen( # type: ignore[override] 902s self, 902s method: str, 902s url: str, 902s body: _TYPE_BODY | None = None, 902s headers: typing.Mapping[str, str] | None = None, 902s retries: Retry | bool | int | None = None, 902s redirect: bool = True, 902s assert_same_host: bool = True, 902s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 902s pool_timeout: int | None = None, 902s release_conn: bool | None = None, 902s chunked: bool = False, 902s body_pos: _TYPE_BODY_POSITION | None = None, 902s preload_content: bool = True, 902s decode_content: bool = True, 902s **response_kw: typing.Any, 902s ) -> BaseHTTPResponse: 902s """ 902s Get a connection from the pool and perform an HTTP request. This is the 902s lowest level call for making a request, so you'll need to specify all 902s the raw details. 902s 902s .. note:: 902s 902s More commonly, it's appropriate to use a convenience method 902s such as :meth:`request`. 902s 902s .. note:: 902s 902s `release_conn` will only behave as expected if 902s `preload_content=False` because we want to make 902s `preload_content=False` the default behaviour someday soon without 902s breaking backwards compatibility. 902s 902s :param method: 902s HTTP request method (such as GET, POST, PUT, etc.) 902s 902s :param url: 902s The URL to perform the request on. 902s 902s :param body: 902s Data to send in the request body, either :class:`str`, :class:`bytes`, 902s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 902s 902s :param headers: 902s Dictionary of custom headers to send, such as User-Agent, 902s If-None-Match, etc. If None, pool headers are used. If provided, 902s these headers completely replace any pool-specific headers. 902s 902s :param retries: 902s Configure the number of retries to allow before raising a 902s :class:`~urllib3.exceptions.MaxRetryError` exception. 902s 902s Pass ``None`` to retry until you receive a response. Pass a 902s :class:`~urllib3.util.retry.Retry` object for fine-grained control 902s over different types of retries. 902s Pass an integer number to retry connection errors that many times, 902s but no other types of errors. Pass zero to never retry. 902s 902s If ``False``, then retries are disabled and any exception is raised 902s immediately. Also, instead of raising a MaxRetryError on redirects, 902s the redirect response will be returned. 902s 902s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 902s 902s :param redirect: 902s If True, automatically handle redirects (status codes 301, 302, 902s 303, 307, 308). Each redirect counts as a retry. Disabling retries 902s will disable redirect, too. 902s 902s :param assert_same_host: 902s If ``True``, will make sure that the host of the pool requests is 902s consistent else will raise HostChangedError. When ``False``, you can 902s use the pool on an HTTP proxy and request foreign hosts. 902s 902s :param timeout: 902s If specified, overrides the default timeout for this one 902s request. It may be a float (in seconds) or an instance of 902s :class:`urllib3.util.Timeout`. 902s 902s :param pool_timeout: 902s If set and the pool is set to block=True, then this method will 902s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 902s connection is available within the time period. 902s 902s :param bool preload_content: 902s If True, the response's body will be preloaded into memory. 902s 902s :param bool decode_content: 902s If True, will attempt to decode the body based on the 902s 'content-encoding' header. 902s 902s :param release_conn: 902s If False, then the urlopen call will not release the connection 902s back into the pool once a response is received (but will release if 902s you read the entire contents of the response such as when 902s `preload_content=True`). This is useful if you're not preloading 902s the response's content immediately. You will need to call 902s ``r.release_conn()`` on the response ``r`` to return the connection 902s back into the pool. If None, it takes the value of ``preload_content`` 902s which defaults to ``True``. 902s 902s :param bool chunked: 902s If True, urllib3 will send the body using chunked transfer 902s encoding. Otherwise, urllib3 will send the body using the standard 902s content-length form. Defaults to False. 902s 902s :param int body_pos: 902s Position to seek to in file-like body in the event of a retry or 902s redirect. Typically this won't need to be set because urllib3 will 902s auto-populate the value when needed. 902s """ 902s parsed_url = parse_url(url) 902s destination_scheme = parsed_url.scheme 902s 902s if headers is None: 902s headers = self.headers 902s 902s if not isinstance(retries, Retry): 902s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 902s 902s if release_conn is None: 902s release_conn = preload_content 902s 902s # Check host 902s if assert_same_host and not self.is_same_host(url): 902s raise HostChangedError(self, url, retries) 902s 902s # Ensure that the URL we're connecting to is properly encoded 902s if url.startswith("/"): 902s url = to_str(_encode_target(url)) 902s else: 902s url = to_str(parsed_url.url) 902s 902s conn = None 902s 902s # Track whether `conn` needs to be released before 902s # returning/raising/recursing. Update this variable if necessary, and 902s # leave `release_conn` constant throughout the function. That way, if 902s # the function recurses, the original value of `release_conn` will be 902s # passed down into the recursive call, and its value will be respected. 902s # 902s # See issue #651 [1] for details. 902s # 902s # [1] 902s release_this_conn = release_conn 902s 902s http_tunnel_required = connection_requires_http_tunnel( 902s self.proxy, self.proxy_config, destination_scheme 902s ) 902s 902s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 902s # have to copy the headers dict so we can safely change it without those 902s # changes being reflected in anyone else's copy. 902s if not http_tunnel_required: 902s headers = headers.copy() # type: ignore[attr-defined] 902s headers.update(self.proxy_headers) # type: ignore[union-attr] 902s 902s # Must keep the exception bound to a separate variable or else Python 3 902s # complains about UnboundLocalError. 902s err = None 902s 902s # Keep track of whether we cleanly exited the except block. This 902s # ensures we do proper cleanup in finally. 902s clean_exit = False 902s 902s # Rewind body position, if needed. Record current position 902s # for future rewinds in the event of a redirect/retry. 902s body_pos = set_file_position(body, body_pos) 902s 902s try: 902s # Request a connection from the queue. 902s timeout_obj = self._get_timeout(timeout) 902s conn = self._get_conn(timeout=pool_timeout) 902s 902s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 902s 902s # Is this a closed/new connection that requires CONNECT tunnelling? 902s if self.proxy is not None and http_tunnel_required and conn.is_closed: 902s try: 902s self._prepare_proxy(conn) 902s except (BaseSSLError, OSError, SocketTimeout) as e: 902s self._raise_timeout( 902s err=e, url=self.proxy.url, timeout_value=conn.timeout 902s ) 902s raise 902s 902s # If we're going to release the connection in ``finally:``, then 902s # the response doesn't need to know about the connection. Otherwise 902s # it will also try to release it and we'll have a double-release 902s # mess. 902s response_conn = conn if not release_conn else None 902s 902s # Make the request on the HTTPConnection object 902s > response = self._make_request( 902s conn, 902s method, 902s url, 902s timeout=timeout_obj, 902s body=body, 902s headers=headers, 902s chunked=chunked, 902s retries=retries, 902s response_conn=response_conn, 902s preload_content=preload_content, 902s decode_content=decode_content, 902s **response_kw, 902s ) 902s 902s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 902s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 902s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 902s raise new_e 902s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 902s self._validate_conn(conn) 902s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 902s conn.connect() 902s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 902s self.sock = sock = self._new_conn() 902s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 902s 902s self = 902s 902s def _new_conn(self) -> socket.socket: 902s """Establish a socket connection and set nodelay settings on it. 902s 902s :return: New socket connection. 902s """ 902s try: 902s sock = connection.create_connection( 902s (self._dns_host, self.port), 902s self.timeout, 902s source_address=self.source_address, 902s socket_options=self.socket_options, 902s ) 902s except socket.gaierror as e: 902s raise NameResolutionError(self.host, self, e) from e 902s except SocketTimeout as e: 902s raise ConnectTimeoutError( 902s self, 902s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 902s ) from e 902s 902s except OSError as e: 902s > raise NewConnectionError( 902s self, f"Failed to establish a new connection: {e}" 902s ) from e 902s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 902s 902s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 902s 902s The above exception was the direct cause of the following exception: 902s 902s self = 902s request = , stream = False 902s timeout = Timeout(connect=None, read=None, total=None), verify = True 902s cert = None, proxies = OrderedDict() 902s 902s def send( 902s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 902s ): 902s """Sends PreparedRequest object. Returns Response object. 902s 902s :param request: The :class:`PreparedRequest ` being sent. 902s :param stream: (optional) Whether to stream the request content. 902s :param timeout: (optional) How long to wait for the server to send 902s data before giving up, as a float, or a :ref:`(connect timeout, 902s read timeout) ` tuple. 902s :type timeout: float or tuple or urllib3 Timeout object 902s :param verify: (optional) Either a boolean, in which case it controls whether 902s we verify the server's TLS certificate, or a string, in which case it 902s must be a path to a CA bundle to use 902s :param cert: (optional) Any user-provided SSL certificate to be trusted. 902s :param proxies: (optional) The proxies dictionary to apply to the request. 902s :rtype: requests.Response 902s """ 902s 902s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s def test_simple(): 903s > enc = tiktoken.get_encoding("gpt2") 903s 903s tests/test_encoding.py:15: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 903s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 903s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s _____________________________ test_simple_repeated _____________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s def test_simple_repeated(): 903s > enc = tiktoken.get_encoding("gpt2") 903s 903s tests/test_encoding.py:32: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 903s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 903s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ______________________________ test_simple_regex _______________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s def test_simple_regex(): 903s > enc = tiktoken.get_encoding("cl100k_base") 903s 903s tests/test_encoding.py:53: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ______________________________ test_basic_encode _______________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s def test_basic_encode(): 903s > enc = tiktoken.get_encoding("r50k_base") 903s 903s tests/test_encoding.py:62: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ______________________________ test_encode_empty _______________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s def test_encode_empty(): 903s > enc = tiktoken.get_encoding("r50k_base") 903s 903s tests/test_encoding.py:74: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ______________________________ test_encode_bytes _______________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s def test_encode_bytes(): 903s > enc = tiktoken.get_encoding("cl100k_base") 903s 903s tests/test_encoding.py:79: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s _________________________ test_encode_surrogate_pairs __________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s def test_encode_surrogate_pairs(): 903s > enc = tiktoken.get_encoding("cl100k_base") 903s 903s tests/test_encoding.py:84: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s _________________ test_catastrophically_repetitive[r50k_base] __________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'r50k_base') 903s 903s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 903s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 903s > enc = make_enc() 903s 903s tests/test_encoding.py:96: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ________________ test_catastrophically_repetitive[cl100k_base] _________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'cl100k_base') 903s 903s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 903s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 903s > enc = make_enc() 903s 903s tests/test_encoding.py:96: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s _______________________ test_basic_roundtrip[r50k_base] ________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'r50k_base') 903s 903s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 903s def test_basic_roundtrip(make_enc): 903s > enc = make_enc() 903s 903s tests/test_encoding.py:115: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ______________________ test_basic_roundtrip[cl100k_base] _______________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'cl100k_base') 903s 903s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 903s def test_basic_roundtrip(make_enc): 903s > enc = make_enc() 903s 903s tests/test_encoding.py:115: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ________________________ test_hyp_roundtrip[r50k_base] _________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'r50k_base') 903s 903s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 903s > @hypothesis.given(text=st.text()) 903s 903s tests/test_encoding.py:131: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s tests/test_encoding.py:134: in test_hyp_roundtrip 903s enc = make_enc() 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s E Falsifying example: test_hyp_roundtrip( 903s E make_enc=functools.partial(get_encoding, 'r50k_base'), 903s E text='', 903s E ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s _______________________ test_hyp_roundtrip[cl100k_base] ________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'cl100k_base') 903s 903s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 903s > @hypothesis.given(text=st.text()) 903s 903s tests/test_encoding.py:131: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s tests/test_encoding.py:134: in test_hyp_roundtrip 903s enc = make_enc() 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s E Falsifying example: test_hyp_roundtrip( 903s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 903s E text='', 903s E ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ____________________ test_single_token_roundtrip[r50k_base] ____________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'r50k_base') 903s 903s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 903s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 903s > enc = make_enc() 903s 903s tests/test_encoding.py:141: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ___________________ test_single_token_roundtrip[cl100k_base] ___________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'cl100k_base') 903s 903s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 903s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 903s > enc = make_enc() 903s 903s tests/test_encoding.py:141: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ______________________________ test_special_token ______________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s def test_special_token(): 903s > enc = tiktoken.get_encoding("cl100k_base") 903s 903s tests/test_encoding.py:157: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s _____________________ test_hyp_special_ordinary[r50k_base] _____________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'r50k_base') 903s 903s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 903s > @hypothesis.given(text=st.text()) 903s 903s tests/test_encoding.py:208: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s tests/test_encoding.py:211: in test_hyp_special_ordinary 903s enc = make_enc() 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s E Falsifying example: test_hyp_special_ordinary( 903s E make_enc=functools.partial(get_encoding, 'r50k_base'), 903s E text='', 903s E ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ____________________ test_hyp_special_ordinary[cl100k_base] ____________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'cl100k_base') 903s 903s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 903s > @hypothesis.given(text=st.text()) 903s 903s tests/test_encoding.py:208: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s tests/test_encoding.py:211: in test_hyp_special_ordinary 903s enc = make_enc() 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s E Falsifying example: test_hyp_special_ordinary( 903s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 903s E text='', 903s E ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s _________________________ test_batch_encode[r50k_base] _________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'r50k_base') 903s 903s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 903s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 903s > enc = make_enc() 903s 903s tests/test_encoding.py:222: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ________________________ test_batch_encode[cl100k_base] ________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'cl100k_base') 903s 903s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 903s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 903s > enc = make_enc() 903s 903s tests/test_encoding.py:222: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s _____________________ test_hyp_batch_roundtrip[r50k_base] ______________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.2NAS1E/autopkgtest_tmp/build; python3.12 -m pytest tests 903s new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'r50k_base') 903s 903s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 903s > @hypothesis.given(batch=st.lists(st.text())) 903s 903s tests/test_encoding.py:237: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 903s enc = make_enc() 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s E Falsifying example: test_hyp_batch_roundtrip( 903s E make_enc=functools.partial(get_encoding, 'r50k_base'), 903s E batch=[], 903s E ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ____________________ test_hyp_batch_roundtrip[cl100k_base] _____________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'cl100k_base') 903s 903s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 903s > @hypothesis.given(batch=st.lists(st.text())) 903s 903s tests/test_encoding.py:237: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 903s enc = make_enc() 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s E Falsifying example: test_hyp_batch_roundtrip( 903s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 903s E batch=[], 903s E ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ___________________________ test_encoding_for_model ____________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s sourpybuild-autopkgtest: error: pybuild --autopkgtest --test-pytest -i python{version} -p "3.13 3.12" returned exit code 13 903s make: *** [/tmp/V11U6xQaKd/run:4: pybuild-autopkgtest] Error 25 903s pybuild-autopkgtest: error: /tmp/V11U6xQaKd/run pybuild-autopkgtest returned exit code 2 903s ce_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s def test_encoding_for_model(): 903s > enc = tiktoken.encoding_for_model("gpt2") 903s 903s tests/test_misc.py:8: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 903s return get_encoding(encoding_name_for_model(model_name)) 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 903s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 903s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ________________________ test_hyp_offsets[cl100k_base] _________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s make_enc = functools.partial(, 'cl100k_base') 903s 903s @pytest.mark.parametrize("make_enc", SOME_ENCODING_FACTORIES) 903s > @hypothesis.given(data=st.data()) 903s 903s tests/test_offsets.py:29: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s tests/test_offsets.py:32: in test_hyp_offsets 903s enc = make_enc() 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s E Falsifying example: test_hyp_offsets( 903s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 903s E data=data(...), 903s E ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ______________________________ test_basic_offsets ______________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s def test_basic_offsets(): 903s > enc = tiktoken.get_encoding("cl100k_base") 903s 903s tests/test_offsets.py:50: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s _________________________________ test_pickle __________________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s def test_pickle(): 903s import pickle 903s 903s > enc_old = tiktoken.get_encoding("r50k_base") 903s 903s tests/test_pickle.py:7: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 903s mergeable_ranks = load_tiktoken_bpe( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 903s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s _________________________________ test_simple __________________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s def test_simple(): 903s # Note that there are more actual tests, they're just not currently public :-) 903s > enc = tiktoken.get_encoding("gpt2") 903s 903s tests/test_simple_public.py:9: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 903s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 903s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s ___________________________ test_encoding_for_model ____________________________ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s > sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 903s raise err 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 903s source_address = None, socket_options = [(6, 1, 1)] 903s 903s def create_connection( 903s address: tuple[str, int], 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s source_address: tuple[str, int] | None = None, 903s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 903s ) -> socket.socket: 903s """Connect to *address* and return the socket object. 903s 903s Convenience function. Connect to *address* (a 2-tuple ``(host, 903s port)``) and return the socket object. Passing the optional 903s *timeout* parameter will set the timeout on the socket instance 903s before attempting to connect. If no *timeout* is supplied, the 903s global default timeout setting returned by :func:`socket.getdefaulttimeout` 903s is used. If *source_address* is set it must be a tuple of (host, port) 903s for the socket to bind as a source address before making the connection. 903s An host of '' or port 0 tells the OS to use the default. 903s """ 903s 903s host, port = address 903s if host.startswith("["): 903s host = host.strip("[]") 903s err = None 903s 903s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 903s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 903s # The original create_connection function always returns all records. 903s family = allowed_gai_family() 903s 903s try: 903s host.encode("idna") 903s except UnicodeError: 903s raise LocationParseError(f"'{host}', label empty or too long") from None 903s 903s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 903s af, socktype, proto, canonname, sa = res 903s sock = None 903s try: 903s sock = socket.socket(af, socktype, proto) 903s 903s # If provided, set socket level options before connecting. 903s _set_socket_options(sock, socket_options) 903s 903s if timeout is not _DEFAULT_TIMEOUT: 903s sock.settimeout(timeout) 903s if source_address: 903s sock.bind(source_address) 903s > sock.connect(sa) 903s E ConnectionRefusedError: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 903s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 903s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s redirect = False, assert_same_host = False 903s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 903s release_conn = False, chunked = False, body_pos = None, preload_content = False 903s decode_content = False, response_kw = {} 903s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 903s destination_scheme = None, conn = None, release_this_conn = True 903s http_tunnel_required = False, err = None, clean_exit = False 903s 903s def urlopen( # type: ignore[override] 903s self, 903s method: str, 903s url: str, 903s body: _TYPE_BODY | None = None, 903s headers: typing.Mapping[str, str] | None = None, 903s retries: Retry | bool | int | None = None, 903s redirect: bool = True, 903s assert_same_host: bool = True, 903s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 903s pool_timeout: int | None = None, 903s release_conn: bool | None = None, 903s chunked: bool = False, 903s body_pos: _TYPE_BODY_POSITION | None = None, 903s preload_content: bool = True, 903s decode_content: bool = True, 903s **response_kw: typing.Any, 903s ) -> BaseHTTPResponse: 903s """ 903s Get a connection from the pool and perform an HTTP request. This is the 903s lowest level call for making a request, so you'll need to specify all 903s the raw details. 903s 903s .. note:: 903s 903s More commonly, it's appropriate to use a convenience method 903s such as :meth:`request`. 903s 903s .. note:: 903s 903s `release_conn` will only behave as expected if 903s `preload_content=False` because we want to make 903s `preload_content=False` the default behaviour someday soon without 903s breaking backwards compatibility. 903s 903s :param method: 903s HTTP request method (such as GET, POST, PUT, etc.) 903s 903s :param url: 903s The URL to perform the request on. 903s 903s :param body: 903s Data to send in the request body, either :class:`str`, :class:`bytes`, 903s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 903s 903s :param headers: 903s Dictionary of custom headers to send, such as User-Agent, 903s If-None-Match, etc. If None, pool headers are used. If provided, 903s these headers completely replace any pool-specific headers. 903s 903s :param retries: 903s Configure the number of retries to allow before raising a 903s :class:`~urllib3.exceptions.MaxRetryError` exception. 903s 903s Pass ``None`` to retry until you receive a response. Pass a 903s :class:`~urllib3.util.retry.Retry` object for fine-grained control 903s over different types of retries. 903s Pass an integer number to retry connection errors that many times, 903s but no other types of errors. Pass zero to never retry. 903s 903s If ``False``, then retries are disabled and any exception is raised 903s immediately. Also, instead of raising a MaxRetryError on redirects, 903s the redirect response will be returned. 903s 903s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 903s 903s :param redirect: 903s If True, automatically handle redirects (status codes 301, 302, 903s 303, 307, 308). Each redirect counts as a retry. Disabling retries 903s will disable redirect, too. 903s 903s :param assert_same_host: 903s If ``True``, will make sure that the host of the pool requests is 903s consistent else will raise HostChangedError. When ``False``, you can 903s use the pool on an HTTP proxy and request foreign hosts. 903s 903s :param timeout: 903s If specified, overrides the default timeout for this one 903s request. It may be a float (in seconds) or an instance of 903s :class:`urllib3.util.Timeout`. 903s 903s :param pool_timeout: 903s If set and the pool is set to block=True, then this method will 903s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 903s connection is available within the time period. 903s 903s :param bool preload_content: 903s If True, the response's body will be preloaded into memory. 903s 903s :param bool decode_content: 903s If True, will attempt to decode the body based on the 903s 'content-encoding' header. 903s 903s :param release_conn: 903s If False, then the urlopen call will not release the connection 903s back into the pool once a response is received (but will release if 903s you read the entire contents of the response such as when 903s `preload_content=True`). This is useful if you're not preloading 903s the response's content immediately. You will need to call 903s ``r.release_conn()`` on the response ``r`` to return the connection 903s back into the pool. If None, it takes the value of ``preload_content`` 903s which defaults to ``True``. 903s 903s :param bool chunked: 903s If True, urllib3 will send the body using chunked transfer 903s encoding. Otherwise, urllib3 will send the body using the standard 903s content-length form. Defaults to False. 903s 903s :param int body_pos: 903s Position to seek to in file-like body in the event of a retry or 903s redirect. Typically this won't need to be set because urllib3 will 903s auto-populate the value when needed. 903s """ 903s parsed_url = parse_url(url) 903s destination_scheme = parsed_url.scheme 903s 903s if headers is None: 903s headers = self.headers 903s 903s if not isinstance(retries, Retry): 903s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 903s 903s if release_conn is None: 903s release_conn = preload_content 903s 903s # Check host 903s if assert_same_host and not self.is_same_host(url): 903s raise HostChangedError(self, url, retries) 903s 903s # Ensure that the URL we're connecting to is properly encoded 903s if url.startswith("/"): 903s url = to_str(_encode_target(url)) 903s else: 903s url = to_str(parsed_url.url) 903s 903s conn = None 903s 903s # Track whether `conn` needs to be released before 903s # returning/raising/recursing. Update this variable if necessary, and 903s # leave `release_conn` constant throughout the function. That way, if 903s # the function recurses, the original value of `release_conn` will be 903s # passed down into the recursive call, and its value will be respected. 903s # 903s # See issue #651 [1] for details. 903s # 903s # [1] 903s release_this_conn = release_conn 903s 903s http_tunnel_required = connection_requires_http_tunnel( 903s self.proxy, self.proxy_config, destination_scheme 903s ) 903s 903s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 903s # have to copy the headers dict so we can safely change it without those 903s # changes being reflected in anyone else's copy. 903s if not http_tunnel_required: 903s headers = headers.copy() # type: ignore[attr-defined] 903s headers.update(self.proxy_headers) # type: ignore[union-attr] 903s 903s # Must keep the exception bound to a separate variable or else Python 3 903s # complains about UnboundLocalError. 903s err = None 903s 903s # Keep track of whether we cleanly exited the except block. This 903s # ensures we do proper cleanup in finally. 903s clean_exit = False 903s 903s # Rewind body position, if needed. Record current position 903s # for future rewinds in the event of a redirect/retry. 903s body_pos = set_file_position(body, body_pos) 903s 903s try: 903s # Request a connection from the queue. 903s timeout_obj = self._get_timeout(timeout) 903s conn = self._get_conn(timeout=pool_timeout) 903s 903s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 903s 903s # Is this a closed/new connection that requires CONNECT tunnelling? 903s if self.proxy is not None and http_tunnel_required and conn.is_closed: 903s try: 903s self._prepare_proxy(conn) 903s except (BaseSSLError, OSError, SocketTimeout) as e: 903s self._raise_timeout( 903s err=e, url=self.proxy.url, timeout_value=conn.timeout 903s ) 903s raise 903s 903s # If we're going to release the connection in ``finally:``, then 903s # the response doesn't need to know about the connection. Otherwise 903s # it will also try to release it and we'll have a double-release 903s # mess. 903s response_conn = conn if not release_conn else None 903s 903s # Make the request on the HTTPConnection object 903s > response = self._make_request( 903s conn, 903s method, 903s url, 903s timeout=timeout_obj, 903s body=body, 903s headers=headers, 903s chunked=chunked, 903s retries=retries, 903s response_conn=response_conn, 903s preload_content=preload_content, 903s decode_content=decode_content, 903s **response_kw, 903s ) 903s 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 903s raise new_e 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 903s self._validate_conn(conn) 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 903s conn.connect() 903s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 903s self.sock = sock = self._new_conn() 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s 903s def _new_conn(self) -> socket.socket: 903s """Establish a socket connection and set nodelay settings on it. 903s 903s :return: New socket connection. 903s """ 903s try: 903s sock = connection.create_connection( 903s (self._dns_host, self.port), 903s self.timeout, 903s source_address=self.source_address, 903s socket_options=self.socket_options, 903s ) 903s except socket.gaierror as e: 903s raise NameResolutionError(self.host, self, e) from e 903s except SocketTimeout as e: 903s raise ConnectTimeoutError( 903s self, 903s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 903s ) from e 903s 903s except OSError as e: 903s > raise NewConnectionError( 903s self, f"Failed to establish a new connection: {e}" 903s ) from e 903s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 903s 903s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 903s 903s The above exception was the direct cause of the following exception: 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s > resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:667: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 903s retries = retries.increment( 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 903s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 903s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 903s _pool = 903s _stacktrace = 903s 903s def increment( 903s self, 903s method: str | None = None, 903s url: str | None = None, 903s response: BaseHTTPResponse | None = None, 903s error: Exception | None = None, 903s _pool: ConnectionPool | None = None, 903s _stacktrace: TracebackType | None = None, 903s ) -> Retry: 903s """Return a new Retry object with incremented retry counters. 903s 903s :param response: A response object, or None, if the server did not 903s return a response. 903s :type response: :class:`~urllib3.response.BaseHTTPResponse` 903s :param Exception error: An error encountered during the request, or 903s None if the response was received successfully. 903s 903s :return: A new ``Retry`` object. 903s """ 903s if self.total is False and error: 903s # Disabled, indicate to re-raise the error. 903s raise reraise(type(error), error, _stacktrace) 903s 903s total = self.total 903s if total is not None: 903s total -= 1 903s 903s connect = self.connect 903s read = self.read 903s redirect = self.redirect 903s status_count = self.status 903s other = self.other 903s cause = "unknown" 903s status = None 903s redirect_location = None 903s 903s if error and self._is_connection_error(error): 903s # Connect retry? 903s if connect is False: 903s raise reraise(type(error), error, _stacktrace) 903s elif connect is not None: 903s connect -= 1 903s 903s elif error and self._is_read_error(error): 903s # Read retry? 903s if read is False or method is None or not self._is_method_retryable(method): 903s raise reraise(type(error), error, _stacktrace) 903s elif read is not None: 903s read -= 1 903s 903s elif error: 903s # Other retry? 903s if other is not None: 903s other -= 1 903s 903s elif response and response.get_redirect_location(): 903s # Redirect retry? 903s if redirect is not None: 903s redirect -= 1 903s cause = "too many redirects" 903s response_redirect_location = response.get_redirect_location() 903s if response_redirect_location: 903s redirect_location = response_redirect_location 903s status = response.status 903s 903s else: 903s # Incrementing because of a server error like a 500 in 903s # status_forcelist and the given method is in the allowed_methods 903s cause = ResponseError.GENERIC_ERROR 903s if response and response.status: 903s if status_count is not None: 903s status_count -= 1 903s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 903s status = response.status 903s 903s history = self.history + ( 903s RequestHistory(method, url, error, status, redirect_location), 903s ) 903s 903s new_retry = self.new( 903s total=total, 903s connect=connect, 903s read=read, 903s redirect=redirect, 903s status=status_count, 903s other=other, 903s history=history, 903s ) 903s 903s if new_retry.is_exhausted(): 903s reason = error or ResponseError(cause) 903s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 903s 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')) 903s 903s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 903s 903s During handling of the above exception, another exception occurred: 903s 903s def test_encoding_for_model(): 903s > enc = tiktoken.encoding_for_model("gpt2") 903s 903s tests/test_simple_public.py:26: 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 903s return get_encoding(encoding_name_for_model(model_name)) 903s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 903s enc = Encoding(**constructor()) 903s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 903s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 903s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 903s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 903s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 903s contents = read_file(blobpath) 903s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 903s resp = requests.get(blobpath) 903s /usr/lib/python3/dist-packages/requests/api.py:73: in get 903s return request("get", url, params=params, **kwargs) 903s /usr/lib/python3/dist-packages/requests/api.py:59: in request 903s return session.request(method=method, url=url, **kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 903s resp = self.send(prep, **send_kwargs) 903s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 903s r = adapter.send(request, **kwargs) 903s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 903s 903s self = 903s request = , stream = False 903s timeout = Timeout(connect=None, read=None, total=None), verify = True 903s cert = None, proxies = OrderedDict() 903s 903s def send( 903s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 903s ): 903s """Sends PreparedRequest object. Returns Response object. 903s 903s :param request: The :class:`PreparedRequest ` being sent. 903s :param stream: (optional) Whether to stream the request content. 903s :param timeout: (optional) How long to wait for the server to send 903s data before giving up, as a float, or a :ref:`(connect timeout, 903s read timeout) ` tuple. 903s :type timeout: float or tuple or urllib3 Timeout object 903s :param verify: (optional) Either a boolean, in which case it controls whether 903s we verify the server's TLS certificate, or a string, in which case it 903s must be a path to a CA bundle to use 903s :param cert: (optional) Any user-provided SSL certificate to be trusted. 903s :param proxies: (optional) The proxies dictionary to apply to the request. 903s :rtype: requests.Response 903s """ 903s 903s try: 903s conn = self.get_connection_with_tls_context( 903s request, verify, proxies=proxies, cert=cert 903s ) 903s except LocationValueError as e: 903s raise InvalidURL(e, request=request) 903s 903s self.cert_verify(conn, request.url, verify, cert) 903s url = self.request_url(request, proxies) 903s self.add_headers( 903s request, 903s stream=stream, 903s timeout=timeout, 903s verify=verify, 903s cert=cert, 903s proxies=proxies, 903s ) 903s 903s chunked = not (request.body is None or "Content-Length" in request.headers) 903s 903s if isinstance(timeout, tuple): 903s try: 903s connect, read = timeout 903s timeout = TimeoutSauce(connect=connect, read=read) 903s except ValueError: 903s raise ValueError( 903s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 903s f"or a single float to set both timeouts to the same value." 903s ) 903s elif isinstance(timeout, TimeoutSauce): 903s pass 903s else: 903s timeout = TimeoutSauce(connect=timeout, read=timeout) 903s 903s try: 903s resp = conn.urlopen( 903s method=request.method, 903s url=url, 903s body=request.body, 903s headers=request.headers, 903s redirect=False, 903s assert_same_host=False, 903s preload_content=False, 903s decode_content=False, 903s retries=self.max_retries, 903s timeout=timeout, 903s chunked=chunked, 903s ) 903s 903s except (ProtocolError, OSError) as err: 903s raise ConnectionError(err, request=request) 903s 903s except MaxRetryError as e: 903s if isinstance(e.reason, ConnectTimeoutError): 903s # TODO: Remove this in 3.0.0: see #2811 903s if not isinstance(e.reason, NewConnectionError): 903s raise ConnectTimeout(e, request=request) 903s 903s if isinstance(e.reason, ResponseError): 903s raise RetryError(e, request=request) 903s 903s if isinstance(e.reason, _ProxyError): 903s raise ProxyError(e, request=request) 903s 903s if isinstance(e.reason, _SSLError): 903s # This branch is for urllib3 v1.22 and later. 903s raise SSLError(e, request=request) 903s 903s > raise ConnectionError(e, request=request) 903s 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')) 903s 903s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 903s =========================== short test summary info ============================ 903s FAILED tests/test_encoding.py::test_simple - requests.exceptions.ConnectionEr... 903s FAILED tests/test_encoding.py::test_simple_repeated - requests.exceptions.Con... 903s FAILED tests/test_encoding.py::test_simple_regex - requests.exceptions.Connec... 903s FAILED tests/test_encoding.py::test_basic_encode - requests.exceptions.Connec... 903s FAILED tests/test_encoding.py::test_encode_empty - requests.exceptions.Connec... 903s FAILED tests/test_encoding.py::test_encode_bytes - requests.exceptions.Connec... 903s FAILED tests/test_encoding.py::test_encode_surrogate_pairs - requests.excepti... 903s FAILED tests/test_encoding.py::test_catastrophically_repetitive[r50k_base] - ... 903s FAILED tests/test_encoding.py::test_catastrophically_repetitive[cl100k_base] 903s FAILED tests/test_encoding.py::test_basic_roundtrip[r50k_base] - requests.exc... 903s FAILED tests/test_encoding.py::test_basic_roundtrip[cl100k_base] - requests.e... 903s FAILED tests/test_encoding.py::test_hyp_roundtrip[r50k_base] - requests.excep... 903s FAILED tests/test_encoding.py::test_hyp_roundtrip[cl100k_base] - requests.exc... 903s FAILED tests/test_encoding.py::test_single_token_roundtrip[r50k_base] - reque... 903s FAILED tests/test_encoding.py::test_single_token_roundtrip[cl100k_base] - req... 903s FAILED tests/test_encoding.py::test_special_token - requests.exceptions.Conne... 903s FAILED tests/test_encoding.py::test_hyp_special_ordinary[r50k_base] - request... 903s FAILED tests/test_encoding.py::test_hyp_special_ordinary[cl100k_base] - reque... 903s FAILED tests/test_encoding.py::test_batch_encode[r50k_base] - requests.except... 903s FAILED tests/test_encoding.py::test_batch_encode[cl100k_base] - requests.exce... 903s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[r50k_base] - requests... 903s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[cl100k_base] - reques... 903s FAILED tests/test_misc.py::test_encoding_for_model - requests.exceptions.Conn... 903s FAILED tests/test_offsets.py::test_hyp_offsets[cl100k_base] - requests.except... 903s FAILED tests/test_offsets.py::test_basic_offsets - requests.exceptions.Connec... 903s FAILED tests/test_pickle.py::test_pickle - requests.exceptions.ConnectionErro... 903s FAILED tests/test_simple_public.py::test_simple - requests.exceptions.Connect... 903s FAILED tests/test_simple_public.py::test_encoding_for_model - requests.except... 903s ======================== 28 failed, 2 passed in 35.04s ========================= 903s autopkgtest [20:46:02]: test pybuild-autopkgtest: -----------------------] 904s autopkgtest [20:46:03]: test pybuild-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 904s pybuild-autopkgtest FAIL non-zero exit status 25 904s autopkgtest [20:46:03]: @@@@@@@@@@@@@@@@@@@@ summary 904s pybuild-autopkgtest FAIL non-zero exit status 25 916s virt: nova [W] Skipping flock in bos03-arm64 916s virt: Creating nova instance adt-plucky-arm64-tiktoken-20241123-203059-juju-7f2275-prod-proposed-migration-environment-2-707bcee9-8583-4c05-b683-3c793d25e2e9 from image adt/ubuntu-plucky-arm64-server-20241119.img (UUID 254dc414-4366-404b-b85c-a4e26b3194ad)...