0s autopkgtest [22:17:11]: starting date and time: 2024-11-23 22:17:11+0000 0s autopkgtest [22:17:11]: git checkout: 6f3be7a8 Fix armhf LXD image generation for plucky 0s autopkgtest [22:17:11]: host juju-7f2275-prod-proposed-migration-environment-20; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.ovu47if1/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-ppc64el --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-20@bos03-ppc64el-19.secgroup --name adt-plucky-ppc64el-tiktoken-20241123-221711-juju-7f2275-prod-proposed-migration-environment-20-f61a6632-cac1-4435-8b7d-0b22ce822999 --image adt/ubuntu-plucky-ppc64el-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-20 --net-id=net_prod-proposed-migration-ppc64el -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/ 70s autopkgtest [22:18:21]: testbed dpkg architecture: ppc64el 70s autopkgtest [22:18:21]: testbed apt version: 2.9.8 70s autopkgtest [22:18:21]: @@@@@@@@@@@@@@@@@@@@ test bed setup 71s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease [73.9 kB] 71s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/universe Sources [908 kB] 72s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/main Sources [50.6 kB] 72s Get:4 http://ftpmaster.internal/ubuntu plucky-proposed/restricted Sources [9704 B] 72s Get:5 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse Sources [13.6 kB] 72s Get:6 http://ftpmaster.internal/ubuntu plucky-proposed/main ppc64el Packages [62.6 kB] 72s Get:7 http://ftpmaster.internal/ubuntu plucky-proposed/restricted ppc64el Packages [756 B] 72s Get:8 http://ftpmaster.internal/ubuntu plucky-proposed/universe ppc64el Packages [765 kB] 72s Get:9 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse ppc64el Packages [9468 B] 72s Fetched 1893 kB in 1s (1369 kB/s) 72s Reading package lists... 75s Reading package lists... 75s Building dependency tree... 75s Reading state information... 75s Calculating upgrade... 75s The following package was automatically installed and is no longer required: 75s libsgutils2-1.46-2 75s Use 'sudo apt autoremove' to remove it. 75s The following NEW packages will be installed: 75s libsgutils2-1.48 75s The following packages will be upgraded: 75s bash bpftrace curl debconf debconf-i18n distro-info dracut-install 75s gir1.2-girepository-2.0 gir1.2-glib-2.0 hostname init init-system-helpers 75s libaudit-common libaudit1 libcurl3t64-gnutls libcurl4t64 75s libgirepository-1.0-1 libglib2.0-0t64 libglib2.0-data liblzma5 75s libpam-modules libpam-modules-bin libpam-runtime libpam0g libplymouth5 75s libpython3-stdlib libselinux1 libsemanage-common libsemanage2 linux-base 75s lsvpd lxd-installer openssh-client openssh-server openssh-sftp-server 75s pinentry-curses plymouth plymouth-theme-ubuntu-text python3 python3-blinker 75s python3-dbus python3-debconf python3-gi python3-jsonschema-specifications 75s python3-minimal python3-rpds-py python3-yaml sg3-utils sg3-utils-udev 75s vim-common vim-tiny xxd xz-utils 75s 53 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 75s Need to get 14.1 MB of archives. 75s After this operation, 3675 kB of additional disk space will be used. 75s Get:1 http://ftpmaster.internal/ubuntu plucky/main ppc64el bash ppc64el 5.2.32-1ubuntu2 [979 kB] 76s Get:2 http://ftpmaster.internal/ubuntu plucky/main ppc64el hostname ppc64el 3.25 [11.3 kB] 76s Get:3 http://ftpmaster.internal/ubuntu plucky/main ppc64el init-system-helpers all 1.67ubuntu1 [39.1 kB] 76s Get:4 http://ftpmaster.internal/ubuntu plucky/main ppc64el libaudit-common all 1:4.0.2-2ubuntu1 [6578 B] 76s Get:5 http://ftpmaster.internal/ubuntu plucky/main ppc64el libaudit1 ppc64el 1:4.0.2-2ubuntu1 [59.6 kB] 76s Get:6 http://ftpmaster.internal/ubuntu plucky/main ppc64el debconf-i18n all 1.5.87ubuntu1 [204 kB] 76s Get:7 http://ftpmaster.internal/ubuntu plucky-proposed/main ppc64el python3-minimal ppc64el 3.12.7-1 [27.4 kB] 76s Get:8 http://ftpmaster.internal/ubuntu plucky-proposed/main ppc64el python3 ppc64el 3.12.7-1 [24.0 kB] 76s Get:9 http://ftpmaster.internal/ubuntu plucky-proposed/main ppc64el libpython3-stdlib ppc64el 3.12.7-1 [10.0 kB] 76s Get:10 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3-debconf all 1.5.87ubuntu1 [4156 B] 76s Get:11 http://ftpmaster.internal/ubuntu plucky/main ppc64el debconf all 1.5.87ubuntu1 [124 kB] 76s Get:12 http://ftpmaster.internal/ubuntu plucky/main ppc64el libpam0g ppc64el 1.5.3-7ubuntu4 [76.2 kB] 76s Get:13 http://ftpmaster.internal/ubuntu plucky/main ppc64el libselinux1 ppc64el 3.7-3ubuntu1 [100 kB] 76s Get:14 http://ftpmaster.internal/ubuntu plucky/main ppc64el libpam-modules-bin ppc64el 1.5.3-7ubuntu4 [57.6 kB] 76s Get:15 http://ftpmaster.internal/ubuntu plucky/main ppc64el libpam-modules ppc64el 1.5.3-7ubuntu4 [325 kB] 76s Get:16 http://ftpmaster.internal/ubuntu plucky/main ppc64el init ppc64el 1.67ubuntu1 [6432 B] 76s Get:17 http://ftpmaster.internal/ubuntu plucky/main ppc64el openssh-sftp-server ppc64el 1:9.9p1-3ubuntu2 [43.4 kB] 76s Get:18 http://ftpmaster.internal/ubuntu plucky/main ppc64el openssh-server ppc64el 1:9.9p1-3ubuntu2 [680 kB] 76s Get:19 http://ftpmaster.internal/ubuntu plucky/main ppc64el openssh-client ppc64el 1:9.9p1-3ubuntu2 [1169 kB] 76s Get:20 http://ftpmaster.internal/ubuntu plucky/main ppc64el libpam-runtime all 1.5.3-7ubuntu4 [40.8 kB] 76s Get:21 http://ftpmaster.internal/ubuntu plucky/main ppc64el liblzma5 ppc64el 5.6.3-1 [172 kB] 76s Get:22 http://ftpmaster.internal/ubuntu plucky/main ppc64el libsemanage-common all 3.7-2build1 [7186 B] 76s Get:23 http://ftpmaster.internal/ubuntu plucky/main ppc64el libsemanage2 ppc64el 3.7-2build1 [115 kB] 76s Get:24 http://ftpmaster.internal/ubuntu plucky/main ppc64el distro-info ppc64el 1.12 [20.0 kB] 76s Get:25 http://ftpmaster.internal/ubuntu plucky/main ppc64el gir1.2-girepository-2.0 ppc64el 1.82.0-2 [25.3 kB] 76s Get:26 http://ftpmaster.internal/ubuntu plucky/main ppc64el gir1.2-glib-2.0 ppc64el 2.82.2-3 [182 kB] 76s Get:27 http://ftpmaster.internal/ubuntu plucky/main ppc64el libglib2.0-0t64 ppc64el 2.82.2-3 [1787 kB] 77s Get:28 http://ftpmaster.internal/ubuntu plucky/main ppc64el libgirepository-1.0-1 ppc64el 1.82.0-2 [95.5 kB] 77s Get:29 http://ftpmaster.internal/ubuntu plucky/main ppc64el libglib2.0-data all 2.82.2-3 [51.7 kB] 77s Get:30 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3-dbus ppc64el 1.3.2-5build4 [117 kB] 77s Get:31 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3-gi ppc64el 3.50.0-3build1 [308 kB] 77s Get:32 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3-yaml ppc64el 6.0.2-1build1 [180 kB] 77s Get:33 http://ftpmaster.internal/ubuntu plucky/main ppc64el vim-tiny ppc64el 2:9.1.0861-1ubuntu1 [1078 kB] 77s Get:34 http://ftpmaster.internal/ubuntu plucky/main ppc64el vim-common all 2:9.1.0861-1ubuntu1 [395 kB] 77s Get:35 http://ftpmaster.internal/ubuntu plucky/main ppc64el xxd ppc64el 2:9.1.0861-1ubuntu1 [67.9 kB] 77s Get:36 http://ftpmaster.internal/ubuntu plucky/main ppc64el libplymouth5 ppc64el 24.004.60-2ubuntu3 [169 kB] 77s Get:37 http://ftpmaster.internal/ubuntu plucky/main ppc64el libsgutils2-1.48 ppc64el 1.48-0ubuntu1 [133 kB] 77s Get:38 http://ftpmaster.internal/ubuntu plucky/main ppc64el lsvpd ppc64el 1.7.14-1ubuntu3 [162 kB] 77s Get:39 http://ftpmaster.internal/ubuntu plucky/main ppc64el plymouth-theme-ubuntu-text ppc64el 24.004.60-2ubuntu3 [11.1 kB] 77s Get:40 http://ftpmaster.internal/ubuntu plucky/main ppc64el plymouth ppc64el 24.004.60-2ubuntu3 [152 kB] 77s Get:41 http://ftpmaster.internal/ubuntu plucky/main ppc64el xz-utils ppc64el 5.6.3-1 [280 kB] 77s Get:42 http://ftpmaster.internal/ubuntu plucky/main ppc64el bpftrace ppc64el 0.21.2-2ubuntu3 [1898 kB] 77s Get:43 http://ftpmaster.internal/ubuntu plucky/main ppc64el curl ppc64el 8.9.1-2ubuntu3 [247 kB] 77s Get:44 http://ftpmaster.internal/ubuntu plucky/main ppc64el libcurl4t64 ppc64el 8.9.1-2ubuntu3 [464 kB] 77s Get:45 http://ftpmaster.internal/ubuntu plucky/main ppc64el dracut-install ppc64el 105-2ubuntu2 [38.5 kB] 77s Get:46 http://ftpmaster.internal/ubuntu plucky/main ppc64el libcurl3t64-gnutls ppc64el 8.9.1-2ubuntu3 [461 kB] 77s Get:47 http://ftpmaster.internal/ubuntu plucky/main ppc64el linux-base all 4.10.1ubuntu1 [34.8 kB] 77s Get:48 http://ftpmaster.internal/ubuntu plucky/main ppc64el lxd-installer all 10 [5264 B] 77s Get:49 http://ftpmaster.internal/ubuntu plucky/main ppc64el pinentry-curses ppc64el 1.3.1-0ubuntu2 [43.5 kB] 77s Get:50 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3-blinker all 1.9.0-1 [10.7 kB] 77s Get:51 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3-rpds-py ppc64el 0.21.0-2ubuntu1 [338 kB] 77s Get:52 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3-jsonschema-specifications all 2023.12.1-2 [9116 B] 77s Get:53 http://ftpmaster.internal/ubuntu plucky/main ppc64el sg3-utils ppc64el 1.48-0ubuntu1 [1070 kB] 77s Get:54 http://ftpmaster.internal/ubuntu plucky/main ppc64el sg3-utils-udev all 1.48-0ubuntu1 [6608 B] 78s Preconfiguring packages ... 78s Fetched 14.1 MB in 2s (6559 kB/s) 78s (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 ... 73847 files and directories currently installed.) 78s Preparing to unpack .../bash_5.2.32-1ubuntu2_ppc64el.deb ... 78s Unpacking bash (5.2.32-1ubuntu2) over (5.2.32-1ubuntu1) ... 78s Setting up bash (5.2.32-1ubuntu2) ... 78s 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 78s (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 ... 73847 files and directories currently installed.) 78s Preparing to unpack .../hostname_3.25_ppc64el.deb ... 78s Unpacking hostname (3.25) over (3.23+nmu2ubuntu2) ... 78s Setting up hostname (3.25) ... 78s (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 ... 73847 files and directories currently installed.) 78s Preparing to unpack .../init-system-helpers_1.67ubuntu1_all.deb ... 78s Unpacking init-system-helpers (1.67ubuntu1) over (1.66ubuntu1) ... 78s Setting up init-system-helpers (1.67ubuntu1) ... 78s (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 ... 73847 files and directories currently installed.) 78s Preparing to unpack .../libaudit-common_1%3a4.0.2-2ubuntu1_all.deb ... 78s Unpacking libaudit-common (1:4.0.2-2ubuntu1) over (1:4.0.1-1ubuntu2) ... 78s Setting up libaudit-common (1:4.0.2-2ubuntu1) ... 78s (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 ... 73847 files and directories currently installed.) 78s Preparing to unpack .../libaudit1_1%3a4.0.2-2ubuntu1_ppc64el.deb ... 78s Unpacking libaudit1:ppc64el (1:4.0.2-2ubuntu1) over (1:4.0.1-1ubuntu2) ... 78s Setting up libaudit1:ppc64el (1:4.0.2-2ubuntu1) ... 78s (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 ... 73847 files and directories currently installed.) 78s Preparing to unpack .../debconf-i18n_1.5.87ubuntu1_all.deb ... 78s Unpacking debconf-i18n (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 78s Preparing to unpack .../python3-minimal_3.12.7-1_ppc64el.deb ... 78s Unpacking python3-minimal (3.12.7-1) over (3.12.6-0ubuntu1) ... 78s Setting up python3-minimal (3.12.7-1) ... 78s (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 ... 73847 files and directories currently installed.) 78s Preparing to unpack .../python3_3.12.7-1_ppc64el.deb ... 78s Unpacking python3 (3.12.7-1) over (3.12.6-0ubuntu1) ... 79s Preparing to unpack .../libpython3-stdlib_3.12.7-1_ppc64el.deb ... 79s Unpacking libpython3-stdlib:ppc64el (3.12.7-1) over (3.12.6-0ubuntu1) ... 79s Preparing to unpack .../python3-debconf_1.5.87ubuntu1_all.deb ... 79s Unpacking python3-debconf (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 79s Preparing to unpack .../debconf_1.5.87ubuntu1_all.deb ... 79s Unpacking debconf (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 79s Setting up debconf (1.5.87ubuntu1) ... 79s (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 ... 73847 files and directories currently installed.) 79s Preparing to unpack .../libpam0g_1.5.3-7ubuntu4_ppc64el.deb ... 79s Unpacking libpam0g:ppc64el (1.5.3-7ubuntu4) over (1.5.3-7ubuntu2) ... 79s Setting up libpam0g:ppc64el (1.5.3-7ubuntu4) ... 79s (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 ... 73847 files and directories currently installed.) 79s Preparing to unpack .../libselinux1_3.7-3ubuntu1_ppc64el.deb ... 79s Unpacking libselinux1:ppc64el (3.7-3ubuntu1) over (3.5-2ubuntu5) ... 79s Setting up libselinux1:ppc64el (3.7-3ubuntu1) ... 79s (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 ... 73847 files and directories currently installed.) 79s Preparing to unpack .../libpam-modules-bin_1.5.3-7ubuntu4_ppc64el.deb ... 79s Unpacking libpam-modules-bin (1.5.3-7ubuntu4) over (1.5.3-7ubuntu2) ... 79s Setting up libpam-modules-bin (1.5.3-7ubuntu4) ... 79s pam_namespace.service is a disabled or a static unit not running, not starting it. 79s (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 ... 73847 files and directories currently installed.) 79s Preparing to unpack .../libpam-modules_1.5.3-7ubuntu4_ppc64el.deb ... 79s Unpacking libpam-modules:ppc64el (1.5.3-7ubuntu4) over (1.5.3-7ubuntu2) ... 80s Setting up libpam-modules:ppc64el (1.5.3-7ubuntu4) ... 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 ... 73847 files and directories currently installed.) 80s Preparing to unpack .../init_1.67ubuntu1_ppc64el.deb ... 80s Unpacking init (1.67ubuntu1) over (1.66ubuntu1) ... 80s Preparing to unpack .../openssh-sftp-server_1%3a9.9p1-3ubuntu2_ppc64el.deb ... 80s Unpacking openssh-sftp-server (1:9.9p1-3ubuntu2) over (1:9.7p1-7ubuntu5) ... 80s Preparing to unpack .../openssh-server_1%3a9.9p1-3ubuntu2_ppc64el.deb ... 80s Unpacking openssh-server (1:9.9p1-3ubuntu2) over (1:9.7p1-7ubuntu5) ... 80s Preparing to unpack .../openssh-client_1%3a9.9p1-3ubuntu2_ppc64el.deb ... 80s Unpacking openssh-client (1:9.9p1-3ubuntu2) over (1:9.7p1-7ubuntu5) ... 80s Preparing to unpack .../libpam-runtime_1.5.3-7ubuntu4_all.deb ... 80s Unpacking libpam-runtime (1.5.3-7ubuntu4) over (1.5.3-7ubuntu2) ... 80s Setting up libpam-runtime (1.5.3-7ubuntu4) ... 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 ... 73849 files and directories currently installed.) 80s Preparing to unpack .../liblzma5_5.6.3-1_ppc64el.deb ... 80s Unpacking liblzma5:ppc64el (5.6.3-1) over (5.6.2-2) ... 80s Setting up liblzma5:ppc64el (5.6.3-1) ... 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 ... 73849 files and directories currently installed.) 80s Preparing to unpack .../libsemanage-common_3.7-2build1_all.deb ... 80s Unpacking libsemanage-common (3.7-2build1) over (3.5-1build6) ... 80s Setting up libsemanage-common (3.7-2build1) ... 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 ... 73848 files and directories currently installed.) 80s Preparing to unpack .../libsemanage2_3.7-2build1_ppc64el.deb ... 80s Unpacking libsemanage2:ppc64el (3.7-2build1) over (3.5-1build6) ... 80s Setting up libsemanage2:ppc64el (3.7-2build1) ... 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 ... 73848 files and directories currently installed.) 80s Preparing to unpack .../00-distro-info_1.12_ppc64el.deb ... 80s Unpacking distro-info (1.12) over (1.9) ... 80s Preparing to unpack .../01-gir1.2-girepository-2.0_1.82.0-2_ppc64el.deb ... 80s Unpacking gir1.2-girepository-2.0:ppc64el (1.82.0-2) over (1.80.1-4) ... 80s Preparing to unpack .../02-gir1.2-glib-2.0_2.82.2-3_ppc64el.deb ... 80s Unpacking gir1.2-glib-2.0:ppc64el (2.82.2-3) over (2.82.1-0ubuntu1) ... 80s Preparing to unpack .../03-libglib2.0-0t64_2.82.2-3_ppc64el.deb ... 80s Unpacking libglib2.0-0t64:ppc64el (2.82.2-3) over (2.82.1-0ubuntu1) ... 80s Preparing to unpack .../04-libgirepository-1.0-1_1.82.0-2_ppc64el.deb ... 80s Unpacking libgirepository-1.0-1:ppc64el (1.82.0-2) over (1.80.1-4) ... 80s Preparing to unpack .../05-libglib2.0-data_2.82.2-3_all.deb ... 80s Unpacking libglib2.0-data (2.82.2-3) over (2.82.1-0ubuntu1) ... 80s Preparing to unpack .../06-python3-dbus_1.3.2-5build4_ppc64el.deb ... 80s Unpacking python3-dbus (1.3.2-5build4) over (1.3.2-5build3) ... 80s Preparing to unpack .../07-python3-gi_3.50.0-3build1_ppc64el.deb ... 80s Unpacking python3-gi (3.50.0-3build1) over (3.50.0-3) ... 80s Preparing to unpack .../08-python3-yaml_6.0.2-1build1_ppc64el.deb ... 81s Unpacking python3-yaml (6.0.2-1build1) over (6.0.2-1) ... 81s Preparing to unpack .../09-vim-tiny_2%3a9.1.0861-1ubuntu1_ppc64el.deb ... 81s Unpacking vim-tiny (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 81s Preparing to unpack .../10-vim-common_2%3a9.1.0861-1ubuntu1_all.deb ... 81s Unpacking vim-common (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 81s Preparing to unpack .../11-xxd_2%3a9.1.0861-1ubuntu1_ppc64el.deb ... 81s Unpacking xxd (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 81s Preparing to unpack .../12-libplymouth5_24.004.60-2ubuntu3_ppc64el.deb ... 81s Unpacking libplymouth5:ppc64el (24.004.60-2ubuntu3) over (24.004.60-1ubuntu11) ... 81s Selecting previously unselected package libsgutils2-1.48:ppc64el. 81s Preparing to unpack .../13-libsgutils2-1.48_1.48-0ubuntu1_ppc64el.deb ... 81s Unpacking libsgutils2-1.48:ppc64el (1.48-0ubuntu1) ... 81s Preparing to unpack .../14-lsvpd_1.7.14-1ubuntu3_ppc64el.deb ... 81s Unpacking lsvpd (1.7.14-1ubuntu3) over (1.7.14-1ubuntu2) ... 81s Preparing to unpack .../15-plymouth-theme-ubuntu-text_24.004.60-2ubuntu3_ppc64el.deb ... 81s Unpacking plymouth-theme-ubuntu-text (24.004.60-2ubuntu3) over (24.004.60-1ubuntu11) ... 81s Preparing to unpack .../16-plymouth_24.004.60-2ubuntu3_ppc64el.deb ... 81s Unpacking plymouth (24.004.60-2ubuntu3) over (24.004.60-1ubuntu11) ... 81s Preparing to unpack .../17-xz-utils_5.6.3-1_ppc64el.deb ... 81s Unpacking xz-utils (5.6.3-1) over (5.6.2-2) ... 81s Preparing to unpack .../18-bpftrace_0.21.2-2ubuntu3_ppc64el.deb ... 81s Unpacking bpftrace (0.21.2-2ubuntu3) over (0.21.2-2ubuntu2) ... 81s Preparing to unpack .../19-curl_8.9.1-2ubuntu3_ppc64el.deb ... 81s Unpacking curl (8.9.1-2ubuntu3) over (8.9.1-2ubuntu2) ... 81s Preparing to unpack .../20-libcurl4t64_8.9.1-2ubuntu3_ppc64el.deb ... 81s Unpacking libcurl4t64:ppc64el (8.9.1-2ubuntu3) over (8.9.1-2ubuntu2) ... 81s Preparing to unpack .../21-dracut-install_105-2ubuntu2_ppc64el.deb ... 81s Unpacking dracut-install (105-2ubuntu2) over (105-1ubuntu1) ... 81s Preparing to unpack .../22-libcurl3t64-gnutls_8.9.1-2ubuntu3_ppc64el.deb ... 81s Unpacking libcurl3t64-gnutls:ppc64el (8.9.1-2ubuntu3) over (8.9.1-2ubuntu2) ... 81s Preparing to unpack .../23-linux-base_4.10.1ubuntu1_all.deb ... 81s Unpacking linux-base (4.10.1ubuntu1) over (4.5ubuntu9) ... 81s Preparing to unpack .../24-lxd-installer_10_all.deb ... 81s Unpacking lxd-installer (10) over (9) ... 81s Preparing to unpack .../25-pinentry-curses_1.3.1-0ubuntu2_ppc64el.deb ... 81s Unpacking pinentry-curses (1.3.1-0ubuntu2) over (1.2.1-3ubuntu5) ... 81s Preparing to unpack .../26-python3-blinker_1.9.0-1_all.deb ... 81s Unpacking python3-blinker (1.9.0-1) over (1.8.2-1) ... 81s Preparing to unpack .../27-python3-rpds-py_0.21.0-2ubuntu1_ppc64el.deb ... 81s Unpacking python3-rpds-py (0.21.0-2ubuntu1) over (0.20.0-0ubuntu3) ... 81s Preparing to unpack .../28-python3-jsonschema-specifications_2023.12.1-2_all.deb ... 81s Unpacking python3-jsonschema-specifications (2023.12.1-2) over (2023.12.1-1ubuntu1) ... 81s Preparing to unpack .../29-sg3-utils_1.48-0ubuntu1_ppc64el.deb ... 81s Unpacking sg3-utils (1.48-0ubuntu1) over (1.46-3ubuntu5) ... 81s Preparing to unpack .../30-sg3-utils-udev_1.48-0ubuntu1_all.deb ... 81s Unpacking sg3-utils-udev (1.48-0ubuntu1) over (1.46-3ubuntu5) ... 81s Setting up pinentry-curses (1.3.1-0ubuntu2) ... 81s Setting up distro-info (1.12) ... 81s Setting up linux-base (4.10.1ubuntu1) ... 82s Setting up init (1.67ubuntu1) ... 82s Setting up libcurl4t64:ppc64el (8.9.1-2ubuntu3) ... 82s Setting up bpftrace (0.21.2-2ubuntu3) ... 82s Setting up openssh-client (1:9.9p1-3ubuntu2) ... 82s Setting up libcurl3t64-gnutls:ppc64el (8.9.1-2ubuntu3) ... 82s Setting up libsgutils2-1.48:ppc64el (1.48-0ubuntu1) ... 82s Setting up debconf-i18n (1.5.87ubuntu1) ... 82s Setting up xxd (2:9.1.0861-1ubuntu1) ... 82s Setting up libglib2.0-0t64:ppc64el (2.82.2-3) ... 82s No schema files found: doing nothing. 82s Setting up libglib2.0-data (2.82.2-3) ... 82s Setting up vim-common (2:9.1.0861-1ubuntu1) ... 82s Setting up xz-utils (5.6.3-1) ... 82s Setting up gir1.2-glib-2.0:ppc64el (2.82.2-3) ... 82s Setting up lxd-installer (10) ... 82s Setting up dracut-install (105-2ubuntu2) ... 82s Setting up libplymouth5:ppc64el (24.004.60-2ubuntu3) ... 82s Setting up libgirepository-1.0-1:ppc64el (1.82.0-2) ... 82s Setting up curl (8.9.1-2ubuntu3) ... 82s Setting up libpython3-stdlib:ppc64el (3.12.7-1) ... 82s Setting up sg3-utils (1.48-0ubuntu1) ... 82s Setting up openssh-sftp-server (1:9.9p1-3ubuntu2) ... 82s Setting up openssh-server (1:9.9p1-3ubuntu2) ... 82s Installing new version of config file /etc/ssh/moduli ... 82s Replacing config file /etc/ssh/sshd_config with new version 83s Setting up plymouth (24.004.60-2ubuntu3) ... 83s update-initramfs: Generating /boot/initrd.img-6.11.0-8-generic 83s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 90s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 90s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 90s Setting up lsvpd (1.7.14-1ubuntu3) ... 90s Setting up python3 (3.12.7-1) ... 91s Setting up vim-tiny (2:9.1.0861-1ubuntu1) ... 91s Setting up sg3-utils-udev (1.48-0ubuntu1) ... 91s update-initramfs: deferring update (trigger activated) 91s Setting up plymouth-theme-ubuntu-text (24.004.60-2ubuntu3) ... 91s update-initramfs: deferring update (trigger activated) 91s Setting up gir1.2-girepository-2.0:ppc64el (1.82.0-2) ... 91s Setting up python3-gi (3.50.0-3build1) ... 91s Setting up python3-rpds-py (0.21.0-2ubuntu1) ... 91s Setting up python3-jsonschema-specifications (2023.12.1-2) ... 91s Setting up python3-blinker (1.9.0-1) ... 91s Setting up python3-dbus (1.3.2-5build4) ... 91s Setting up python3-debconf (1.5.87ubuntu1) ... 91s Setting up python3-yaml (6.0.2-1build1) ... 91s Processing triggers for man-db (2.13.0-1) ... 93s Processing triggers for debianutils (5.21) ... 93s Processing triggers for install-info (7.1.1-1) ... 93s Processing triggers for initramfs-tools (0.142ubuntu35) ... 93s update-initramfs: Generating /boot/initrd.img-6.11.0-8-generic 93s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 99s Processing triggers for libc-bin (2.40-1ubuntu3) ... 99s Processing triggers for ufw (0.36.2-8) ... 99s Reading package lists... 100s Building dependency tree... 100s Reading state information... 100s The following packages will be REMOVED: 100s libsgutils2-1.46-2* 100s 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. 100s After this operation, 380 kB disk space will be freed. 100s (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 ... 73882 files and directories currently installed.) 100s Removing libsgutils2-1.46-2:ppc64el (1.46-3ubuntu5) ... 100s Processing triggers for libc-bin (2.40-1ubuntu3) ... 101s Hit:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease 101s Hit:2 http://ftpmaster.internal/ubuntu plucky InRelease 101s Hit:3 http://ftpmaster.internal/ubuntu plucky-updates InRelease 101s Hit:4 http://ftpmaster.internal/ubuntu plucky-security InRelease 102s Reading package lists... 102s Reading package lists... 102s Building dependency tree... 102s Reading state information... 102s Calculating upgrade... 102s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 102s Reading package lists... 102s Building dependency tree... 102s Reading state information... 102s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 103s autopkgtest [22:18:54]: rebooting testbed after setup commands that affected boot 106s autopkgtest-virt-ssh: WARNING: ssh connection failed. Retrying in 3 seconds... 133s autopkgtest [22:19:24]: testbed running kernel: Linux 6.11.0-8-generic #8-Ubuntu SMP Mon Sep 16 13:49:23 UTC 2024 136s autopkgtest [22:19:27]: @@@@@@@@@@@@@@@@@@@@ apt-source tiktoken 137s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed/universe tiktoken 0.8.0-1build1 (dsc) [2247 B] 137s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/universe tiktoken 0.8.0-1build1 (tar) [31.6 kB] 137s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/universe tiktoken 0.8.0-1build1 (diff) [3908 B] 138s gpgv: Signature made Mon Nov 18 15:38:19 2024 UTC 138s gpgv: using RSA key 25E3FF2D7F469DBE7D0D4E50AFCFEC8E669CE1C2 138s gpgv: Can't check signature: No public key 138s dpkg-source: warning: cannot verify inline signature for ./tiktoken_0.8.0-1build1.dsc: no acceptable signature found 138s autopkgtest [22:19:29]: testing package tiktoken version 0.8.0-1build1 138s autopkgtest [22:19:29]: build not needed 138s autopkgtest [22:19:29]: test pybuild-autopkgtest: preparing testbed 139s Reading package lists... 140s Building dependency tree... 140s Reading state information... 140s Starting pkgProblemResolver with broken count: 0 140s Starting 2 pkgProblemResolver with broken count: 0 140s Done 140s The following additional packages will be installed: 140s autoconf automake autopoint autotools-dev binutils-mingw-w64-i686 140s binutils-mingw-w64-x86-64 build-essential cargo cargo-1.80 cmake cmake-data 140s cpp cpp-14 cpp-14-powerpc64le-linux-gnu cpp-powerpc64le-linux-gnu debhelper 140s debugedit dh-autoreconf dh-python dh-strip-nondeterminism dwz 140s fontconfig-config fonts-dejavu-core fonts-dejavu-mono g++ g++-14 140s g++-14-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu gcc gcc-14 140s gcc-14-powerpc64le-linux-gnu gcc-powerpc64le-linux-gnu gettext 140s intltool-debian libarchive-zip-perl libasan8 libbrotli-dev libbz2-dev 140s libcc1-0 libdebhelper-perl libexpat1-dev libfile-stripnondeterminism-perl 140s libfontconfig-dev libfontconfig1 libfreetype-dev libgcc-14-dev libgit2-1.7 140s libgomp1 libhttp-parser2.9 libisl23 libitm1 libjsoncpp25 liblsan0 libmpc3 140s libpfm4 libpkgconf3 libpng-dev libpython3-all-dev libpython3-dev 140s libpython3.12-dev libpython3.13 libpython3.13-dev libpython3.13-minimal 140s libpython3.13-stdlib libquadmath0 librhash0 librust-ab-glyph-dev 140s librust-ab-glyph-rasterizer+libm-dev librust-ab-glyph-rasterizer-dev 140s librust-addr2line-dev librust-adler-dev librust-ahash-dev 140s librust-aho-corasick-dev librust-allocator-api2-dev librust-anes-dev 140s librust-anstream-dev librust-anstyle-dev librust-anstyle-parse-dev 140s librust-anstyle-query-dev librust-anyhow-dev librust-approx-dev 140s librust-arbitrary-dev librust-array-init-dev librust-arrayvec-dev 140s librust-async-attributes-dev librust-async-channel-dev 140s librust-async-executor-dev librust-async-fs-dev 140s librust-async-global-executor-dev librust-async-io-dev 140s librust-async-lock-dev librust-async-net-dev librust-async-process-dev 140s librust-async-signal-dev librust-async-std-dev librust-async-task-dev 140s librust-atomic-dev librust-atomic-waker-dev librust-autocfg-dev 140s librust-backtrace-dev librust-base64-dev librust-bit-set+std-dev 140s librust-bit-set-dev librust-bit-vec-dev librust-bitflags-1-dev 140s librust-bitflags-dev librust-bitvec-dev librust-blobby-dev 140s librust-block-buffer-dev librust-blocking-dev librust-bstr-dev 140s librust-bumpalo-dev librust-bytecheck-derive-dev librust-bytecheck-dev 140s librust-bytemuck-derive-dev librust-bytemuck-dev librust-byteorder-dev 140s librust-bytes-dev librust-cast-dev librust-cc-dev librust-cfg-if-0.1-dev 140s librust-cfg-if-dev librust-chrono-dev librust-chrono-tz-build-dev 140s librust-chrono-tz-dev librust-ciborium-dev librust-ciborium-io-dev 140s librust-ciborium-ll-dev librust-clap-builder-dev librust-clap-derive-dev 140s librust-clap-dev librust-clap-lex-dev librust-cmake-dev 140s librust-color-quant-dev librust-colorchoice-dev 140s librust-compiler-builtins+core-dev 140s librust-compiler-builtins+rustc-dep-of-std-dev librust-compiler-builtins-dev 140s librust-concurrent-queue-dev librust-const-cstr-dev librust-const-oid-dev 140s librust-const-random-dev librust-const-random-macro-dev 140s librust-convert-case-dev librust-core-maths-dev librust-cpp-demangle-dev 140s librust-cpufeatures-dev librust-crc32fast-dev librust-criterion-dev 140s librust-critical-section-dev librust-crossbeam-deque-dev 140s librust-crossbeam-epoch+std-dev librust-crossbeam-epoch-dev 140s librust-crossbeam-utils-dev librust-crunchy-dev librust-crypto-common-dev 140s librust-csv-core-dev librust-csv-dev librust-ctor-dev librust-deranged-dev 140s librust-derive-arbitrary-dev librust-derive-more-0.99-dev librust-digest-dev 140s librust-dirs-next-dev librust-dirs-sys-next-dev librust-dlib-dev 140s librust-either-dev librust-env-logger-dev librust-equivalent-dev 140s librust-erased-serde-dev librust-errno-dev librust-eui48-dev 140s librust-event-listener-dev librust-event-listener-strategy-dev 140s librust-eyre+default-dev librust-eyre-dev librust-fallible-iterator-dev 140s librust-fancy-regex-dev librust-fastrand-dev librust-flate2-dev 140s librust-float-ord-dev librust-fnv-dev librust-font-kit-dev 140s librust-freetype-dev librust-freetype-sys-dev librust-funty-dev 140s librust-futures-channel-dev librust-futures-core-dev librust-futures-dev 140s librust-futures-executor-dev librust-futures-io-dev librust-futures-lite-dev 140s librust-futures-macro-dev librust-futures-sink-dev librust-futures-task-dev 140s librust-futures-util-dev librust-generic-array-dev librust-geo-types-dev 140s librust-getrandom-dev librust-ghost-dev librust-gif-dev librust-gimli-dev 140s librust-half-dev librust-hashbrown-dev librust-heck-dev librust-hmac-dev 140s librust-humantime-dev librust-iana-time-zone-dev librust-image-dev 140s librust-indenter-dev librust-indexmap-dev librust-indoc-dev 140s librust-inventory-dev librust-is-terminal-dev librust-itertools-dev 140s librust-itoa-dev librust-jobserver-dev librust-jpeg-decoder-dev 140s librust-js-sys-dev librust-kv-log-macro-dev librust-lazy-static-dev 140s librust-libc-dev librust-libloading-dev librust-libm-dev 140s librust-libwebp-sys-dev librust-libz-sys-dev librust-linux-raw-sys-dev 140s librust-lock-api-dev librust-log-dev librust-md-5-dev librust-md5-asm-dev 140s librust-memchr-dev librust-memmap2-dev librust-memoffset-dev 140s librust-miniz-oxide-dev librust-mio-dev librust-no-panic-dev 140s librust-num-bigint-dev librust-num-complex-dev librust-num-conv-dev 140s librust-num-cpus-dev librust-num-integer-dev librust-num-rational-dev 140s librust-num-threads-dev librust-num-traits-dev librust-object-dev 140s librust-once-cell-dev librust-oorandom-dev librust-owned-ttf-parser-dev 140s librust-owning-ref-dev librust-parking-dev librust-parking-lot-core-dev 140s librust-parking-lot-dev librust-parse-zoneinfo-dev 140s librust-pathfinder-geometry-dev librust-pathfinder-simd-dev 140s librust-phf+uncased-dev librust-phf-codegen-dev librust-phf-dev 140s librust-phf-generator-dev librust-phf-shared+uncased-dev 140s librust-phf-shared-dev librust-pin-project-lite-dev librust-pin-utils-dev 140s librust-pkg-config-dev librust-plotters-backend-dev 140s librust-plotters-bitmap-dev librust-plotters-dev librust-plotters-svg-dev 140s librust-png-dev librust-polling-dev librust-portable-atomic-dev 140s librust-postgres-derive-dev librust-postgres-protocol-dev 140s librust-postgres-types-dev librust-powerfmt-dev librust-powerfmt-macros-dev 140s librust-ppv-lite86-dev librust-proc-macro2-dev librust-proptest-dev 140s librust-ptr-meta-derive-dev librust-ptr-meta-dev 140s librust-pure-rust-locales-dev librust-pyo3-build-config-dev librust-pyo3-dev 140s librust-pyo3-ffi-dev librust-pyo3-macros-backend-dev librust-pyo3-macros-dev 140s librust-python3-dll-a-dev librust-qoi-dev librust-quick-error-dev 140s librust-quickcheck-dev librust-quote-dev librust-radium-dev 140s librust-rand-chacha-dev librust-rand-core+getrandom-dev 140s librust-rand-core+serde-dev librust-rand-core+std-dev librust-rand-core-dev 140s librust-rand-dev librust-rand-xorshift-dev librust-rayon-core-dev 140s librust-rayon-dev librust-regex-automata-dev librust-regex-dev 140s librust-regex-syntax-dev librust-rend-dev librust-rkyv-derive-dev 140s librust-rkyv-dev librust-rust-decimal-dev librust-rustc-demangle-dev 140s librust-rustc-hash-dev librust-rustc-std-workspace-core-dev 140s librust-rustc-version-dev librust-rustix-dev 140s librust-rusty-fork+wait-timeout-dev librust-rusty-fork-dev 140s librust-ruzstd-dev librust-ryu-dev librust-same-file-dev 140s librust-scopeguard-dev librust-seahash-dev librust-semver-dev 140s librust-serde-derive-dev librust-serde-dev librust-serde-fmt-dev 140s librust-serde-json-dev librust-serde-test-dev librust-sha1-asm-dev 140s librust-sha1-dev librust-sha2-asm-dev librust-sha2-dev librust-shlex-dev 140s librust-signal-hook-registry-dev librust-simdutf8-dev librust-siphasher-dev 140s librust-slab-dev librust-slog-dev librust-smallvec-dev librust-smol-dev 140s librust-smol-str-dev librust-socket2-dev librust-spin-dev 140s librust-stable-deref-trait-dev librust-static-assertions-dev 140s librust-stringprep-dev librust-strsim-dev librust-subtle-dev 140s librust-sval-buffer-dev librust-sval-derive-dev librust-sval-dev 140s librust-sval-dynamic-dev librust-sval-fmt-dev librust-sval-ref-dev 140s librust-sval-serde-dev librust-syn-1-dev librust-syn-dev librust-tap-dev 140s librust-target-lexicon-dev librust-tempfile-dev librust-termcolor-dev 140s librust-terminal-size-dev librust-tiff-dev librust-time-core-dev 140s librust-time-dev librust-time-macros-dev librust-tiny-keccak-dev 140s librust-tinytemplate-dev librust-tinyvec+tinyvec-macros-dev 140s librust-tinyvec-dev librust-tinyvec-macros-dev librust-tokio-dev 140s librust-tokio-macros-dev librust-tracing-attributes-dev 140s librust-tracing-core-dev librust-tracing-dev librust-traitobject-dev 140s librust-ttf-parser-dev librust-twox-hash-dev librust-typemap-dev 140s librust-typenum-dev librust-unarray-dev librust-uncased-dev 140s librust-unicase-dev librust-unicode-bidi-dev librust-unicode-ident-dev 140s librust-unicode-normalization-dev librust-unicode-segmentation-dev 140s librust-unicode-width-dev librust-unindent-dev librust-unsafe-any-dev 140s librust-utf8parse-dev librust-uuid-dev librust-valuable-derive-dev 140s librust-valuable-dev librust-value-bag-dev librust-value-bag-serde1-dev 140s librust-value-bag-sval2-dev librust-version-check-dev 140s librust-wait-timeout-dev librust-walkdir-dev 140s librust-wasm-bindgen+default-dev librust-wasm-bindgen+spans-dev 140s librust-wasm-bindgen-backend-dev librust-wasm-bindgen-dev 140s librust-wasm-bindgen-macro+spans-dev librust-wasm-bindgen-macro-dev 140s librust-wasm-bindgen-macro-support+spans-dev 140s librust-wasm-bindgen-macro-support-dev librust-wasm-bindgen-shared-dev 140s librust-web-sys-dev librust-webp-dev librust-weezl-dev librust-winapi-dev 140s librust-winapi-i686-pc-windows-gnu-dev librust-winapi-util-dev 140s librust-winapi-x86-64-pc-windows-gnu-dev librust-wyz-dev 140s librust-yeslogic-fontconfig-sys-dev librust-zerocopy-derive-dev 140s librust-zerocopy-dev librust-zeroize-derive-dev librust-zeroize-dev 140s libsharpyuv-dev libsharpyuv0 libstd-rust-1.80 libstd-rust-1.80-dev 140s libstdc++-14-dev libtool libtsan2 libubsan1 libwebp-dev libwebp7 140s libwebpdecoder3 libwebpdemux2 libwebpmux3 llvm llvm-19 llvm-19-linker-tools 140s llvm-19-runtime llvm-runtime m4 pkg-config pkgconf pkgconf-bin po-debconf 140s pybuild-plugin-autopkgtest pybuild-plugin-pyproject python3-all 140s python3-build python3-dateutil python3-hypothesis python3-iniconfig 140s python3-installer python3-packaging python3-pluggy python3-pyproject-hooks 140s python3-pytest python3-regex python3-semantic-version 140s python3-setuptools-rust python3-sortedcontainers python3-tiktoken 140s python3-toml python3-wheel python3.12-dev python3.13 python3.13-minimal 140s rustc rustc-1.80 uuid-dev zlib1g-dev 140s Suggested packages: 140s autoconf-archive gnu-standards autoconf-doc cargo-1.80-doc cmake-doc 140s cmake-format elpa-cmake-mode ninja-build cpp-doc gcc-14-locales cpp-14-doc 140s dh-make flit gcc-14-doc gcc-multilib manpages-dev flex bison gdb gcc-doc 140s gdb-powerpc64le-linux-gnu gettext-doc libasprintf-dev libgettextpo-dev 140s freetype2-doc librust-adler+compiler-builtins-dev librust-adler+core-dev 140s librust-adler+rustc-dep-of-std-dev librust-backtrace+cpp-demangle-dev 140s librust-backtrace+rustc-serialize-dev librust-backtrace+serde-dev 140s librust-backtrace+verify-winapi-dev librust-backtrace+winapi-dev 140s librust-cfg-if-0.1+core-dev librust-cfg-if+core-dev 140s librust-compiler-builtins+c-dev gnuplot-nox librust-csv-core+libc-dev 140s librust-either+serde-dev librust-getrandom+compiler-builtins-dev 140s librust-getrandom+core-dev librust-getrandom+rustc-dep-of-std-dev 140s librust-libc+rustc-dep-of-std-dev librust-libc+rustc-std-workspace-core-dev 140s librust-phf+phf-macros-dev librust-phf+serde-dev librust-phf+unicase-dev 140s librust-phf-shared+unicase-dev librust-rand-xorshift+serde-dev 140s librust-rustc-demangle+compiler-builtins-dev librust-rustc-demangle+core-dev 140s librust-rustc-demangle+rustc-dep-of-std-dev librust-ryu+no-panic-dev 140s librust-slog+erased-serde-dev librust-tinyvec+arbitrary-dev 140s librust-tinyvec+serde-dev librust-uncased+serde-dev 140s librust-uncased+with-serde-alloc-dev 140s librust-wasm-bindgen-backend+extra-traits-dev librust-wasm-bindgen+serde-dev 140s librust-wasm-bindgen+serde-serialize-dev librust-wasm-bindgen+serde-json-dev 140s librust-wasm-bindgen+strict-macro-dev 140s librust-wasm-bindgen+xxx-debug-only-print-generated-code-dev 140s librust-wasm-bindgen-macro+strict-macro-dev 140s librust-wasm-bindgen-macro-support+extra-traits-dev librust-weezl+async-dev 140s librust-weezl+futures-dev libstdc++-14-doc libtool-doc gfortran 140s | fortran95-compiler gcj-jdk llvm-19-doc m4-doc libmail-box-perl python3-pip 140s python3-venv python-build-doc python-hypothesis-doc python-installer-doc 140s python-semantic-version-doc python-sortedcontainers-doc python3.13-venv 140s python3.13-doc binfmt-support llvm-18 lld-18 clang-18 140s Recommended packages: 140s bzip2-doc libarchive-cpio-perl libpng-tools librust-phf+std-dev 140s librust-subtle+default-dev libltdl-dev llvm-19-dev libmail-sendmail-perl 140s python3-click 140s The following NEW packages will be installed: 140s autoconf automake autopkgtest-satdep autopoint autotools-dev 140s binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 build-essential cargo 140s cargo-1.80 cmake cmake-data cpp cpp-14 cpp-14-powerpc64le-linux-gnu 140s cpp-powerpc64le-linux-gnu debhelper debugedit dh-autoreconf dh-python 140s dh-strip-nondeterminism dwz fontconfig-config fonts-dejavu-core 140s fonts-dejavu-mono g++ g++-14 g++-14-powerpc64le-linux-gnu 140s g++-powerpc64le-linux-gnu gcc gcc-14 gcc-14-powerpc64le-linux-gnu 140s gcc-powerpc64le-linux-gnu gettext intltool-debian libarchive-zip-perl 140s libasan8 libbrotli-dev libbz2-dev libcc1-0 libdebhelper-perl libexpat1-dev 140s libfile-stripnondeterminism-perl libfontconfig-dev libfontconfig1 140s libfreetype-dev libgcc-14-dev libgit2-1.7 libgomp1 libhttp-parser2.9 140s libisl23 libitm1 libjsoncpp25 liblsan0 libmpc3 libpfm4 libpkgconf3 140s libpng-dev libpython3-all-dev libpython3-dev libpython3.12-dev libpython3.13 140s libpython3.13-dev libpython3.13-minimal libpython3.13-stdlib libquadmath0 140s librhash0 librust-ab-glyph-dev librust-ab-glyph-rasterizer+libm-dev 140s librust-ab-glyph-rasterizer-dev librust-addr2line-dev librust-adler-dev 140s librust-ahash-dev librust-aho-corasick-dev librust-allocator-api2-dev 140s librust-anes-dev librust-anstream-dev librust-anstyle-dev 140s librust-anstyle-parse-dev librust-anstyle-query-dev librust-anyhow-dev 140s librust-approx-dev librust-arbitrary-dev librust-array-init-dev 140s librust-arrayvec-dev librust-async-attributes-dev librust-async-channel-dev 140s librust-async-executor-dev librust-async-fs-dev 140s librust-async-global-executor-dev librust-async-io-dev 140s librust-async-lock-dev librust-async-net-dev librust-async-process-dev 140s librust-async-signal-dev librust-async-std-dev librust-async-task-dev 140s librust-atomic-dev librust-atomic-waker-dev librust-autocfg-dev 140s librust-backtrace-dev librust-base64-dev librust-bit-set+std-dev 140s librust-bit-set-dev librust-bit-vec-dev librust-bitflags-1-dev 140s librust-bitflags-dev librust-bitvec-dev librust-blobby-dev 140s librust-block-buffer-dev librust-blocking-dev librust-bstr-dev 140s librust-bumpalo-dev librust-bytecheck-derive-dev librust-bytecheck-dev 140s librust-bytemuck-derive-dev librust-bytemuck-dev librust-byteorder-dev 140s librust-bytes-dev librust-cast-dev librust-cc-dev librust-cfg-if-0.1-dev 140s librust-cfg-if-dev librust-chrono-dev librust-chrono-tz-build-dev 140s librust-chrono-tz-dev librust-ciborium-dev librust-ciborium-io-dev 140s librust-ciborium-ll-dev librust-clap-builder-dev librust-clap-derive-dev 140s librust-clap-dev librust-clap-lex-dev librust-cmake-dev 140s librust-color-quant-dev librust-colorchoice-dev 140s librust-compiler-builtins+core-dev 140s librust-compiler-builtins+rustc-dep-of-std-dev librust-compiler-builtins-dev 140s librust-concurrent-queue-dev librust-const-cstr-dev librust-const-oid-dev 140s librust-const-random-dev librust-const-random-macro-dev 140s librust-convert-case-dev librust-core-maths-dev librust-cpp-demangle-dev 140s librust-cpufeatures-dev librust-crc32fast-dev librust-criterion-dev 140s librust-critical-section-dev librust-crossbeam-deque-dev 140s librust-crossbeam-epoch+std-dev librust-crossbeam-epoch-dev 140s librust-crossbeam-utils-dev librust-crunchy-dev librust-crypto-common-dev 140s librust-csv-core-dev librust-csv-dev librust-ctor-dev librust-deranged-dev 140s librust-derive-arbitrary-dev librust-derive-more-0.99-dev librust-digest-dev 140s librust-dirs-next-dev librust-dirs-sys-next-dev librust-dlib-dev 140s librust-either-dev librust-env-logger-dev librust-equivalent-dev 140s librust-erased-serde-dev librust-errno-dev librust-eui48-dev 140s librust-event-listener-dev librust-event-listener-strategy-dev 140s librust-eyre+default-dev librust-eyre-dev librust-fallible-iterator-dev 140s librust-fancy-regex-dev librust-fastrand-dev librust-flate2-dev 140s librust-float-ord-dev librust-fnv-dev librust-font-kit-dev 140s librust-freetype-dev librust-freetype-sys-dev librust-funty-dev 140s librust-futures-channel-dev librust-futures-core-dev librust-futures-dev 140s librust-futures-executor-dev librust-futures-io-dev librust-futures-lite-dev 140s librust-futures-macro-dev librust-futures-sink-dev librust-futures-task-dev 140s librust-futures-util-dev librust-generic-array-dev librust-geo-types-dev 140s librust-getrandom-dev librust-ghost-dev librust-gif-dev librust-gimli-dev 140s librust-half-dev librust-hashbrown-dev librust-heck-dev librust-hmac-dev 140s librust-humantime-dev librust-iana-time-zone-dev librust-image-dev 140s librust-indenter-dev librust-indexmap-dev librust-indoc-dev 140s librust-inventory-dev librust-is-terminal-dev librust-itertools-dev 140s librust-itoa-dev librust-jobserver-dev librust-jpeg-decoder-dev 140s librust-js-sys-dev librust-kv-log-macro-dev librust-lazy-static-dev 140s librust-libc-dev librust-libloading-dev librust-libm-dev 140s librust-libwebp-sys-dev librust-libz-sys-dev librust-linux-raw-sys-dev 140s librust-lock-api-dev librust-log-dev librust-md-5-dev librust-md5-asm-dev 140s librust-memchr-dev librust-memmap2-dev librust-memoffset-dev 140s librust-miniz-oxide-dev librust-mio-dev librust-no-panic-dev 140s librust-num-bigint-dev librust-num-complex-dev librust-num-conv-dev 140s librust-num-cpus-dev librust-num-integer-dev librust-num-rational-dev 140s librust-num-threads-dev librust-num-traits-dev librust-object-dev 140s librust-once-cell-dev librust-oorandom-dev librust-owned-ttf-parser-dev 140s librust-owning-ref-dev librust-parking-dev librust-parking-lot-core-dev 140s librust-parking-lot-dev librust-parse-zoneinfo-dev 140s librust-pathfinder-geometry-dev librust-pathfinder-simd-dev 140s librust-phf+uncased-dev librust-phf-codegen-dev librust-phf-dev 140s librust-phf-generator-dev librust-phf-shared+uncased-dev 140s librust-phf-shared-dev librust-pin-project-lite-dev librust-pin-utils-dev 140s librust-pkg-config-dev librust-plotters-backend-dev 140s librust-plotters-bitmap-dev librust-plotters-dev librust-plotters-svg-dev 140s librust-png-dev librust-polling-dev librust-portable-atomic-dev 140s librust-postgres-derive-dev librust-postgres-protocol-dev 140s librust-postgres-types-dev librust-powerfmt-dev librust-powerfmt-macros-dev 140s librust-ppv-lite86-dev librust-proc-macro2-dev librust-proptest-dev 140s librust-ptr-meta-derive-dev librust-ptr-meta-dev 140s librust-pure-rust-locales-dev librust-pyo3-build-config-dev librust-pyo3-dev 140s librust-pyo3-ffi-dev librust-pyo3-macros-backend-dev librust-pyo3-macros-dev 140s librust-python3-dll-a-dev librust-qoi-dev librust-quick-error-dev 140s librust-quickcheck-dev librust-quote-dev librust-radium-dev 140s librust-rand-chacha-dev librust-rand-core+getrandom-dev 140s librust-rand-core+serde-dev librust-rand-core+std-dev librust-rand-core-dev 140s librust-rand-dev librust-rand-xorshift-dev librust-rayon-core-dev 140s librust-rayon-dev librust-regex-automata-dev librust-regex-dev 140s librust-regex-syntax-dev librust-rend-dev librust-rkyv-derive-dev 140s librust-rkyv-dev librust-rust-decimal-dev librust-rustc-demangle-dev 140s librust-rustc-hash-dev librust-rustc-std-workspace-core-dev 140s librust-rustc-version-dev librust-rustix-dev 140s librust-rusty-fork+wait-timeout-dev librust-rusty-fork-dev 140s librust-ruzstd-dev librust-ryu-dev librust-same-file-dev 140s librust-scopeguard-dev librust-seahash-dev librust-semver-dev 140s librust-serde-derive-dev librust-serde-dev librust-serde-fmt-dev 140s librust-serde-json-dev librust-serde-test-dev librust-sha1-asm-dev 140s librust-sha1-dev librust-sha2-asm-dev librust-sha2-dev librust-shlex-dev 140s librust-signal-hook-registry-dev librust-simdutf8-dev librust-siphasher-dev 140s librust-slab-dev librust-slog-dev librust-smallvec-dev librust-smol-dev 140s librust-smol-str-dev librust-socket2-dev librust-spin-dev 140s librust-stable-deref-trait-dev librust-static-assertions-dev 140s librust-stringprep-dev librust-strsim-dev librust-subtle-dev 140s librust-sval-buffer-dev librust-sval-derive-dev librust-sval-dev 140s librust-sval-dynamic-dev librust-sval-fmt-dev librust-sval-ref-dev 140s librust-sval-serde-dev librust-syn-1-dev librust-syn-dev librust-tap-dev 140s librust-target-lexicon-dev librust-tempfile-dev librust-termcolor-dev 140s librust-terminal-size-dev librust-tiff-dev librust-time-core-dev 140s librust-time-dev librust-time-macros-dev librust-tiny-keccak-dev 140s librust-tinytemplate-dev librust-tinyvec+tinyvec-macros-dev 140s librust-tinyvec-dev librust-tinyvec-macros-dev librust-tokio-dev 140s librust-tokio-macros-dev librust-tracing-attributes-dev 140s librust-tracing-core-dev librust-tracing-dev librust-traitobject-dev 140s librust-ttf-parser-dev librust-twox-hash-dev librust-typemap-dev 140s librust-typenum-dev librust-unarray-dev librust-uncased-dev 140s librust-unicase-dev librust-unicode-bidi-dev librust-unicode-ident-dev 140s librust-unicode-normalization-dev librust-unicode-segmentation-dev 140s librust-unicode-width-dev librust-unindent-dev librust-unsafe-any-dev 140s librust-utf8parse-dev librust-uuid-dev librust-valuable-derive-dev 140s librust-valuable-dev librust-value-bag-dev librust-value-bag-serde1-dev 140s librust-value-bag-sval2-dev librust-version-check-dev 140s librust-wait-timeout-dev librust-walkdir-dev 140s librust-wasm-bindgen+default-dev librust-wasm-bindgen+spans-dev 140s librust-wasm-bindgen-backend-dev librust-wasm-bindgen-dev 140s librust-wasm-bindgen-macro+spans-dev librust-wasm-bindgen-macro-dev 140s librust-wasm-bindgen-macro-support+spans-dev 140s librust-wasm-bindgen-macro-support-dev librust-wasm-bindgen-shared-dev 140s librust-web-sys-dev librust-webp-dev librust-weezl-dev librust-winapi-dev 140s librust-winapi-i686-pc-windows-gnu-dev librust-winapi-util-dev 140s librust-winapi-x86-64-pc-windows-gnu-dev librust-wyz-dev 140s librust-yeslogic-fontconfig-sys-dev librust-zerocopy-derive-dev 140s librust-zerocopy-dev librust-zeroize-derive-dev librust-zeroize-dev 140s libsharpyuv-dev libsharpyuv0 libstd-rust-1.80 libstd-rust-1.80-dev 140s libstdc++-14-dev libtool libtsan2 libubsan1 libwebp-dev libwebp7 140s libwebpdecoder3 libwebpdemux2 libwebpmux3 llvm llvm-19 llvm-19-linker-tools 140s llvm-19-runtime llvm-runtime m4 pkg-config pkgconf pkgconf-bin po-debconf 140s pybuild-plugin-autopkgtest pybuild-plugin-pyproject python3-all 140s python3-build python3-dateutil python3-hypothesis python3-iniconfig 140s python3-installer python3-packaging python3-pluggy python3-pyproject-hooks 140s python3-pytest python3-regex python3-semantic-version 140s python3-setuptools-rust python3-sortedcontainers python3-tiktoken 140s python3-toml python3-wheel python3.12-dev python3.13 python3.13-minimal 140s rustc rustc-1.80 uuid-dev zlib1g-dev 140s 0 upgraded, 473 newly installed, 0 to remove and 0 not upgraded. 140s Need to get 230 MB/230 MB of archives. 140s After this operation, 1019 MB of additional disk space will be used. 140s Get:1 /tmp/autopkgtest.GmeWzd/1-autopkgtest-satdep.deb autopkgtest-satdep ppc64el 0 [864 B] 140s Get:2 http://ftpmaster.internal/ubuntu plucky/main ppc64el libpython3.13-minimal ppc64el 3.13.0-2 [881 kB] 141s Get:3 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3.13-minimal ppc64el 3.13.0-2 [2302 kB] 141s Get:4 http://ftpmaster.internal/ubuntu plucky/main ppc64el m4 ppc64el 1.4.19-4build1 [278 kB] 141s Get:5 http://ftpmaster.internal/ubuntu plucky/main ppc64el autoconf all 2.72-3 [382 kB] 141s Get:6 http://ftpmaster.internal/ubuntu plucky/main ppc64el autotools-dev all 20220109.1 [44.9 kB] 141s Get:7 http://ftpmaster.internal/ubuntu plucky/main ppc64el automake all 1:1.16.5-1.3ubuntu1 [558 kB] 141s Get:8 http://ftpmaster.internal/ubuntu plucky/main ppc64el autopoint all 0.22.5-2 [616 kB] 141s Get:9 http://ftpmaster.internal/ubuntu plucky/main ppc64el libisl23 ppc64el 0.27-1 [882 kB] 141s Get:10 http://ftpmaster.internal/ubuntu plucky/main ppc64el libmpc3 ppc64el 1.3.1-1build2 [62.1 kB] 141s Get:11 http://ftpmaster.internal/ubuntu plucky/main ppc64el cpp-14-powerpc64le-linux-gnu ppc64el 14.2.0-8ubuntu1 [10.5 MB] 142s Get:12 http://ftpmaster.internal/ubuntu plucky/main ppc64el cpp-14 ppc64el 14.2.0-8ubuntu1 [1034 B] 142s Get:13 http://ftpmaster.internal/ubuntu plucky/main ppc64el cpp-powerpc64le-linux-gnu ppc64el 4:14.1.0-2ubuntu1 [5456 B] 142s Get:14 http://ftpmaster.internal/ubuntu plucky/main ppc64el cpp ppc64el 4:14.1.0-2ubuntu1 [22.5 kB] 142s Get:15 http://ftpmaster.internal/ubuntu plucky/main ppc64el libcc1-0 ppc64el 14.2.0-8ubuntu1 [48.1 kB] 142s Get:16 http://ftpmaster.internal/ubuntu plucky/main ppc64el libgomp1 ppc64el 14.2.0-8ubuntu1 [161 kB] 142s Get:17 http://ftpmaster.internal/ubuntu plucky/main ppc64el libitm1 ppc64el 14.2.0-8ubuntu1 [31.9 kB] 142s Get:18 http://ftpmaster.internal/ubuntu plucky/main ppc64el libasan8 ppc64el 14.2.0-8ubuntu1 [2945 kB] 142s Get:19 http://ftpmaster.internal/ubuntu plucky/main ppc64el liblsan0 ppc64el 14.2.0-8ubuntu1 [1322 kB] 142s Get:20 http://ftpmaster.internal/ubuntu plucky/main ppc64el libtsan2 ppc64el 14.2.0-8ubuntu1 [2695 kB] 142s Get:21 http://ftpmaster.internal/ubuntu plucky/main ppc64el libubsan1 ppc64el 14.2.0-8ubuntu1 [1191 kB] 142s Get:22 http://ftpmaster.internal/ubuntu plucky/main ppc64el libquadmath0 ppc64el 14.2.0-8ubuntu1 [158 kB] 142s Get:23 http://ftpmaster.internal/ubuntu plucky/main ppc64el libgcc-14-dev ppc64el 14.2.0-8ubuntu1 [1619 kB] 143s Get:24 http://ftpmaster.internal/ubuntu plucky/main ppc64el gcc-14-powerpc64le-linux-gnu ppc64el 14.2.0-8ubuntu1 [20.6 MB] 143s Get:25 http://ftpmaster.internal/ubuntu plucky/main ppc64el gcc-14 ppc64el 14.2.0-8ubuntu1 [528 kB] 143s Get:26 http://ftpmaster.internal/ubuntu plucky/main ppc64el gcc-powerpc64le-linux-gnu ppc64el 4:14.1.0-2ubuntu1 [1222 B] 143s Get:27 http://ftpmaster.internal/ubuntu plucky/main ppc64el gcc ppc64el 4:14.1.0-2ubuntu1 [5006 B] 143s Get:28 http://ftpmaster.internal/ubuntu plucky/main ppc64el libstdc++-14-dev ppc64el 14.2.0-8ubuntu1 [2673 kB] 143s Get:29 http://ftpmaster.internal/ubuntu plucky/main ppc64el g++-14-powerpc64le-linux-gnu ppc64el 14.2.0-8ubuntu1 [12.0 MB] 143s Get:30 http://ftpmaster.internal/ubuntu plucky/main ppc64el g++-14 ppc64el 14.2.0-8ubuntu1 [19.9 kB] 143s Get:31 http://ftpmaster.internal/ubuntu plucky/main ppc64el g++-powerpc64le-linux-gnu ppc64el 4:14.1.0-2ubuntu1 [968 B] 143s Get:32 http://ftpmaster.internal/ubuntu plucky/main ppc64el g++ ppc64el 4:14.1.0-2ubuntu1 [1090 B] 143s Get:33 http://ftpmaster.internal/ubuntu plucky/main ppc64el build-essential ppc64el 12.10ubuntu1 [4936 B] 143s Get:34 http://ftpmaster.internal/ubuntu plucky/main ppc64el libhttp-parser2.9 ppc64el 2.9.4-6build1 [24.4 kB] 143s Get:35 http://ftpmaster.internal/ubuntu plucky/main ppc64el libgit2-1.7 ppc64el 1.7.2+ds-1ubuntu3 [611 kB] 144s Get:36 http://ftpmaster.internal/ubuntu plucky/main ppc64el libstd-rust-1.80 ppc64el 1.80.1+dfsg0ubuntu1-0ubuntu1 [22.0 MB] 144s Get:37 http://ftpmaster.internal/ubuntu plucky/main ppc64el libstd-rust-1.80-dev ppc64el 1.80.1+dfsg0ubuntu1-0ubuntu1 [39.8 MB] 145s Get:38 http://ftpmaster.internal/ubuntu plucky/main ppc64el rustc-1.80 ppc64el 1.80.1+dfsg0ubuntu1-0ubuntu1 [3375 kB] 145s Get:39 http://ftpmaster.internal/ubuntu plucky/main ppc64el cargo-1.80 ppc64el 1.80.1+dfsg0ubuntu1-0ubuntu1 [6239 kB] 145s Get:40 http://ftpmaster.internal/ubuntu plucky/main ppc64el libjsoncpp25 ppc64el 1.9.5-6build1 [89.0 kB] 145s Get:41 http://ftpmaster.internal/ubuntu plucky/main ppc64el librhash0 ppc64el 1.4.3-3build1 [147 kB] 145s Get:42 http://ftpmaster.internal/ubuntu plucky/main ppc64el cmake-data all 3.30.3-1 [2246 kB] 145s Get:43 http://ftpmaster.internal/ubuntu plucky/main ppc64el cmake ppc64el 3.30.3-1 [12.1 MB] 145s Get:44 http://ftpmaster.internal/ubuntu plucky/main ppc64el libdebhelper-perl all 13.20ubuntu1 [94.2 kB] 145s Get:45 http://ftpmaster.internal/ubuntu plucky/main ppc64el libtool all 2.4.7-8 [166 kB] 145s Get:46 http://ftpmaster.internal/ubuntu plucky/main ppc64el dh-autoreconf all 20 [16.1 kB] 145s Get:47 http://ftpmaster.internal/ubuntu plucky/main ppc64el libarchive-zip-perl all 1.68-1 [90.2 kB] 145s Get:48 http://ftpmaster.internal/ubuntu plucky/main ppc64el libfile-stripnondeterminism-perl all 1.14.0-1 [20.1 kB] 145s Get:49 http://ftpmaster.internal/ubuntu plucky/main ppc64el dh-strip-nondeterminism all 1.14.0-1 [5058 B] 145s Get:50 http://ftpmaster.internal/ubuntu plucky/main ppc64el debugedit ppc64el 1:5.1-1 [52.1 kB] 145s Get:51 http://ftpmaster.internal/ubuntu plucky/main ppc64el dwz ppc64el 0.15-1build6 [142 kB] 145s Get:52 http://ftpmaster.internal/ubuntu plucky/main ppc64el gettext ppc64el 0.22.5-2 [1082 kB] 145s Get:53 http://ftpmaster.internal/ubuntu plucky/main ppc64el intltool-debian all 0.35.0+20060710.6 [23.2 kB] 146s Get:54 http://ftpmaster.internal/ubuntu plucky/main ppc64el po-debconf all 1.0.21+nmu1 [233 kB] 146s Get:55 http://ftpmaster.internal/ubuntu plucky/main ppc64el debhelper all 13.20ubuntu1 [893 kB] 146s Get:56 http://ftpmaster.internal/ubuntu plucky/universe ppc64el dh-python all 6.20241024 [112 kB] 146s Get:57 http://ftpmaster.internal/ubuntu plucky/main ppc64el fonts-dejavu-mono all 2.37-8 [502 kB] 146s Get:58 http://ftpmaster.internal/ubuntu plucky/main ppc64el fonts-dejavu-core all 2.37-8 [835 kB] 146s Get:59 http://ftpmaster.internal/ubuntu plucky/main ppc64el fontconfig-config ppc64el 2.15.0-1.1ubuntu2 [37.4 kB] 146s Get:60 http://ftpmaster.internal/ubuntu plucky/main ppc64el libbrotli-dev ppc64el 1.1.0-2build3 [427 kB] 146s Get:61 http://ftpmaster.internal/ubuntu plucky/main ppc64el libbz2-dev ppc64el 1.0.8-6 [50.2 kB] 146s Get:62 http://ftpmaster.internal/ubuntu plucky/main ppc64el libexpat1-dev ppc64el 2.6.4-1 [149 kB] 146s Get:63 http://ftpmaster.internal/ubuntu plucky/main ppc64el libfontconfig1 ppc64el 2.15.0-1.1ubuntu2 [190 kB] 146s Get:64 http://ftpmaster.internal/ubuntu plucky/main ppc64el zlib1g-dev ppc64el 1:1.3.dfsg+really1.3.1-1ubuntu1 [902 kB] 146s Get:65 http://ftpmaster.internal/ubuntu plucky/main ppc64el libpng-dev ppc64el 1.6.44-2 [325 kB] 146s Get:66 http://ftpmaster.internal/ubuntu plucky/main ppc64el libfreetype-dev ppc64el 2.13.3+dfsg-1 [719 kB] 146s Get:67 http://ftpmaster.internal/ubuntu plucky/main ppc64el uuid-dev ppc64el 2.40.2-1ubuntu1 [55.1 kB] 146s Get:68 http://ftpmaster.internal/ubuntu plucky/main ppc64el libpkgconf3 ppc64el 1.8.1-4 [37.1 kB] 146s Get:69 http://ftpmaster.internal/ubuntu plucky/main ppc64el pkgconf-bin ppc64el 1.8.1-4 [22.5 kB] 146s Get:70 http://ftpmaster.internal/ubuntu plucky/main ppc64el pkgconf ppc64el 1.8.1-4 [16.7 kB] 146s Get:71 http://ftpmaster.internal/ubuntu plucky/main ppc64el libfontconfig-dev ppc64el 2.15.0-1.1ubuntu2 [212 kB] 146s Get:72 http://ftpmaster.internal/ubuntu plucky/main ppc64el libpython3.12-dev ppc64el 3.12.7-3 [6136 kB] 146s Get:73 http://ftpmaster.internal/ubuntu plucky-proposed/main ppc64el libpython3-dev ppc64el 3.12.7-1 [10.3 kB] 146s Get:74 http://ftpmaster.internal/ubuntu plucky/main ppc64el libpython3.13-stdlib ppc64el 3.13.0-2 [2148 kB] 146s Get:75 http://ftpmaster.internal/ubuntu plucky/main ppc64el libpython3.13 ppc64el 3.13.0-2 [2527 kB] 146s Get:76 http://ftpmaster.internal/ubuntu plucky/main ppc64el libpython3.13-dev ppc64el 3.13.0-2 [5958 kB] 146s Get:77 http://ftpmaster.internal/ubuntu plucky-proposed/main ppc64el libpython3-all-dev ppc64el 3.12.7-1 [916 B] 146s Get:78 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ab-glyph-rasterizer-dev ppc64el 0.1.7-1 [12.2 kB] 146s Get:79 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-libm-dev ppc64el 0.2.8-1 [101 kB] 146s Get:80 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ab-glyph-rasterizer+libm-dev ppc64el 0.1.7-1 [1066 B] 146s Get:81 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-core-maths-dev ppc64el 0.1.0-2 [7954 B] 146s Get:82 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ttf-parser-dev ppc64el 0.24.1-1 [148 kB] 146s Get:83 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-owned-ttf-parser-dev ppc64el 0.24.0-1 [129 kB] 146s Get:84 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ab-glyph-dev ppc64el 0.2.28-1 [20.7 kB] 146s Get:85 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-cfg-if-dev ppc64el 1.0.0-1 [10.5 kB] 146s Get:86 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-cpp-demangle-dev ppc64el 0.4.0-1 [66.1 kB] 146s Get:87 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-fallible-iterator-dev ppc64el 0.3.0-2 [20.3 kB] 146s Get:88 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-unicode-ident-dev ppc64el 1.0.13-1 [38.5 kB] 146s Get:89 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-proc-macro2-dev ppc64el 1.0.86-1 [44.8 kB] 146s Get:90 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-quote-dev ppc64el 1.0.37-1 [29.5 kB] 146s Get:91 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-syn-dev ppc64el 2.0.85-1 [219 kB] 146s Get:92 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-derive-arbitrary-dev ppc64el 1.3.2-1 [12.3 kB] 146s Get:93 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-arbitrary-dev ppc64el 1.3.2-1 [31.4 kB] 146s Get:94 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-equivalent-dev ppc64el 1.0.1-1 [8240 B] 146s Get:95 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-critical-section-dev ppc64el 1.1.3-1 [20.5 kB] 146s Get:96 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-serde-derive-dev ppc64el 1.0.210-1 [50.1 kB] 146s Get:97 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-serde-dev ppc64el 1.0.210-2 [66.4 kB] 146s Get:98 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-portable-atomic-dev ppc64el 1.9.0-4 [124 kB] 146s Get:99 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-libc-dev ppc64el 0.2.155-1 [367 kB] 146s Get:100 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-getrandom-dev ppc64el 0.2.12-1 [36.4 kB] 146s Get:101 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-smallvec-dev ppc64el 1.13.2-1 [35.5 kB] 146s Get:102 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-parking-lot-core-dev ppc64el 0.9.10-1 [32.6 kB] 146s Get:103 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-once-cell-dev ppc64el 1.20.2-1 [31.9 kB] 147s Get:104 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-crunchy-dev ppc64el 0.2.2-1 [5340 B] 147s Get:105 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-tiny-keccak-dev ppc64el 2.0.2-1 [20.9 kB] 147s Get:106 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-const-random-macro-dev ppc64el 0.1.16-2 [10.5 kB] 147s Get:107 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-const-random-dev ppc64el 0.1.17-2 [8590 B] 147s Get:108 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-version-check-dev ppc64el 0.9.5-1 [16.9 kB] 147s Get:109 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-byteorder-dev ppc64el 1.5.0-1 [22.4 kB] 147s Get:110 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-zerocopy-derive-dev ppc64el 0.7.32-2 [29.7 kB] 147s Get:111 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-zerocopy-dev ppc64el 0.7.32-1 [116 kB] 147s Get:112 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ahash-dev all 0.8.11-8 [37.9 kB] 147s Get:113 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-allocator-api2-dev ppc64el 0.2.16-1 [54.8 kB] 147s Get:114 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-compiler-builtins-dev ppc64el 0.1.101-1 [156 kB] 147s Get:115 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-either-dev ppc64el 1.13.0-1 [20.2 kB] 147s Get:116 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-crossbeam-utils-dev ppc64el 0.8.19-1 [41.1 kB] 147s Get:117 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-crossbeam-epoch-dev ppc64el 0.9.18-1 [42.3 kB] 147s Get:118 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-crossbeam-epoch+std-dev ppc64el 0.9.18-1 [1128 B] 147s Get:119 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-crossbeam-deque-dev ppc64el 0.8.5-1 [22.4 kB] 147s Get:120 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rayon-core-dev ppc64el 1.12.1-1 [63.7 kB] 147s Get:121 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rayon-dev ppc64el 1.10.0-1 [149 kB] 147s Get:122 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rustc-std-workspace-core-dev ppc64el 1.0.0-1 [3020 B] 147s Get:123 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-hashbrown-dev ppc64el 0.14.5-5 [110 kB] 147s Get:124 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-indexmap-dev ppc64el 2.2.6-1 [66.7 kB] 147s Get:125 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-stable-deref-trait-dev ppc64el 1.2.0-1 [9794 B] 147s Get:126 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-gimli-dev ppc64el 0.28.1-2 [209 kB] 147s Get:127 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-memmap2-dev ppc64el 0.9.3-1 [30.8 kB] 147s Get:128 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-crc32fast-dev ppc64el 1.4.2-1 [39.8 kB] 147s Get:129 http://ftpmaster.internal/ubuntu plucky/main ppc64el pkg-config ppc64el 1.8.1-4 [7362 B] 147s Get:130 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-pkg-config-dev ppc64el 0.3.27-1 [21.5 kB] 147s Get:131 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-libz-sys-dev ppc64el 1.1.20-1 [19.8 kB] 147s Get:132 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-adler-dev ppc64el 1.0.2-2 [15.3 kB] 147s Get:133 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-miniz-oxide-dev ppc64el 0.7.1-1 [51.5 kB] 147s Get:134 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-flate2-dev ppc64el 1.0.34-1 [94.5 kB] 147s Get:135 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-sval-derive-dev ppc64el 2.6.1-2 [11.0 kB] 147s Get:136 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-sval-dev ppc64el 2.6.1-2 [28.0 kB] 147s Get:137 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-sval-ref-dev ppc64el 2.6.1-1 [8944 B] 147s Get:138 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-erased-serde-dev ppc64el 0.3.31-1 [22.7 kB] 147s Get:139 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-serde-fmt-dev all 1.0.3-3 [6956 B] 147s Get:140 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-syn-1-dev ppc64el 1.0.109-2 [188 kB] 147s Get:141 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-no-panic-dev ppc64el 0.1.13-1 [11.3 kB] 147s Get:142 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-itoa-dev ppc64el 1.0.9-1 [13.1 kB] 147s Get:143 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ryu-dev ppc64el 1.0.15-1 [41.7 kB] 147s Get:144 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-serde-json-dev ppc64el 1.0.128-1 [128 kB] 147s Get:145 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-serde-test-dev ppc64el 1.0.171-1 [20.6 kB] 147s Get:146 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-value-bag-serde1-dev ppc64el 1.9.0-1 [7822 B] 147s Get:147 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-sval-buffer-dev ppc64el 2.6.1-1 [16.8 kB] 147s Get:148 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-sval-dynamic-dev ppc64el 2.6.1-1 [9544 B] 147s Get:149 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-sval-fmt-dev ppc64el 2.6.1-1 [12.0 kB] 147s Get:150 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-sval-serde-dev ppc64el 2.6.1-1 [13.2 kB] 147s Get:151 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-value-bag-sval2-dev ppc64el 1.9.0-1 [7862 B] 147s Get:152 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-value-bag-dev ppc64el 1.9.0-1 [37.6 kB] 147s Get:153 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-log-dev ppc64el 0.4.22-1 [43.0 kB] 147s Get:154 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-memchr-dev ppc64el 2.7.4-1 [71.8 kB] 147s Get:155 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ppv-lite86-dev ppc64el 0.2.16-1 [21.9 kB] 147s Get:156 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rand-core-dev ppc64el 0.6.4-2 [23.8 kB] 147s Get:157 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rand-chacha-dev ppc64el 0.3.1-2 [16.9 kB] 147s Get:158 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rand-core+getrandom-dev ppc64el 0.6.4-2 [1054 B] 147s Get:159 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rand-core+serde-dev ppc64el 0.6.4-2 [1108 B] 147s Get:160 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rand-core+std-dev ppc64el 0.6.4-2 [1054 B] 147s Get:161 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rand-dev ppc64el 0.8.5-1 [77.5 kB] 147s Get:162 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-unicode-segmentation-dev ppc64el 1.11.0-1 [74.2 kB] 147s Get:163 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-convert-case-dev ppc64el 0.6.0-2 [19.5 kB] 147s Get:164 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-semver-dev ppc64el 1.0.23-1 [30.6 kB] 147s Get:165 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rustc-version-dev ppc64el 0.4.0-1 [13.8 kB] 147s Get:166 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-derive-more-0.99-dev ppc64el 0.99.18-1 [49.9 kB] 147s Get:167 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-cfg-if-0.1-dev ppc64el 0.1.10-2 [10.2 kB] 147s Get:168 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-blobby-dev ppc64el 0.3.1-1 [11.3 kB] 147s Get:169 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-typenum-dev ppc64el 1.17.0-2 [41.2 kB] 147s Get:170 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-zeroize-derive-dev ppc64el 1.4.2-1 [12.7 kB] 147s Get:171 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-zeroize-dev ppc64el 1.8.1-1 [21.6 kB] 147s Get:172 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-generic-array-dev ppc64el 0.14.7-1 [16.9 kB] 147s Get:173 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-block-buffer-dev ppc64el 0.10.2-2 [12.2 kB] 147s Get:174 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-const-oid-dev ppc64el 0.9.3-1 [40.9 kB] 147s Get:175 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-crypto-common-dev ppc64el 0.1.6-1 [10.5 kB] 147s Get:176 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-subtle-dev ppc64el 2.6.1-1 [16.1 kB] 147s Get:177 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-digest-dev ppc64el 0.10.7-2 [20.9 kB] 147s Get:178 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-static-assertions-dev ppc64el 1.1.0-1 [19.0 kB] 147s Get:179 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-twox-hash-dev ppc64el 1.6.3-1 [21.6 kB] 147s Get:180 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ruzstd-dev ppc64el 0.5.0-1 [44.6 kB] 147s Get:181 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-object-dev ppc64el 0.32.2-1 [228 kB] 147s Get:182 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rustc-demangle-dev ppc64el 0.1.21-1 [27.7 kB] 147s Get:183 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-addr2line-dev ppc64el 0.21.0-2 [36.4 kB] 147s Get:184 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-aho-corasick-dev ppc64el 1.1.3-1 [146 kB] 147s Get:185 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-bitflags-1-dev ppc64el 1.3.2-5 [25.3 kB] 147s Get:186 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-anes-dev ppc64el 0.1.6-1 [21.1 kB] 147s Get:187 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-anstyle-dev ppc64el 1.0.8-1 [16.7 kB] 147s Get:188 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-arrayvec-dev ppc64el 0.7.4-2 [29.9 kB] 147s Get:189 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-utf8parse-dev ppc64el 0.2.1-1 [15.0 kB] 147s Get:190 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-anstyle-parse-dev ppc64el 0.2.1-1 [17.1 kB] 147s Get:191 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-anstyle-query-dev ppc64el 1.0.0-1 [9774 B] 147s Get:192 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-colorchoice-dev ppc64el 1.0.0-1 [8338 B] 147s Get:193 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-anstream-dev ppc64el 0.6.15-1 [25.7 kB] 147s Get:194 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-jobserver-dev ppc64el 0.1.32-1 [29.1 kB] 147s Get:195 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-shlex-dev ppc64el 1.3.0-1 [20.1 kB] 147s Get:196 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-cc-dev ppc64el 1.1.14-1 [73.6 kB] 147s Get:197 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-backtrace-dev ppc64el 0.3.69-2 [69.9 kB] 147s Get:198 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-anyhow-dev ppc64el 1.0.86-1 [44.3 kB] 148s Get:199 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-bytecheck-derive-dev ppc64el 0.6.12-1 [7090 B] 148s Get:200 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ptr-meta-derive-dev ppc64el 0.1.4-1 [3966 B] 148s Get:201 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ptr-meta-dev ppc64el 0.1.4-1 [7340 B] 148s Get:202 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-simdutf8-dev ppc64el 0.1.4-4 [27.2 kB] 148s Get:203 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-bytemuck-derive-dev ppc64el 1.5.0-2 [18.7 kB] 148s Get:204 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-bytemuck-dev ppc64el 1.14.0-1 [42.7 kB] 148s Get:205 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-atomic-dev ppc64el 0.6.0-1 [15.5 kB] 148s Get:206 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-md5-asm-dev ppc64el 0.5.0-2 [7514 B] 148s Get:207 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-md-5-dev ppc64el 0.10.6-1 [17.5 kB] 148s Get:208 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-cpufeatures-dev ppc64el 0.2.11-1 [14.9 kB] 148s Get:209 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-sha1-asm-dev ppc64el 0.5.1-2 [8058 B] 148s Get:210 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-sha1-dev ppc64el 0.10.6-1 [16.0 kB] 148s Get:211 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-slog-dev ppc64el 2.7.0-1 [44.0 kB] 148s Get:212 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-uuid-dev ppc64el 1.10.0-1 [44.2 kB] 148s Get:213 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-bytecheck-dev ppc64el 0.6.12-1 [10.2 kB] 148s Get:214 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-autocfg-dev ppc64el 1.1.0-1 [15.1 kB] 148s Get:215 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-num-traits-dev ppc64el 0.2.19-2 [46.2 kB] 148s Get:216 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-funty-dev ppc64el 2.0.0-1 [13.8 kB] 148s Get:217 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-radium-dev ppc64el 1.1.0-1 [14.9 kB] 148s Get:218 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-tap-dev ppc64el 1.0.1-1 [12.7 kB] 148s Get:219 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-traitobject-dev ppc64el 0.1.0-1 [4542 B] 148s Get:220 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-unsafe-any-dev ppc64el 0.4.2-2 [4626 B] 148s Get:221 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-typemap-dev ppc64el 0.3.3-2 [6726 B] 148s Get:222 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-wyz-dev ppc64el 0.5.1-1 [19.7 kB] 148s Get:223 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-bitvec-dev ppc64el 1.0.1-1 [179 kB] 148s Get:224 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-bytes-dev ppc64el 1.8.0-1 [56.9 kB] 148s Get:225 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rend-dev ppc64el 0.4.0-1 [10.3 kB] 148s Get:226 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rkyv-derive-dev ppc64el 0.7.44-1 [17.5 kB] 148s Get:227 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-seahash-dev ppc64el 4.1.0-1 [25.1 kB] 148s Get:228 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-smol-str-dev ppc64el 0.2.0-1 [15.2 kB] 148s Get:229 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-tinyvec-dev ppc64el 1.6.0-2 [37.7 kB] 148s Get:230 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-tinyvec-macros-dev ppc64el 0.1.0-1 [3856 B] 148s Get:231 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-tinyvec+tinyvec-macros-dev ppc64el 1.6.0-2 [1128 B] 148s Get:232 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rkyv-dev ppc64el 0.7.44-1 [94.4 kB] 148s Get:233 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-num-complex-dev ppc64el 0.4.6-2 [30.8 kB] 148s Get:234 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-approx-dev ppc64el 0.5.1-1 [16.0 kB] 148s Get:235 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-array-init-dev ppc64el 2.0.1-1 [12.3 kB] 148s Get:236 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-async-attributes-dev all 1.1.2-6 [6756 B] 148s Get:237 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-concurrent-queue-dev ppc64el 2.5.0-4 [23.9 kB] 148s Get:238 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-parking-dev ppc64el 2.2.0-1 [11.6 kB] 148s Get:239 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-pin-project-lite-dev ppc64el 0.2.13-1 [30.2 kB] 148s Get:240 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-event-listener-dev all 5.3.1-8 [29.6 kB] 148s Get:241 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-event-listener-strategy-dev ppc64el 0.5.2-3 [12.7 kB] 148s Get:242 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-futures-core-dev ppc64el 0.3.30-1 [16.7 kB] 148s Get:243 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-async-channel-dev all 2.3.1-8 [13.1 kB] 148s Get:244 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-async-task-dev all 4.7.1-3 [29.4 kB] 148s Get:245 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-fastrand-dev ppc64el 2.1.1-1 [17.8 kB] 148s Get:246 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-futures-io-dev ppc64el 0.3.31-1 [11.2 kB] 148s Get:247 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-futures-lite-dev ppc64el 2.3.0-2 [38.6 kB] 148s Get:248 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-slab-dev ppc64el 0.4.9-1 [21.2 kB] 148s Get:249 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-async-executor-dev all 1.13.1-1 [18.7 kB] 148s Get:250 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-async-lock-dev all 3.4.0-4 [29.3 kB] 148s Get:251 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-atomic-waker-dev ppc64el 1.1.2-1 [14.3 kB] 148s Get:252 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-tracing-attributes-dev ppc64el 0.1.27-1 [33.3 kB] 148s Get:253 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-valuable-derive-dev ppc64el 0.1.0-1 [5946 B] 148s Get:254 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-valuable-dev ppc64el 0.1.0-4 [23.5 kB] 148s Get:255 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-tracing-core-dev ppc64el 0.1.32-1 [53.8 kB] 149s Get:256 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-tracing-dev ppc64el 0.1.40-1 [69.5 kB] 149s Get:257 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-blocking-dev all 1.6.1-5 [17.5 kB] 149s Get:258 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-async-fs-dev all 2.1.2-4 [15.3 kB] 149s Get:259 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-bitflags-dev ppc64el 2.6.0-1 [41.1 kB] 149s Get:260 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-compiler-builtins+core-dev ppc64el 0.1.101-1 [1092 B] 149s Get:261 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-compiler-builtins+rustc-dep-of-std-dev ppc64el 0.1.101-1 [1104 B] 149s Get:262 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-errno-dev ppc64el 0.3.8-1 [13.0 kB] 149s Get:263 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-linux-raw-sys-dev ppc64el 0.4.14-1 [138 kB] 149s Get:264 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rustix-dev ppc64el 0.38.32-1 [274 kB] 149s Get:265 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-polling-dev ppc64el 3.4.0-1 [47.8 kB] 149s Get:266 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-async-io-dev ppc64el 2.3.3-4 [41.0 kB] 149s Get:267 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-mio-dev ppc64el 1.0.2-2 [87.6 kB] 149s Get:268 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-owning-ref-dev ppc64el 0.4.1-1 [13.7 kB] 149s Get:269 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-scopeguard-dev ppc64el 1.2.0-1 [13.3 kB] 149s Get:270 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-lock-api-dev ppc64el 0.4.12-1 [22.9 kB] 149s Get:271 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-parking-lot-dev ppc64el 0.12.3-1 [38.7 kB] 149s Get:272 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-signal-hook-registry-dev ppc64el 1.4.0-1 [19.2 kB] 149s Get:273 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-socket2-dev ppc64el 0.5.7-1 [48.3 kB] 149s Get:274 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-tokio-macros-dev ppc64el 2.4.0-2 [14.0 kB] 149s Get:275 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-tokio-dev ppc64el 1.39.3-3 [561 kB] 149s Get:276 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-async-global-executor-dev ppc64el 2.4.1-5 [14.6 kB] 149s Get:277 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-async-net-dev all 2.0.0-4 [14.6 kB] 149s Get:278 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-async-signal-dev ppc64el 0.2.10-1 [16.0 kB] 149s Get:279 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-async-process-dev all 2.3.0-1 [21.2 kB] 149s Get:280 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-kv-log-macro-dev all 1.0.8-4 [7290 B] 149s Get:281 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-pin-utils-dev ppc64el 0.1.0-1 [9340 B] 149s Get:282 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-async-std-dev all 1.13.0-1 [170 kB] 149s Get:283 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-base64-dev ppc64el 0.21.7-1 [65.1 kB] 149s Get:284 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-bit-vec-dev ppc64el 0.6.3-1 [21.1 kB] 149s Get:285 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-bit-set-dev ppc64el 0.5.2-1 [15.7 kB] 149s Get:286 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-bit-set+std-dev ppc64el 0.5.2-1 [1088 B] 149s Get:287 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-regex-syntax-dev ppc64el 0.8.2-1 [200 kB] 149s Get:288 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-regex-automata-dev ppc64el 0.4.7-1 [424 kB] 149s Get:289 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-bstr-dev ppc64el 1.7.0-2build1 [271 kB] 149s Get:290 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-bumpalo-dev ppc64el 3.16.0-1 [75.7 kB] 149s Get:291 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-cast-dev ppc64el 0.3.0-1 [13.1 kB] 149s Get:292 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-iana-time-zone-dev ppc64el 0.1.60-1 [25.1 kB] 149s Get:293 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-wasm-bindgen-shared-dev ppc64el 0.2.87-1 [9094 B] 149s Get:294 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-wasm-bindgen-backend-dev ppc64el 0.2.87-1 [27.0 kB] 149s Get:295 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-wasm-bindgen-macro-support-dev ppc64el 0.2.87-1 [21.2 kB] 149s Get:296 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-wasm-bindgen-macro-dev ppc64el 0.2.87-1 [16.6 kB] 149s Get:297 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-wasm-bindgen-dev ppc64el 0.2.87-1 [157 kB] 149s Get:298 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-wasm-bindgen-macro-support+spans-dev ppc64el 0.2.87-1 [1078 B] 149s Get:299 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-wasm-bindgen-macro+spans-dev ppc64el 0.2.87-1 [1060 B] 149s Get:300 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-wasm-bindgen+spans-dev ppc64el 0.2.87-1 [1040 B] 149s Get:301 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-wasm-bindgen+default-dev ppc64el 0.2.87-1 [1048 B] 149s Get:302 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-js-sys-dev ppc64el 0.3.64-1 [71.9 kB] 149s Get:303 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-pure-rust-locales-dev ppc64el 0.8.1-1 [112 kB] 149s Get:304 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-chrono-dev ppc64el 0.4.38-2 [172 kB] 149s Get:305 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-regex-dev ppc64el 1.10.6-1 [199 kB] 150s Get:306 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-parse-zoneinfo-dev ppc64el 0.3.0-1 [71.0 kB] 150s Get:307 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-siphasher-dev ppc64el 0.3.10-1 [12.0 kB] 150s Get:308 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-phf-shared-dev ppc64el 0.11.2-1 [15.6 kB] 150s Get:309 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-phf-dev ppc64el 0.11.2-1 [21.6 kB] 150s Get:310 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-uncased-dev ppc64el 0.9.6-2 [12.2 kB] 150s Get:311 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-phf-shared+uncased-dev ppc64el 0.11.2-1 [1030 B] 150s Get:312 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-phf+uncased-dev ppc64el 0.11.2-1 [1030 B] 150s Get:313 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ciborium-io-dev ppc64el 0.2.2-1 [8184 B] 150s Get:314 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-half-dev ppc64el 1.8.2-4 [34.8 kB] 150s Get:315 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ciborium-ll-dev ppc64el 0.2.2-1 [15.8 kB] 150s Get:316 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ciborium-dev ppc64el 0.2.2-2 [32.6 kB] 150s Get:317 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-clap-lex-dev ppc64el 0.7.2-2 [14.3 kB] 150s Get:318 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-strsim-dev ppc64el 0.11.1-1 [15.9 kB] 150s Get:319 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-terminal-size-dev ppc64el 0.3.0-2 [12.6 kB] 150s Get:320 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-unicase-dev ppc64el 2.7.0-1 [19.4 kB] 150s Get:321 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-unicode-width-dev ppc64el 0.1.14-1 [196 kB] 150s Get:322 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-clap-builder-dev ppc64el 4.5.15-2 [135 kB] 150s Get:323 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-heck-dev ppc64el 0.4.1-1 [13.3 kB] 150s Get:324 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-clap-derive-dev ppc64el 4.5.13-2 [29.3 kB] 150s Get:325 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-clap-dev ppc64el 4.5.16-1 [52.3 kB] 150s Get:326 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-csv-core-dev ppc64el 0.1.11-1 [25.9 kB] 150s Get:327 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-csv-dev ppc64el 1.3.0-1 [729 kB] 150s Get:328 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-futures-sink-dev ppc64el 0.3.31-1 [10.1 kB] 150s Get:329 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-futures-channel-dev ppc64el 0.3.30-1 [31.8 kB] 150s Get:330 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-futures-task-dev ppc64el 0.3.30-1 [13.5 kB] 150s Get:331 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-futures-macro-dev ppc64el 0.3.30-1 [13.3 kB] 150s Get:332 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-futures-util-dev ppc64el 0.3.30-2 [127 kB] 150s Get:333 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-num-cpus-dev ppc64el 1.16.0-1 [18.1 kB] 150s Get:334 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-futures-executor-dev ppc64el 0.3.30-1 [19.8 kB] 150s Get:335 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-futures-dev ppc64el 0.3.30-2 [53.2 kB] 150s Get:336 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-is-terminal-dev ppc64el 0.4.13-1 [8268 B] 150s Get:337 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-itertools-dev ppc64el 0.10.5-1 [101 kB] 150s Get:338 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-oorandom-dev ppc64el 11.1.3-1 [11.3 kB] 150s Get:339 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-winapi-i686-pc-windows-gnu-dev ppc64el 0.4.0-1 [3648 B] 150s Get:340 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-winapi-x86-64-pc-windows-gnu-dev ppc64el 0.4.0-1 [3660 B] 150s Get:341 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-winapi-dev ppc64el 0.3.9-1 [953 kB] 150s Get:342 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-dirs-sys-next-dev ppc64el 0.1.1-1 [12.1 kB] 150s Get:343 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-dirs-next-dev ppc64el 2.0.0-1 [13.1 kB] 150s Get:344 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-float-ord-dev ppc64el 0.3.2-1 [9402 B] 150s Get:345 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-cmake-dev ppc64el 0.1.45-1 [16.0 kB] 150s Get:346 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-freetype-sys-dev ppc64el 0.13.1-1 [11.8 kB] 150s Get:347 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-freetype-dev ppc64el 0.7.0-4 [20.4 kB] 150s Get:348 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-spin-dev ppc64el 0.9.8-4 [33.4 kB] 150s Get:349 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-lazy-static-dev ppc64el 1.5.0-1 [14.2 kB] 150s Get:350 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-pathfinder-simd-dev ppc64el 0.5.2-1 [20.1 kB] 150s Get:351 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-pathfinder-geometry-dev ppc64el 0.5.1-1 [13.2 kB] 150s Get:352 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-winapi-util-dev ppc64el 0.1.6-1 [14.0 kB] 150s Get:353 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-same-file-dev ppc64el 1.0.6-1 [11.5 kB] 150s Get:354 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-walkdir-dev ppc64el 2.5.0-1 [24.5 kB] 150s Get:355 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-const-cstr-dev ppc64el 0.3.0-1 [9070 B] 150s Get:356 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-libloading-dev ppc64el 0.8.5-1 [29.2 kB] 150s Get:357 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-dlib-dev ppc64el 0.5.2-2 [7972 B] 150s Get:358 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-yeslogic-fontconfig-sys-dev ppc64el 3.0.1-1 [8106 B] 150s Get:359 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-font-kit-dev ppc64el 0.11.0-2 [56.2 kB] 150s Get:360 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-color-quant-dev ppc64el 1.1.0-1 [8468 B] 150s Get:361 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-weezl-dev ppc64el 0.1.5-1 [30.3 kB] 150s Get:362 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-gif-dev ppc64el 0.11.3-1 [31.9 kB] 150s Get:363 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-jpeg-decoder-dev ppc64el 0.3.0-1 [717 kB] 150s Get:364 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-num-integer-dev ppc64el 0.1.46-1 [22.6 kB] 150s Get:365 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-humantime-dev ppc64el 2.1.0-1 [18.2 kB] 150s Get:366 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-termcolor-dev ppc64el 1.4.1-1 [19.7 kB] 150s Get:367 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-env-logger-dev ppc64el 0.10.2-2 [34.4 kB] 150s Get:368 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-quickcheck-dev ppc64el 1.0.3-3 [27.9 kB] 150s Get:369 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-num-bigint-dev ppc64el 0.4.6-1 [84.9 kB] 150s Get:370 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-num-rational-dev ppc64el 0.4.2-1 [28.7 kB] 150s Get:371 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-png-dev ppc64el 0.17.7-3 [63.4 kB] 150s Get:372 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-qoi-dev ppc64el 0.4.1-2 [56.7 kB] 150s Get:373 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-tiff-dev ppc64el 0.9.0-1 [1413 kB] 150s Get:374 http://ftpmaster.internal/ubuntu plucky/main ppc64el libsharpyuv0 ppc64el 1.4.0-0.1 [22.0 kB] 150s Get:375 http://ftpmaster.internal/ubuntu plucky/main ppc64el libwebp7 ppc64el 1.4.0-0.1 [309 kB] 150s Get:376 http://ftpmaster.internal/ubuntu plucky/main ppc64el libwebpdemux2 ppc64el 1.4.0-0.1 [14.1 kB] 150s Get:377 http://ftpmaster.internal/ubuntu plucky/main ppc64el libwebpmux3 ppc64el 1.4.0-0.1 [31.4 kB] 150s Get:378 http://ftpmaster.internal/ubuntu plucky/main ppc64el libwebpdecoder3 ppc64el 1.4.0-0.1 [144 kB] 150s Get:379 http://ftpmaster.internal/ubuntu plucky/main ppc64el libsharpyuv-dev ppc64el 1.4.0-0.1 [24.4 kB] 150s Get:380 http://ftpmaster.internal/ubuntu plucky/main ppc64el libwebp-dev ppc64el 1.4.0-0.1 [451 kB] 150s Get:381 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-libwebp-sys-dev ppc64el 0.9.5-1build1 [1357 kB] 150s Get:382 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-webp-dev ppc64el 0.2.6-1 [1846 kB] 151s Get:383 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-image-dev ppc64el 0.24.7-2 [229 kB] 151s Get:384 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-plotters-backend-dev ppc64el 0.3.7-1 [15.7 kB] 151s Get:385 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-plotters-bitmap-dev ppc64el 0.3.3-3 [17.1 kB] 151s Get:386 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-plotters-svg-dev ppc64el 0.3.5-1 [9258 B] 151s Get:387 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-web-sys-dev ppc64el 0.3.64-2 [581 kB] 151s Get:388 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-plotters-dev ppc64el 0.3.5-4 [118 kB] 151s Get:389 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-smol-dev all 2.0.2-1 [205 kB] 151s Get:390 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-tinytemplate-dev ppc64el 1.2.1-1 [26.8 kB] 151s Get:391 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-criterion-dev all 0.5.1-6 [104 kB] 151s Get:392 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-phf-generator-dev ppc64el 0.11.2-2 [12.3 kB] 151s Get:393 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-phf-codegen-dev ppc64el 0.11.2-1 [14.3 kB] 151s Get:394 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-chrono-tz-build-dev ppc64el 0.2.1-1 [12.1 kB] 151s Get:395 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-chrono-tz-dev ppc64el 0.8.6-2 [513 kB] 151s Get:396 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ctor-dev ppc64el 0.1.26-1 [12.0 kB] 151s Get:397 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-powerfmt-macros-dev ppc64el 0.1.0-1 [10.5 kB] 151s Get:398 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-powerfmt-dev ppc64el 0.2.0-1 [16.5 kB] 151s Get:399 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-deranged-dev ppc64el 0.3.11-1 [18.4 kB] 151s Get:400 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-eui48-dev ppc64el 1.1.0-2 [16.1 kB] 151s Get:401 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-indenter-dev ppc64el 0.3.3-1 [8648 B] 151s Get:402 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-eyre-dev ppc64el 0.6.12-1 [38.0 kB] 151s Get:403 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-eyre+default-dev ppc64el 0.6.12-1 [1050 B] 151s Get:404 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-fancy-regex-dev ppc64el 0.11.0-2 [54.7 kB] 151s Get:405 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-fnv-dev ppc64el 1.0.7-1 [12.8 kB] 151s Get:406 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-geo-types-dev ppc64el 0.7.11-2 [32.8 kB] 151s Get:407 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-ghost-dev ppc64el 0.1.5-1 [16.1 kB] 151s Get:408 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-hmac-dev ppc64el 0.12.1-1 [43.9 kB] 151s Get:409 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-indoc-dev ppc64el 2.0.5-1 [16.7 kB] 151s Get:410 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-inventory-dev ppc64el 0.3.2-1 [13.5 kB] 151s Get:411 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-memoffset-dev ppc64el 0.8.0-1 [10.9 kB] 151s Get:412 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-num-conv-dev ppc64el 0.1.0-1 [8996 B] 151s Get:413 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-num-threads-dev ppc64el 0.1.7-1 [9156 B] 151s Get:414 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-postgres-derive-dev ppc64el 0.4.5-1 [13.4 kB] 151s Get:415 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-sha2-asm-dev ppc64el 0.6.2-2 [14.4 kB] 151s Get:416 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-sha2-dev ppc64el 0.10.8-1 [25.6 kB] 151s Get:417 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-unicode-bidi-dev ppc64el 0.3.13-1 [39.9 kB] 151s Get:418 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-unicode-normalization-dev ppc64el 0.1.22-1 [104 kB] 151s Get:419 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-stringprep-dev ppc64el 0.1.2-1 [16.5 kB] 151s Get:420 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-postgres-protocol-dev ppc64el 0.6.6-2 [25.9 kB] 151s Get:421 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-time-core-dev ppc64el 0.1.2-1 [9138 B] 151s Get:422 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-time-macros-dev ppc64el 0.2.16-1 [25.1 kB] 151s Get:423 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-time-dev ppc64el 0.3.36-2 [99.4 kB] 151s Get:424 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-postgres-types-dev ppc64el 0.2.6-2 [30.1 kB] 151s Get:425 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rand-xorshift-dev ppc64el 0.3.0-2 [10.9 kB] 151s Get:426 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-quick-error-dev ppc64el 2.0.1-1 [15.6 kB] 151s Get:427 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-tempfile-dev ppc64el 3.10.1-1 [33.7 kB] 151s Get:428 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rusty-fork-dev ppc64el 0.3.0-1 [20.4 kB] 151s Get:429 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-wait-timeout-dev ppc64el 0.2.0-1 [14.2 kB] 151s Get:430 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rusty-fork+wait-timeout-dev ppc64el 0.3.0-1 [1134 B] 151s Get:431 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-unarray-dev ppc64el 0.1.4-1 [14.6 kB] 151s Get:432 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-proptest-dev ppc64el 1.5.0-2 [171 kB] 151s Get:433 http://ftpmaster.internal/ubuntu plucky/universe ppc64el llvm-19-runtime ppc64el 1:19.1.2-1ubuntu1 [589 kB] 152s Get:434 http://ftpmaster.internal/ubuntu plucky/universe ppc64el llvm-runtime ppc64el 1:19.0-60~exp1 [5610 B] 152s Get:435 http://ftpmaster.internal/ubuntu plucky/universe ppc64el llvm-19-linker-tools ppc64el 1:19.1.2-1ubuntu1 [1373 kB] 152s Get:436 http://ftpmaster.internal/ubuntu plucky/universe ppc64el libpfm4 ppc64el 4.13.0+git83-g91970fe-1 [181 kB] 152s Get:437 http://ftpmaster.internal/ubuntu plucky/universe ppc64el llvm-19 ppc64el 1:19.1.2-1ubuntu1 [19.5 MB] 152s Get:438 http://ftpmaster.internal/ubuntu plucky/universe ppc64el llvm ppc64el 1:19.0-60~exp1 [4146 B] 152s Get:439 http://ftpmaster.internal/ubuntu plucky/universe ppc64el binutils-mingw-w64-x86-64 ppc64el 2.43.1-4ubuntu1+12 [3877 kB] 153s Get:440 http://ftpmaster.internal/ubuntu plucky/universe ppc64el binutils-mingw-w64-i686 ppc64el 2.43.1-4ubuntu1+12 [3595 kB] 153s Get:441 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-python3-dll-a-dev ppc64el 0.2.10-1 [31.6 kB] 153s Get:442 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-target-lexicon-dev ppc64el 0.12.14-1 [25.1 kB] 153s Get:443 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-pyo3-build-config-dev ppc64el 0.22.6-1 [30.8 kB] 153s Get:444 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3.12-dev ppc64el 3.12.7-3 [505 kB] 153s Get:445 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-pyo3-ffi-dev ppc64el 0.22.6-1build1 [62.6 kB] 153s Get:446 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-pyo3-macros-backend-dev ppc64el 0.22.6-1 [58.5 kB] 153s Get:447 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-pyo3-macros-dev ppc64el 0.22.6-1 [10.4 kB] 153s Get:448 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rust-decimal-dev ppc64el 1.36.0-1 [114 kB] 153s Get:449 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-unindent-dev ppc64el 0.2.3-1 [9190 B] 153s Get:450 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-pyo3-dev ppc64el 0.22.6-1 [415 kB] 153s Get:451 http://ftpmaster.internal/ubuntu plucky/universe ppc64el librust-rustc-hash-dev ppc64el 1.1.0-1 [10.8 kB] 153s Get:452 http://ftpmaster.internal/ubuntu plucky/universe ppc64el pybuild-plugin-autopkgtest all 6.20241024 [1746 B] 153s Get:453 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3-packaging all 24.2-1 [51.5 kB] 153s Get:454 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-pyproject-hooks all 1.2.0-1 [10.2 kB] 153s Get:455 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-toml all 0.10.2-1 [16.5 kB] 153s Get:456 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-wheel all 0.45.0-1 [57.7 kB] 153s Get:457 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-build all 1.2.2-1 [31.0 kB] 153s Get:458 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-installer all 0.7.0+dfsg1-3 [17.4 kB] 153s Get:459 http://ftpmaster.internal/ubuntu plucky/universe ppc64el pybuild-plugin-pyproject all 6.20241024 [1728 B] 153s Get:460 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3.13 ppc64el 3.13.0-2 [719 kB] 153s Get:461 http://ftpmaster.internal/ubuntu plucky-proposed/main ppc64el python3-all ppc64el 3.12.7-1 [888 B] 153s Get:462 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3-dateutil all 2.9.0-3 [80.2 kB] 153s Get:463 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3-sortedcontainers all 2.4.0-2 [27.6 kB] 153s Get:464 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-hypothesis all 6.119.3-1 [329 kB] 153s Get:465 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-iniconfig all 1.1.1-2 [6024 B] 153s Get:466 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-pluggy all 1.5.0-1 [21.0 kB] 153s Get:467 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-pytest all 8.3.3-1 [251 kB] 153s Get:468 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-regex ppc64el 0.1.20240724-1build1 [330 kB] 153s Get:469 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3-semantic-version all 2.10.0-2 [15.1 kB] 153s Get:470 http://ftpmaster.internal/ubuntu plucky/main ppc64el rustc ppc64el 1.80.1ubuntu2 [2760 B] 153s Get:471 http://ftpmaster.internal/ubuntu plucky/main ppc64el cargo ppc64el 1.80.1ubuntu2 [2244 B] 153s Get:472 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-setuptools-rust all 1.9.0+dfsg-2 [23.1 kB] 153s Get:473 http://ftpmaster.internal/ubuntu plucky-proposed/universe ppc64el python3-tiktoken ppc64el 0.8.0-1build1 [823 kB] 154s Fetched 230 MB in 13s (18.0 MB/s) 154s Selecting previously unselected package libpython3.13-minimal:ppc64el. 154s (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 ... 73877 files and directories currently installed.) 154s Preparing to unpack .../000-libpython3.13-minimal_3.13.0-2_ppc64el.deb ... 154s Unpacking libpython3.13-minimal:ppc64el (3.13.0-2) ... 154s Selecting previously unselected package python3.13-minimal. 154s Preparing to unpack .../001-python3.13-minimal_3.13.0-2_ppc64el.deb ... 154s Unpacking python3.13-minimal (3.13.0-2) ... 154s Selecting previously unselected package m4. 154s Preparing to unpack .../002-m4_1.4.19-4build1_ppc64el.deb ... 154s Unpacking m4 (1.4.19-4build1) ... 154s Selecting previously unselected package autoconf. 154s Preparing to unpack .../003-autoconf_2.72-3_all.deb ... 154s Unpacking autoconf (2.72-3) ... 154s Selecting previously unselected package autotools-dev. 154s Preparing to unpack .../004-autotools-dev_20220109.1_all.deb ... 154s Unpacking autotools-dev (20220109.1) ... 154s Selecting previously unselected package automake. 154s Preparing to unpack .../005-automake_1%3a1.16.5-1.3ubuntu1_all.deb ... 154s Unpacking automake (1:1.16.5-1.3ubuntu1) ... 154s Selecting previously unselected package autopoint. 154s Preparing to unpack .../006-autopoint_0.22.5-2_all.deb ... 154s Unpacking autopoint (0.22.5-2) ... 154s Selecting previously unselected package libisl23:ppc64el. 154s Preparing to unpack .../007-libisl23_0.27-1_ppc64el.deb ... 154s Unpacking libisl23:ppc64el (0.27-1) ... 154s Selecting previously unselected package libmpc3:ppc64el. 154s Preparing to unpack .../008-libmpc3_1.3.1-1build2_ppc64el.deb ... 154s Unpacking libmpc3:ppc64el (1.3.1-1build2) ... 154s Selecting previously unselected package cpp-14-powerpc64le-linux-gnu. 154s Preparing to unpack .../009-cpp-14-powerpc64le-linux-gnu_14.2.0-8ubuntu1_ppc64el.deb ... 154s Unpacking cpp-14-powerpc64le-linux-gnu (14.2.0-8ubuntu1) ... 155s Selecting previously unselected package cpp-14. 155s Preparing to unpack .../010-cpp-14_14.2.0-8ubuntu1_ppc64el.deb ... 155s Unpacking cpp-14 (14.2.0-8ubuntu1) ... 155s Selecting previously unselected package cpp-powerpc64le-linux-gnu. 155s Preparing to unpack .../011-cpp-powerpc64le-linux-gnu_4%3a14.1.0-2ubuntu1_ppc64el.deb ... 155s Unpacking cpp-powerpc64le-linux-gnu (4:14.1.0-2ubuntu1) ... 155s Selecting previously unselected package cpp. 155s Preparing to unpack .../012-cpp_4%3a14.1.0-2ubuntu1_ppc64el.deb ... 155s Unpacking cpp (4:14.1.0-2ubuntu1) ... 155s Selecting previously unselected package libcc1-0:ppc64el. 155s Preparing to unpack .../013-libcc1-0_14.2.0-8ubuntu1_ppc64el.deb ... 155s Unpacking libcc1-0:ppc64el (14.2.0-8ubuntu1) ... 155s Selecting previously unselected package libgomp1:ppc64el. 155s Preparing to unpack .../014-libgomp1_14.2.0-8ubuntu1_ppc64el.deb ... 155s Unpacking libgomp1:ppc64el (14.2.0-8ubuntu1) ... 155s Selecting previously unselected package libitm1:ppc64el. 155s Preparing to unpack .../015-libitm1_14.2.0-8ubuntu1_ppc64el.deb ... 155s Unpacking libitm1:ppc64el (14.2.0-8ubuntu1) ... 155s Selecting previously unselected package libasan8:ppc64el. 155s Preparing to unpack .../016-libasan8_14.2.0-8ubuntu1_ppc64el.deb ... 155s Unpacking libasan8:ppc64el (14.2.0-8ubuntu1) ... 155s Selecting previously unselected package liblsan0:ppc64el. 155s Preparing to unpack .../017-liblsan0_14.2.0-8ubuntu1_ppc64el.deb ... 155s Unpacking liblsan0:ppc64el (14.2.0-8ubuntu1) ... 155s Selecting previously unselected package libtsan2:ppc64el. 155s Preparing to unpack .../018-libtsan2_14.2.0-8ubuntu1_ppc64el.deb ... 155s Unpacking libtsan2:ppc64el (14.2.0-8ubuntu1) ... 155s Selecting previously unselected package libubsan1:ppc64el. 155s Preparing to unpack .../019-libubsan1_14.2.0-8ubuntu1_ppc64el.deb ... 155s Unpacking libubsan1:ppc64el (14.2.0-8ubuntu1) ... 155s Selecting previously unselected package libquadmath0:ppc64el. 155s Preparing to unpack .../020-libquadmath0_14.2.0-8ubuntu1_ppc64el.deb ... 155s Unpacking libquadmath0:ppc64el (14.2.0-8ubuntu1) ... 155s Selecting previously unselected package libgcc-14-dev:ppc64el. 155s Preparing to unpack .../021-libgcc-14-dev_14.2.0-8ubuntu1_ppc64el.deb ... 155s Unpacking libgcc-14-dev:ppc64el (14.2.0-8ubuntu1) ... 155s Selecting previously unselected package gcc-14-powerpc64le-linux-gnu. 155s Preparing to unpack .../022-gcc-14-powerpc64le-linux-gnu_14.2.0-8ubuntu1_ppc64el.deb ... 155s Unpacking gcc-14-powerpc64le-linux-gnu (14.2.0-8ubuntu1) ... 155s Selecting previously unselected package gcc-14. 155s Preparing to unpack .../023-gcc-14_14.2.0-8ubuntu1_ppc64el.deb ... 155s Unpacking gcc-14 (14.2.0-8ubuntu1) ... 155s Selecting previously unselected package gcc-powerpc64le-linux-gnu. 155s Preparing to unpack .../024-gcc-powerpc64le-linux-gnu_4%3a14.1.0-2ubuntu1_ppc64el.deb ... 155s Unpacking gcc-powerpc64le-linux-gnu (4:14.1.0-2ubuntu1) ... 155s Selecting previously unselected package gcc. 155s Preparing to unpack .../025-gcc_4%3a14.1.0-2ubuntu1_ppc64el.deb ... 155s Unpacking gcc (4:14.1.0-2ubuntu1) ... 155s Selecting previously unselected package libstdc++-14-dev:ppc64el. 155s Preparing to unpack .../026-libstdc++-14-dev_14.2.0-8ubuntu1_ppc64el.deb ... 155s Unpacking libstdc++-14-dev:ppc64el (14.2.0-8ubuntu1) ... 155s Selecting previously unselected package g++-14-powerpc64le-linux-gnu. 155s Preparing to unpack .../027-g++-14-powerpc64le-linux-gnu_14.2.0-8ubuntu1_ppc64el.deb ... 155s Unpacking g++-14-powerpc64le-linux-gnu (14.2.0-8ubuntu1) ... 156s Selecting previously unselected package g++-14. 156s Preparing to unpack .../028-g++-14_14.2.0-8ubuntu1_ppc64el.deb ... 156s Unpacking g++-14 (14.2.0-8ubuntu1) ... 156s Selecting previously unselected package g++-powerpc64le-linux-gnu. 156s Preparing to unpack .../029-g++-powerpc64le-linux-gnu_4%3a14.1.0-2ubuntu1_ppc64el.deb ... 156s Unpacking g++-powerpc64le-linux-gnu (4:14.1.0-2ubuntu1) ... 156s Selecting previously unselected package g++. 156s Preparing to unpack .../030-g++_4%3a14.1.0-2ubuntu1_ppc64el.deb ... 156s Unpacking g++ (4:14.1.0-2ubuntu1) ... 156s Selecting previously unselected package build-essential. 156s Preparing to unpack .../031-build-essential_12.10ubuntu1_ppc64el.deb ... 156s Unpacking build-essential (12.10ubuntu1) ... 156s Selecting previously unselected package libhttp-parser2.9:ppc64el. 156s Preparing to unpack .../032-libhttp-parser2.9_2.9.4-6build1_ppc64el.deb ... 156s Unpacking libhttp-parser2.9:ppc64el (2.9.4-6build1) ... 156s Selecting previously unselected package libgit2-1.7:ppc64el. 156s Preparing to unpack .../033-libgit2-1.7_1.7.2+ds-1ubuntu3_ppc64el.deb ... 156s Unpacking libgit2-1.7:ppc64el (1.7.2+ds-1ubuntu3) ... 156s Selecting previously unselected package libstd-rust-1.80:ppc64el. 156s Preparing to unpack .../034-libstd-rust-1.80_1.80.1+dfsg0ubuntu1-0ubuntu1_ppc64el.deb ... 156s Unpacking libstd-rust-1.80:ppc64el (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 156s Selecting previously unselected package libstd-rust-1.80-dev:ppc64el. 156s Preparing to unpack .../035-libstd-rust-1.80-dev_1.80.1+dfsg0ubuntu1-0ubuntu1_ppc64el.deb ... 156s Unpacking libstd-rust-1.80-dev:ppc64el (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 157s Selecting previously unselected package rustc-1.80. 157s Preparing to unpack .../036-rustc-1.80_1.80.1+dfsg0ubuntu1-0ubuntu1_ppc64el.deb ... 157s Unpacking rustc-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 157s Selecting previously unselected package cargo-1.80. 157s Preparing to unpack .../037-cargo-1.80_1.80.1+dfsg0ubuntu1-0ubuntu1_ppc64el.deb ... 157s Unpacking cargo-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 157s Selecting previously unselected package libjsoncpp25:ppc64el. 157s Preparing to unpack .../038-libjsoncpp25_1.9.5-6build1_ppc64el.deb ... 157s Unpacking libjsoncpp25:ppc64el (1.9.5-6build1) ... 157s Selecting previously unselected package librhash0:ppc64el. 157s Preparing to unpack .../039-librhash0_1.4.3-3build1_ppc64el.deb ... 157s Unpacking librhash0:ppc64el (1.4.3-3build1) ... 157s Selecting previously unselected package cmake-data. 157s Preparing to unpack .../040-cmake-data_3.30.3-1_all.deb ... 157s Unpacking cmake-data (3.30.3-1) ... 157s Selecting previously unselected package cmake. 157s Preparing to unpack .../041-cmake_3.30.3-1_ppc64el.deb ... 157s Unpacking cmake (3.30.3-1) ... 157s Selecting previously unselected package libdebhelper-perl. 157s Preparing to unpack .../042-libdebhelper-perl_13.20ubuntu1_all.deb ... 157s Unpacking libdebhelper-perl (13.20ubuntu1) ... 158s Selecting previously unselected package libtool. 158s Preparing to unpack .../043-libtool_2.4.7-8_all.deb ... 158s Unpacking libtool (2.4.7-8) ... 158s Selecting previously unselected package dh-autoreconf. 158s Preparing to unpack .../044-dh-autoreconf_20_all.deb ... 158s Unpacking dh-autoreconf (20) ... 158s Selecting previously unselected package libarchive-zip-perl. 158s Preparing to unpack .../045-libarchive-zip-perl_1.68-1_all.deb ... 158s Unpacking libarchive-zip-perl (1.68-1) ... 158s Selecting previously unselected package libfile-stripnondeterminism-perl. 158s Preparing to unpack .../046-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... 158s Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... 158s Selecting previously unselected package dh-strip-nondeterminism. 158s Preparing to unpack .../047-dh-strip-nondeterminism_1.14.0-1_all.deb ... 158s Unpacking dh-strip-nondeterminism (1.14.0-1) ... 158s Selecting previously unselected package debugedit. 158s Preparing to unpack .../048-debugedit_1%3a5.1-1_ppc64el.deb ... 158s Unpacking debugedit (1:5.1-1) ... 158s Selecting previously unselected package dwz. 158s Preparing to unpack .../049-dwz_0.15-1build6_ppc64el.deb ... 158s Unpacking dwz (0.15-1build6) ... 158s Selecting previously unselected package gettext. 158s Preparing to unpack .../050-gettext_0.22.5-2_ppc64el.deb ... 158s Unpacking gettext (0.22.5-2) ... 158s Selecting previously unselected package intltool-debian. 158s Preparing to unpack .../051-intltool-debian_0.35.0+20060710.6_all.deb ... 158s Unpacking intltool-debian (0.35.0+20060710.6) ... 158s Selecting previously unselected package po-debconf. 158s Preparing to unpack .../052-po-debconf_1.0.21+nmu1_all.deb ... 158s Unpacking po-debconf (1.0.21+nmu1) ... 158s Selecting previously unselected package debhelper. 158s Preparing to unpack .../053-debhelper_13.20ubuntu1_all.deb ... 158s Unpacking debhelper (13.20ubuntu1) ... 158s Selecting previously unselected package dh-python. 158s Preparing to unpack .../054-dh-python_6.20241024_all.deb ... 158s Unpacking dh-python (6.20241024) ... 158s Selecting previously unselected package fonts-dejavu-mono. 158s Preparing to unpack .../055-fonts-dejavu-mono_2.37-8_all.deb ... 158s Unpacking fonts-dejavu-mono (2.37-8) ... 158s Selecting previously unselected package fonts-dejavu-core. 158s Preparing to unpack .../056-fonts-dejavu-core_2.37-8_all.deb ... 158s Unpacking fonts-dejavu-core (2.37-8) ... 158s Selecting previously unselected package fontconfig-config. 158s Preparing to unpack .../057-fontconfig-config_2.15.0-1.1ubuntu2_ppc64el.deb ... 158s Unpacking fontconfig-config (2.15.0-1.1ubuntu2) ... 158s Selecting previously unselected package libbrotli-dev:ppc64el. 158s Preparing to unpack .../058-libbrotli-dev_1.1.0-2build3_ppc64el.deb ... 158s Unpacking libbrotli-dev:ppc64el (1.1.0-2build3) ... 158s Selecting previously unselected package libbz2-dev:ppc64el. 158s Preparing to unpack .../059-libbz2-dev_1.0.8-6_ppc64el.deb ... 158s Unpacking libbz2-dev:ppc64el (1.0.8-6) ... 158s Selecting previously unselected package libexpat1-dev:ppc64el. 158s Preparing to unpack .../060-libexpat1-dev_2.6.4-1_ppc64el.deb ... 158s Unpacking libexpat1-dev:ppc64el (2.6.4-1) ... 158s Selecting previously unselected package libfontconfig1:ppc64el. 158s Preparing to unpack .../061-libfontconfig1_2.15.0-1.1ubuntu2_ppc64el.deb ... 158s Unpacking libfontconfig1:ppc64el (2.15.0-1.1ubuntu2) ... 158s Selecting previously unselected package zlib1g-dev:ppc64el. 158s Preparing to unpack .../062-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1ubuntu1_ppc64el.deb ... 158s Unpacking zlib1g-dev:ppc64el (1:1.3.dfsg+really1.3.1-1ubuntu1) ... 158s Selecting previously unselected package libpng-dev:ppc64el. 158s Preparing to unpack .../063-libpng-dev_1.6.44-2_ppc64el.deb ... 158s Unpacking libpng-dev:ppc64el (1.6.44-2) ... 158s Selecting previously unselected package libfreetype-dev:ppc64el. 158s Preparing to unpack .../064-libfreetype-dev_2.13.3+dfsg-1_ppc64el.deb ... 158s Unpacking libfreetype-dev:ppc64el (2.13.3+dfsg-1) ... 158s Selecting previously unselected package uuid-dev:ppc64el. 158s Preparing to unpack .../065-uuid-dev_2.40.2-1ubuntu1_ppc64el.deb ... 158s Unpacking uuid-dev:ppc64el (2.40.2-1ubuntu1) ... 158s Selecting previously unselected package libpkgconf3:ppc64el. 158s Preparing to unpack .../066-libpkgconf3_1.8.1-4_ppc64el.deb ... 158s Unpacking libpkgconf3:ppc64el (1.8.1-4) ... 158s Selecting previously unselected package pkgconf-bin. 158s Preparing to unpack .../067-pkgconf-bin_1.8.1-4_ppc64el.deb ... 158s Unpacking pkgconf-bin (1.8.1-4) ... 158s Selecting previously unselected package pkgconf:ppc64el. 158s Preparing to unpack .../068-pkgconf_1.8.1-4_ppc64el.deb ... 158s Unpacking pkgconf:ppc64el (1.8.1-4) ... 158s Selecting previously unselected package libfontconfig-dev:ppc64el. 158s Preparing to unpack .../069-libfontconfig-dev_2.15.0-1.1ubuntu2_ppc64el.deb ... 158s Unpacking libfontconfig-dev:ppc64el (2.15.0-1.1ubuntu2) ... 158s Selecting previously unselected package libpython3.12-dev:ppc64el. 158s Preparing to unpack .../070-libpython3.12-dev_3.12.7-3_ppc64el.deb ... 158s Unpacking libpython3.12-dev:ppc64el (3.12.7-3) ... 158s Selecting previously unselected package libpython3-dev:ppc64el. 158s Preparing to unpack .../071-libpython3-dev_3.12.7-1_ppc64el.deb ... 158s Unpacking libpython3-dev:ppc64el (3.12.7-1) ... 158s Selecting previously unselected package libpython3.13-stdlib:ppc64el. 158s Preparing to unpack .../072-libpython3.13-stdlib_3.13.0-2_ppc64el.deb ... 158s Unpacking libpython3.13-stdlib:ppc64el (3.13.0-2) ... 159s Selecting previously unselected package libpython3.13:ppc64el. 159s Preparing to unpack .../073-libpython3.13_3.13.0-2_ppc64el.deb ... 159s Unpacking libpython3.13:ppc64el (3.13.0-2) ... 159s Selecting previously unselected package libpython3.13-dev:ppc64el. 159s Preparing to unpack .../074-libpython3.13-dev_3.13.0-2_ppc64el.deb ... 159s Unpacking libpython3.13-dev:ppc64el (3.13.0-2) ... 159s Selecting previously unselected package libpython3-all-dev:ppc64el. 159s Preparing to unpack .../075-libpython3-all-dev_3.12.7-1_ppc64el.deb ... 159s Unpacking libpython3-all-dev:ppc64el (3.12.7-1) ... 159s Selecting previously unselected package librust-ab-glyph-rasterizer-dev:ppc64el. 159s Preparing to unpack .../076-librust-ab-glyph-rasterizer-dev_0.1.7-1_ppc64el.deb ... 159s Unpacking librust-ab-glyph-rasterizer-dev:ppc64el (0.1.7-1) ... 159s Selecting previously unselected package librust-libm-dev:ppc64el. 159s Preparing to unpack .../077-librust-libm-dev_0.2.8-1_ppc64el.deb ... 159s Unpacking librust-libm-dev:ppc64el (0.2.8-1) ... 159s Selecting previously unselected package librust-ab-glyph-rasterizer+libm-dev:ppc64el. 159s Preparing to unpack .../078-librust-ab-glyph-rasterizer+libm-dev_0.1.7-1_ppc64el.deb ... 159s Unpacking librust-ab-glyph-rasterizer+libm-dev:ppc64el (0.1.7-1) ... 159s Selecting previously unselected package librust-core-maths-dev:ppc64el. 159s Preparing to unpack .../079-librust-core-maths-dev_0.1.0-2_ppc64el.deb ... 159s Unpacking librust-core-maths-dev:ppc64el (0.1.0-2) ... 159s Selecting previously unselected package librust-ttf-parser-dev:ppc64el. 159s Preparing to unpack .../080-librust-ttf-parser-dev_0.24.1-1_ppc64el.deb ... 159s Unpacking librust-ttf-parser-dev:ppc64el (0.24.1-1) ... 159s Selecting previously unselected package librust-owned-ttf-parser-dev:ppc64el. 159s Preparing to unpack .../081-librust-owned-ttf-parser-dev_0.24.0-1_ppc64el.deb ... 159s Unpacking librust-owned-ttf-parser-dev:ppc64el (0.24.0-1) ... 159s Selecting previously unselected package librust-ab-glyph-dev:ppc64el. 159s Preparing to unpack .../082-librust-ab-glyph-dev_0.2.28-1_ppc64el.deb ... 159s Unpacking librust-ab-glyph-dev:ppc64el (0.2.28-1) ... 159s Selecting previously unselected package librust-cfg-if-dev:ppc64el. 159s Preparing to unpack .../083-librust-cfg-if-dev_1.0.0-1_ppc64el.deb ... 159s Unpacking librust-cfg-if-dev:ppc64el (1.0.0-1) ... 159s Selecting previously unselected package librust-cpp-demangle-dev:ppc64el. 159s Preparing to unpack .../084-librust-cpp-demangle-dev_0.4.0-1_ppc64el.deb ... 159s Unpacking librust-cpp-demangle-dev:ppc64el (0.4.0-1) ... 159s Selecting previously unselected package librust-fallible-iterator-dev:ppc64el. 159s Preparing to unpack .../085-librust-fallible-iterator-dev_0.3.0-2_ppc64el.deb ... 159s Unpacking librust-fallible-iterator-dev:ppc64el (0.3.0-2) ... 159s Selecting previously unselected package librust-unicode-ident-dev:ppc64el. 159s Preparing to unpack .../086-librust-unicode-ident-dev_1.0.13-1_ppc64el.deb ... 159s Unpacking librust-unicode-ident-dev:ppc64el (1.0.13-1) ... 159s Selecting previously unselected package librust-proc-macro2-dev:ppc64el. 159s Preparing to unpack .../087-librust-proc-macro2-dev_1.0.86-1_ppc64el.deb ... 159s Unpacking librust-proc-macro2-dev:ppc64el (1.0.86-1) ... 159s Selecting previously unselected package librust-quote-dev:ppc64el. 159s Preparing to unpack .../088-librust-quote-dev_1.0.37-1_ppc64el.deb ... 159s Unpacking librust-quote-dev:ppc64el (1.0.37-1) ... 159s Selecting previously unselected package librust-syn-dev:ppc64el. 159s Preparing to unpack .../089-librust-syn-dev_2.0.85-1_ppc64el.deb ... 159s Unpacking librust-syn-dev:ppc64el (2.0.85-1) ... 159s Selecting previously unselected package librust-derive-arbitrary-dev:ppc64el. 159s Preparing to unpack .../090-librust-derive-arbitrary-dev_1.3.2-1_ppc64el.deb ... 159s Unpacking librust-derive-arbitrary-dev:ppc64el (1.3.2-1) ... 159s Selecting previously unselected package librust-arbitrary-dev:ppc64el. 159s Preparing to unpack .../091-librust-arbitrary-dev_1.3.2-1_ppc64el.deb ... 159s Unpacking librust-arbitrary-dev:ppc64el (1.3.2-1) ... 159s Selecting previously unselected package librust-equivalent-dev:ppc64el. 159s Preparing to unpack .../092-librust-equivalent-dev_1.0.1-1_ppc64el.deb ... 159s Unpacking librust-equivalent-dev:ppc64el (1.0.1-1) ... 159s Selecting previously unselected package librust-critical-section-dev:ppc64el. 159s Preparing to unpack .../093-librust-critical-section-dev_1.1.3-1_ppc64el.deb ... 159s Unpacking librust-critical-section-dev:ppc64el (1.1.3-1) ... 159s Selecting previously unselected package librust-serde-derive-dev:ppc64el. 159s Preparing to unpack .../094-librust-serde-derive-dev_1.0.210-1_ppc64el.deb ... 159s Unpacking librust-serde-derive-dev:ppc64el (1.0.210-1) ... 159s Selecting previously unselected package librust-serde-dev:ppc64el. 159s Preparing to unpack .../095-librust-serde-dev_1.0.210-2_ppc64el.deb ... 159s Unpacking librust-serde-dev:ppc64el (1.0.210-2) ... 159s Selecting previously unselected package librust-portable-atomic-dev:ppc64el. 159s Preparing to unpack .../096-librust-portable-atomic-dev_1.9.0-4_ppc64el.deb ... 159s Unpacking librust-portable-atomic-dev:ppc64el (1.9.0-4) ... 159s Selecting previously unselected package librust-libc-dev:ppc64el. 159s Preparing to unpack .../097-librust-libc-dev_0.2.155-1_ppc64el.deb ... 159s Unpacking librust-libc-dev:ppc64el (0.2.155-1) ... 159s Selecting previously unselected package librust-getrandom-dev:ppc64el. 159s Preparing to unpack .../098-librust-getrandom-dev_0.2.12-1_ppc64el.deb ... 159s Unpacking librust-getrandom-dev:ppc64el (0.2.12-1) ... 159s Selecting previously unselected package librust-smallvec-dev:ppc64el. 159s Preparing to unpack .../099-librust-smallvec-dev_1.13.2-1_ppc64el.deb ... 159s Unpacking librust-smallvec-dev:ppc64el (1.13.2-1) ... 159s Selecting previously unselected package librust-parking-lot-core-dev:ppc64el. 159s Preparing to unpack .../100-librust-parking-lot-core-dev_0.9.10-1_ppc64el.deb ... 159s Unpacking librust-parking-lot-core-dev:ppc64el (0.9.10-1) ... 159s Selecting previously unselected package librust-once-cell-dev:ppc64el. 159s Preparing to unpack .../101-librust-once-cell-dev_1.20.2-1_ppc64el.deb ... 159s Unpacking librust-once-cell-dev:ppc64el (1.20.2-1) ... 159s Selecting previously unselected package librust-crunchy-dev:ppc64el. 159s Preparing to unpack .../102-librust-crunchy-dev_0.2.2-1_ppc64el.deb ... 159s Unpacking librust-crunchy-dev:ppc64el (0.2.2-1) ... 159s Selecting previously unselected package librust-tiny-keccak-dev:ppc64el. 159s Preparing to unpack .../103-librust-tiny-keccak-dev_2.0.2-1_ppc64el.deb ... 159s Unpacking librust-tiny-keccak-dev:ppc64el (2.0.2-1) ... 159s Selecting previously unselected package librust-const-random-macro-dev:ppc64el. 159s Preparing to unpack .../104-librust-const-random-macro-dev_0.1.16-2_ppc64el.deb ... 159s Unpacking librust-const-random-macro-dev:ppc64el (0.1.16-2) ... 159s Selecting previously unselected package librust-const-random-dev:ppc64el. 159s Preparing to unpack .../105-librust-const-random-dev_0.1.17-2_ppc64el.deb ... 159s Unpacking librust-const-random-dev:ppc64el (0.1.17-2) ... 159s Selecting previously unselected package librust-version-check-dev:ppc64el. 159s Preparing to unpack .../106-librust-version-check-dev_0.9.5-1_ppc64el.deb ... 159s Unpacking librust-version-check-dev:ppc64el (0.9.5-1) ... 159s Selecting previously unselected package librust-byteorder-dev:ppc64el. 159s Preparing to unpack .../107-librust-byteorder-dev_1.5.0-1_ppc64el.deb ... 159s Unpacking librust-byteorder-dev:ppc64el (1.5.0-1) ... 159s Selecting previously unselected package librust-zerocopy-derive-dev:ppc64el. 159s Preparing to unpack .../108-librust-zerocopy-derive-dev_0.7.32-2_ppc64el.deb ... 159s Unpacking librust-zerocopy-derive-dev:ppc64el (0.7.32-2) ... 159s Selecting previously unselected package librust-zerocopy-dev:ppc64el. 159s Preparing to unpack .../109-librust-zerocopy-dev_0.7.32-1_ppc64el.deb ... 159s Unpacking librust-zerocopy-dev:ppc64el (0.7.32-1) ... 159s Selecting previously unselected package librust-ahash-dev. 159s Preparing to unpack .../110-librust-ahash-dev_0.8.11-8_all.deb ... 159s Unpacking librust-ahash-dev (0.8.11-8) ... 159s Selecting previously unselected package librust-allocator-api2-dev:ppc64el. 159s Preparing to unpack .../111-librust-allocator-api2-dev_0.2.16-1_ppc64el.deb ... 159s Unpacking librust-allocator-api2-dev:ppc64el (0.2.16-1) ... 159s Selecting previously unselected package librust-compiler-builtins-dev:ppc64el. 159s Preparing to unpack .../112-librust-compiler-builtins-dev_0.1.101-1_ppc64el.deb ... 159s Unpacking librust-compiler-builtins-dev:ppc64el (0.1.101-1) ... 160s Selecting previously unselected package librust-either-dev:ppc64el. 160s Preparing to unpack .../113-librust-either-dev_1.13.0-1_ppc64el.deb ... 160s Unpacking librust-either-dev:ppc64el (1.13.0-1) ... 160s Selecting previously unselected package librust-crossbeam-utils-dev:ppc64el. 160s Preparing to unpack .../114-librust-crossbeam-utils-dev_0.8.19-1_ppc64el.deb ... 160s Unpacking librust-crossbeam-utils-dev:ppc64el (0.8.19-1) ... 160s Selecting previously unselected package librust-crossbeam-epoch-dev:ppc64el. 160s Preparing to unpack .../115-librust-crossbeam-epoch-dev_0.9.18-1_ppc64el.deb ... 160s Unpacking librust-crossbeam-epoch-dev:ppc64el (0.9.18-1) ... 160s Selecting previously unselected package librust-crossbeam-epoch+std-dev:ppc64el. 160s Preparing to unpack .../116-librust-crossbeam-epoch+std-dev_0.9.18-1_ppc64el.deb ... 160s Unpacking librust-crossbeam-epoch+std-dev:ppc64el (0.9.18-1) ... 160s Selecting previously unselected package librust-crossbeam-deque-dev:ppc64el. 160s Preparing to unpack .../117-librust-crossbeam-deque-dev_0.8.5-1_ppc64el.deb ... 160s Unpacking librust-crossbeam-deque-dev:ppc64el (0.8.5-1) ... 160s Selecting previously unselected package librust-rayon-core-dev:ppc64el. 160s Preparing to unpack .../118-librust-rayon-core-dev_1.12.1-1_ppc64el.deb ... 160s Unpacking librust-rayon-core-dev:ppc64el (1.12.1-1) ... 160s Selecting previously unselected package librust-rayon-dev:ppc64el. 160s Preparing to unpack .../119-librust-rayon-dev_1.10.0-1_ppc64el.deb ... 160s Unpacking librust-rayon-dev:ppc64el (1.10.0-1) ... 160s Selecting previously unselected package librust-rustc-std-workspace-core-dev:ppc64el. 160s Preparing to unpack .../120-librust-rustc-std-workspace-core-dev_1.0.0-1_ppc64el.deb ... 160s Unpacking librust-rustc-std-workspace-core-dev:ppc64el (1.0.0-1) ... 160s Selecting previously unselected package librust-hashbrown-dev:ppc64el. 160s Preparing to unpack .../121-librust-hashbrown-dev_0.14.5-5_ppc64el.deb ... 160s Unpacking librust-hashbrown-dev:ppc64el (0.14.5-5) ... 160s Selecting previously unselected package librust-indexmap-dev:ppc64el. 160s Preparing to unpack .../122-librust-indexmap-dev_2.2.6-1_ppc64el.deb ... 160s Unpacking librust-indexmap-dev:ppc64el (2.2.6-1) ... 160s Selecting previously unselected package librust-stable-deref-trait-dev:ppc64el. 160s Preparing to unpack .../123-librust-stable-deref-trait-dev_1.2.0-1_ppc64el.deb ... 160s Unpacking librust-stable-deref-trait-dev:ppc64el (1.2.0-1) ... 160s Selecting previously unselected package librust-gimli-dev:ppc64el. 160s Preparing to unpack .../124-librust-gimli-dev_0.28.1-2_ppc64el.deb ... 160s Unpacking librust-gimli-dev:ppc64el (0.28.1-2) ... 160s Selecting previously unselected package librust-memmap2-dev:ppc64el. 160s Preparing to unpack .../125-librust-memmap2-dev_0.9.3-1_ppc64el.deb ... 160s Unpacking librust-memmap2-dev:ppc64el (0.9.3-1) ... 160s Selecting previously unselected package librust-crc32fast-dev:ppc64el. 160s Preparing to unpack .../126-librust-crc32fast-dev_1.4.2-1_ppc64el.deb ... 160s Unpacking librust-crc32fast-dev:ppc64el (1.4.2-1) ... 160s Selecting previously unselected package pkg-config:ppc64el. 160s Preparing to unpack .../127-pkg-config_1.8.1-4_ppc64el.deb ... 160s Unpacking pkg-config:ppc64el (1.8.1-4) ... 160s Selecting previously unselected package librust-pkg-config-dev:ppc64el. 160s Preparing to unpack .../128-librust-pkg-config-dev_0.3.27-1_ppc64el.deb ... 160s Unpacking librust-pkg-config-dev:ppc64el (0.3.27-1) ... 160s Selecting previously unselected package librust-libz-sys-dev:ppc64el. 160s Preparing to unpack .../129-librust-libz-sys-dev_1.1.20-1_ppc64el.deb ... 160s Unpacking librust-libz-sys-dev:ppc64el (1.1.20-1) ... 160s Selecting previously unselected package librust-adler-dev:ppc64el. 160s Preparing to unpack .../130-librust-adler-dev_1.0.2-2_ppc64el.deb ... 160s Unpacking librust-adler-dev:ppc64el (1.0.2-2) ... 160s Selecting previously unselected package librust-miniz-oxide-dev:ppc64el. 160s Preparing to unpack .../131-librust-miniz-oxide-dev_0.7.1-1_ppc64el.deb ... 160s Unpacking librust-miniz-oxide-dev:ppc64el (0.7.1-1) ... 160s Selecting previously unselected package librust-flate2-dev:ppc64el. 160s Preparing to unpack .../132-librust-flate2-dev_1.0.34-1_ppc64el.deb ... 160s Unpacking librust-flate2-dev:ppc64el (1.0.34-1) ... 160s Selecting previously unselected package librust-sval-derive-dev:ppc64el. 160s Preparing to unpack .../133-librust-sval-derive-dev_2.6.1-2_ppc64el.deb ... 160s Unpacking librust-sval-derive-dev:ppc64el (2.6.1-2) ... 160s Selecting previously unselected package librust-sval-dev:ppc64el. 160s Preparing to unpack .../134-librust-sval-dev_2.6.1-2_ppc64el.deb ... 160s Unpacking librust-sval-dev:ppc64el (2.6.1-2) ... 160s Selecting previously unselected package librust-sval-ref-dev:ppc64el. 160s Preparing to unpack .../135-librust-sval-ref-dev_2.6.1-1_ppc64el.deb ... 160s Unpacking librust-sval-ref-dev:ppc64el (2.6.1-1) ... 160s Selecting previously unselected package librust-erased-serde-dev:ppc64el. 160s Preparing to unpack .../136-librust-erased-serde-dev_0.3.31-1_ppc64el.deb ... 160s Unpacking librust-erased-serde-dev:ppc64el (0.3.31-1) ... 160s Selecting previously unselected package librust-serde-fmt-dev. 160s Preparing to unpack .../137-librust-serde-fmt-dev_1.0.3-3_all.deb ... 160s Unpacking librust-serde-fmt-dev (1.0.3-3) ... 160s Selecting previously unselected package librust-syn-1-dev:ppc64el. 160s Preparing to unpack .../138-librust-syn-1-dev_1.0.109-2_ppc64el.deb ... 160s Unpacking librust-syn-1-dev:ppc64el (1.0.109-2) ... 160s Selecting previously unselected package librust-no-panic-dev:ppc64el. 160s Preparing to unpack .../139-librust-no-panic-dev_0.1.13-1_ppc64el.deb ... 160s Unpacking librust-no-panic-dev:ppc64el (0.1.13-1) ... 160s Selecting previously unselected package librust-itoa-dev:ppc64el. 160s Preparing to unpack .../140-librust-itoa-dev_1.0.9-1_ppc64el.deb ... 160s Unpacking librust-itoa-dev:ppc64el (1.0.9-1) ... 160s Selecting previously unselected package librust-ryu-dev:ppc64el. 160s Preparing to unpack .../141-librust-ryu-dev_1.0.15-1_ppc64el.deb ... 160s Unpacking librust-ryu-dev:ppc64el (1.0.15-1) ... 160s Selecting previously unselected package librust-serde-json-dev:ppc64el. 160s Preparing to unpack .../142-librust-serde-json-dev_1.0.128-1_ppc64el.deb ... 160s Unpacking librust-serde-json-dev:ppc64el (1.0.128-1) ... 160s Selecting previously unselected package librust-serde-test-dev:ppc64el. 160s Preparing to unpack .../143-librust-serde-test-dev_1.0.171-1_ppc64el.deb ... 160s Unpacking librust-serde-test-dev:ppc64el (1.0.171-1) ... 160s Selecting previously unselected package librust-value-bag-serde1-dev:ppc64el. 160s Preparing to unpack .../144-librust-value-bag-serde1-dev_1.9.0-1_ppc64el.deb ... 160s Unpacking librust-value-bag-serde1-dev:ppc64el (1.9.0-1) ... 160s Selecting previously unselected package librust-sval-buffer-dev:ppc64el. 160s Preparing to unpack .../145-librust-sval-buffer-dev_2.6.1-1_ppc64el.deb ... 160s Unpacking librust-sval-buffer-dev:ppc64el (2.6.1-1) ... 160s Selecting previously unselected package librust-sval-dynamic-dev:ppc64el. 160s Preparing to unpack .../146-librust-sval-dynamic-dev_2.6.1-1_ppc64el.deb ... 160s Unpacking librust-sval-dynamic-dev:ppc64el (2.6.1-1) ... 160s Selecting previously unselected package librust-sval-fmt-dev:ppc64el. 160s Preparing to unpack .../147-librust-sval-fmt-dev_2.6.1-1_ppc64el.deb ... 160s Unpacking librust-sval-fmt-dev:ppc64el (2.6.1-1) ... 160s Selecting previously unselected package librust-sval-serde-dev:ppc64el. 160s Preparing to unpack .../148-librust-sval-serde-dev_2.6.1-1_ppc64el.deb ... 160s Unpacking librust-sval-serde-dev:ppc64el (2.6.1-1) ... 160s Selecting previously unselected package librust-value-bag-sval2-dev:ppc64el. 160s Preparing to unpack .../149-librust-value-bag-sval2-dev_1.9.0-1_ppc64el.deb ... 160s Unpacking librust-value-bag-sval2-dev:ppc64el (1.9.0-1) ... 160s Selecting previously unselected package librust-value-bag-dev:ppc64el. 160s Preparing to unpack .../150-librust-value-bag-dev_1.9.0-1_ppc64el.deb ... 160s Unpacking librust-value-bag-dev:ppc64el (1.9.0-1) ... 160s Selecting previously unselected package librust-log-dev:ppc64el. 160s Preparing to unpack .../151-librust-log-dev_0.4.22-1_ppc64el.deb ... 160s Unpacking librust-log-dev:ppc64el (0.4.22-1) ... 160s Selecting previously unselected package librust-memchr-dev:ppc64el. 160s Preparing to unpack .../152-librust-memchr-dev_2.7.4-1_ppc64el.deb ... 160s Unpacking librust-memchr-dev:ppc64el (2.7.4-1) ... 160s Selecting previously unselected package librust-ppv-lite86-dev:ppc64el. 160s Preparing to unpack .../153-librust-ppv-lite86-dev_0.2.16-1_ppc64el.deb ... 160s Unpacking librust-ppv-lite86-dev:ppc64el (0.2.16-1) ... 160s Selecting previously unselected package librust-rand-core-dev:ppc64el. 160s Preparing to unpack .../154-librust-rand-core-dev_0.6.4-2_ppc64el.deb ... 160s Unpacking librust-rand-core-dev:ppc64el (0.6.4-2) ... 160s Selecting previously unselected package librust-rand-chacha-dev:ppc64el. 160s Preparing to unpack .../155-librust-rand-chacha-dev_0.3.1-2_ppc64el.deb ... 160s Unpacking librust-rand-chacha-dev:ppc64el (0.3.1-2) ... 160s Selecting previously unselected package librust-rand-core+getrandom-dev:ppc64el. 160s Preparing to unpack .../156-librust-rand-core+getrandom-dev_0.6.4-2_ppc64el.deb ... 160s Unpacking librust-rand-core+getrandom-dev:ppc64el (0.6.4-2) ... 160s Selecting previously unselected package librust-rand-core+serde-dev:ppc64el. 160s Preparing to unpack .../157-librust-rand-core+serde-dev_0.6.4-2_ppc64el.deb ... 160s Unpacking librust-rand-core+serde-dev:ppc64el (0.6.4-2) ... 160s Selecting previously unselected package librust-rand-core+std-dev:ppc64el. 160s Preparing to unpack .../158-librust-rand-core+std-dev_0.6.4-2_ppc64el.deb ... 160s Unpacking librust-rand-core+std-dev:ppc64el (0.6.4-2) ... 160s Selecting previously unselected package librust-rand-dev:ppc64el. 160s Preparing to unpack .../159-librust-rand-dev_0.8.5-1_ppc64el.deb ... 160s Unpacking librust-rand-dev:ppc64el (0.8.5-1) ... 160s Selecting previously unselected package librust-unicode-segmentation-dev:ppc64el. 160s Preparing to unpack .../160-librust-unicode-segmentation-dev_1.11.0-1_ppc64el.deb ... 160s Unpacking librust-unicode-segmentation-dev:ppc64el (1.11.0-1) ... 160s Selecting previously unselected package librust-convert-case-dev:ppc64el. 160s Preparing to unpack .../161-librust-convert-case-dev_0.6.0-2_ppc64el.deb ... 160s Unpacking librust-convert-case-dev:ppc64el (0.6.0-2) ... 160s Selecting previously unselected package librust-semver-dev:ppc64el. 160s Preparing to unpack .../162-librust-semver-dev_1.0.23-1_ppc64el.deb ... 160s Unpacking librust-semver-dev:ppc64el (1.0.23-1) ... 160s Selecting previously unselected package librust-rustc-version-dev:ppc64el. 160s Preparing to unpack .../163-librust-rustc-version-dev_0.4.0-1_ppc64el.deb ... 160s Unpacking librust-rustc-version-dev:ppc64el (0.4.0-1) ... 160s Selecting previously unselected package librust-derive-more-0.99-dev:ppc64el. 160s Preparing to unpack .../164-librust-derive-more-0.99-dev_0.99.18-1_ppc64el.deb ... 160s Unpacking librust-derive-more-0.99-dev:ppc64el (0.99.18-1) ... 160s Selecting previously unselected package librust-cfg-if-0.1-dev:ppc64el. 160s Preparing to unpack .../165-librust-cfg-if-0.1-dev_0.1.10-2_ppc64el.deb ... 160s Unpacking librust-cfg-if-0.1-dev:ppc64el (0.1.10-2) ... 161s Selecting previously unselected package librust-blobby-dev:ppc64el. 161s Preparing to unpack .../166-librust-blobby-dev_0.3.1-1_ppc64el.deb ... 161s Unpacking librust-blobby-dev:ppc64el (0.3.1-1) ... 161s Selecting previously unselected package librust-typenum-dev:ppc64el. 161s Preparing to unpack .../167-librust-typenum-dev_1.17.0-2_ppc64el.deb ... 161s Unpacking librust-typenum-dev:ppc64el (1.17.0-2) ... 161s Selecting previously unselected package librust-zeroize-derive-dev:ppc64el. 161s Preparing to unpack .../168-librust-zeroize-derive-dev_1.4.2-1_ppc64el.deb ... 161s Unpacking librust-zeroize-derive-dev:ppc64el (1.4.2-1) ... 161s Selecting previously unselected package librust-zeroize-dev:ppc64el. 161s Preparing to unpack .../169-librust-zeroize-dev_1.8.1-1_ppc64el.deb ... 161s Unpacking librust-zeroize-dev:ppc64el (1.8.1-1) ... 161s Selecting previously unselected package librust-generic-array-dev:ppc64el. 161s Preparing to unpack .../170-librust-generic-array-dev_0.14.7-1_ppc64el.deb ... 161s Unpacking librust-generic-array-dev:ppc64el (0.14.7-1) ... 161s Selecting previously unselected package librust-block-buffer-dev:ppc64el. 161s Preparing to unpack .../171-librust-block-buffer-dev_0.10.2-2_ppc64el.deb ... 161s Unpacking librust-block-buffer-dev:ppc64el (0.10.2-2) ... 161s Selecting previously unselected package librust-const-oid-dev:ppc64el. 161s Preparing to unpack .../172-librust-const-oid-dev_0.9.3-1_ppc64el.deb ... 161s Unpacking librust-const-oid-dev:ppc64el (0.9.3-1) ... 161s Selecting previously unselected package librust-crypto-common-dev:ppc64el. 161s Preparing to unpack .../173-librust-crypto-common-dev_0.1.6-1_ppc64el.deb ... 161s Unpacking librust-crypto-common-dev:ppc64el (0.1.6-1) ... 161s Selecting previously unselected package librust-subtle-dev:ppc64el. 161s Preparing to unpack .../174-librust-subtle-dev_2.6.1-1_ppc64el.deb ... 161s Unpacking librust-subtle-dev:ppc64el (2.6.1-1) ... 161s Selecting previously unselected package librust-digest-dev:ppc64el. 161s Preparing to unpack .../175-librust-digest-dev_0.10.7-2_ppc64el.deb ... 161s Unpacking librust-digest-dev:ppc64el (0.10.7-2) ... 161s Selecting previously unselected package librust-static-assertions-dev:ppc64el. 161s Preparing to unpack .../176-librust-static-assertions-dev_1.1.0-1_ppc64el.deb ... 161s Unpacking librust-static-assertions-dev:ppc64el (1.1.0-1) ... 161s Selecting previously unselected package librust-twox-hash-dev:ppc64el. 161s Preparing to unpack .../177-librust-twox-hash-dev_1.6.3-1_ppc64el.deb ... 161s Unpacking librust-twox-hash-dev:ppc64el (1.6.3-1) ... 161s Selecting previously unselected package librust-ruzstd-dev:ppc64el. 161s Preparing to unpack .../178-librust-ruzstd-dev_0.5.0-1_ppc64el.deb ... 161s Unpacking librust-ruzstd-dev:ppc64el (0.5.0-1) ... 161s Selecting previously unselected package librust-object-dev:ppc64el. 161s Preparing to unpack .../179-librust-object-dev_0.32.2-1_ppc64el.deb ... 161s Unpacking librust-object-dev:ppc64el (0.32.2-1) ... 161s Selecting previously unselected package librust-rustc-demangle-dev:ppc64el. 161s Preparing to unpack .../180-librust-rustc-demangle-dev_0.1.21-1_ppc64el.deb ... 161s Unpacking librust-rustc-demangle-dev:ppc64el (0.1.21-1) ... 161s Selecting previously unselected package librust-addr2line-dev:ppc64el. 161s Preparing to unpack .../181-librust-addr2line-dev_0.21.0-2_ppc64el.deb ... 161s Unpacking librust-addr2line-dev:ppc64el (0.21.0-2) ... 161s Selecting previously unselected package librust-aho-corasick-dev:ppc64el. 161s Preparing to unpack .../182-librust-aho-corasick-dev_1.1.3-1_ppc64el.deb ... 161s Unpacking librust-aho-corasick-dev:ppc64el (1.1.3-1) ... 161s Selecting previously unselected package librust-bitflags-1-dev:ppc64el. 161s Preparing to unpack .../183-librust-bitflags-1-dev_1.3.2-5_ppc64el.deb ... 161s Unpacking librust-bitflags-1-dev:ppc64el (1.3.2-5) ... 161s Selecting previously unselected package librust-anes-dev:ppc64el. 161s Preparing to unpack .../184-librust-anes-dev_0.1.6-1_ppc64el.deb ... 161s Unpacking librust-anes-dev:ppc64el (0.1.6-1) ... 161s Selecting previously unselected package librust-anstyle-dev:ppc64el. 161s Preparing to unpack .../185-librust-anstyle-dev_1.0.8-1_ppc64el.deb ... 161s Unpacking librust-anstyle-dev:ppc64el (1.0.8-1) ... 161s Selecting previously unselected package librust-arrayvec-dev:ppc64el. 161s Preparing to unpack .../186-librust-arrayvec-dev_0.7.4-2_ppc64el.deb ... 161s Unpacking librust-arrayvec-dev:ppc64el (0.7.4-2) ... 161s Selecting previously unselected package librust-utf8parse-dev:ppc64el. 161s Preparing to unpack .../187-librust-utf8parse-dev_0.2.1-1_ppc64el.deb ... 161s Unpacking librust-utf8parse-dev:ppc64el (0.2.1-1) ... 161s Selecting previously unselected package librust-anstyle-parse-dev:ppc64el. 161s Preparing to unpack .../188-librust-anstyle-parse-dev_0.2.1-1_ppc64el.deb ... 161s Unpacking librust-anstyle-parse-dev:ppc64el (0.2.1-1) ... 161s Selecting previously unselected package librust-anstyle-query-dev:ppc64el. 161s Preparing to unpack .../189-librust-anstyle-query-dev_1.0.0-1_ppc64el.deb ... 161s Unpacking librust-anstyle-query-dev:ppc64el (1.0.0-1) ... 161s Selecting previously unselected package librust-colorchoice-dev:ppc64el. 161s Preparing to unpack .../190-librust-colorchoice-dev_1.0.0-1_ppc64el.deb ... 161s Unpacking librust-colorchoice-dev:ppc64el (1.0.0-1) ... 161s Selecting previously unselected package librust-anstream-dev:ppc64el. 161s Preparing to unpack .../191-librust-anstream-dev_0.6.15-1_ppc64el.deb ... 161s Unpacking librust-anstream-dev:ppc64el (0.6.15-1) ... 161s Selecting previously unselected package librust-jobserver-dev:ppc64el. 161s Preparing to unpack .../192-librust-jobserver-dev_0.1.32-1_ppc64el.deb ... 161s Unpacking librust-jobserver-dev:ppc64el (0.1.32-1) ... 161s Selecting previously unselected package librust-shlex-dev:ppc64el. 161s Preparing to unpack .../193-librust-shlex-dev_1.3.0-1_ppc64el.deb ... 161s Unpacking librust-shlex-dev:ppc64el (1.3.0-1) ... 161s Selecting previously unselected package librust-cc-dev:ppc64el. 161s Preparing to unpack .../194-librust-cc-dev_1.1.14-1_ppc64el.deb ... 161s Unpacking librust-cc-dev:ppc64el (1.1.14-1) ... 161s Selecting previously unselected package librust-backtrace-dev:ppc64el. 161s Preparing to unpack .../195-librust-backtrace-dev_0.3.69-2_ppc64el.deb ... 161s Unpacking librust-backtrace-dev:ppc64el (0.3.69-2) ... 161s Selecting previously unselected package librust-anyhow-dev:ppc64el. 161s Preparing to unpack .../196-librust-anyhow-dev_1.0.86-1_ppc64el.deb ... 161s Unpacking librust-anyhow-dev:ppc64el (1.0.86-1) ... 161s Selecting previously unselected package librust-bytecheck-derive-dev:ppc64el. 161s Preparing to unpack .../197-librust-bytecheck-derive-dev_0.6.12-1_ppc64el.deb ... 161s Unpacking librust-bytecheck-derive-dev:ppc64el (0.6.12-1) ... 161s Selecting previously unselected package librust-ptr-meta-derive-dev:ppc64el. 161s Preparing to unpack .../198-librust-ptr-meta-derive-dev_0.1.4-1_ppc64el.deb ... 161s Unpacking librust-ptr-meta-derive-dev:ppc64el (0.1.4-1) ... 161s Selecting previously unselected package librust-ptr-meta-dev:ppc64el. 161s Preparing to unpack .../199-librust-ptr-meta-dev_0.1.4-1_ppc64el.deb ... 161s Unpacking librust-ptr-meta-dev:ppc64el (0.1.4-1) ... 161s Selecting previously unselected package librust-simdutf8-dev:ppc64el. 161s Preparing to unpack .../200-librust-simdutf8-dev_0.1.4-4_ppc64el.deb ... 161s Unpacking librust-simdutf8-dev:ppc64el (0.1.4-4) ... 161s Selecting previously unselected package librust-bytemuck-derive-dev:ppc64el. 161s Preparing to unpack .../201-librust-bytemuck-derive-dev_1.5.0-2_ppc64el.deb ... 161s Unpacking librust-bytemuck-derive-dev:ppc64el (1.5.0-2) ... 161s Selecting previously unselected package librust-bytemuck-dev:ppc64el. 161s Preparing to unpack .../202-librust-bytemuck-dev_1.14.0-1_ppc64el.deb ... 161s Unpacking librust-bytemuck-dev:ppc64el (1.14.0-1) ... 161s Selecting previously unselected package librust-atomic-dev:ppc64el. 161s Preparing to unpack .../203-librust-atomic-dev_0.6.0-1_ppc64el.deb ... 161s Unpacking librust-atomic-dev:ppc64el (0.6.0-1) ... 161s Selecting previously unselected package librust-md5-asm-dev:ppc64el. 161s Preparing to unpack .../204-librust-md5-asm-dev_0.5.0-2_ppc64el.deb ... 161s Unpacking librust-md5-asm-dev:ppc64el (0.5.0-2) ... 161s Selecting previously unselected package librust-md-5-dev:ppc64el. 161s Preparing to unpack .../205-librust-md-5-dev_0.10.6-1_ppc64el.deb ... 161s Unpacking librust-md-5-dev:ppc64el (0.10.6-1) ... 161s Selecting previously unselected package librust-cpufeatures-dev:ppc64el. 161s Preparing to unpack .../206-librust-cpufeatures-dev_0.2.11-1_ppc64el.deb ... 161s Unpacking librust-cpufeatures-dev:ppc64el (0.2.11-1) ... 161s Selecting previously unselected package librust-sha1-asm-dev:ppc64el. 161s Preparing to unpack .../207-librust-sha1-asm-dev_0.5.1-2_ppc64el.deb ... 161s Unpacking librust-sha1-asm-dev:ppc64el (0.5.1-2) ... 161s Selecting previously unselected package librust-sha1-dev:ppc64el. 161s Preparing to unpack .../208-librust-sha1-dev_0.10.6-1_ppc64el.deb ... 161s Unpacking librust-sha1-dev:ppc64el (0.10.6-1) ... 161s Selecting previously unselected package librust-slog-dev:ppc64el. 161s Preparing to unpack .../209-librust-slog-dev_2.7.0-1_ppc64el.deb ... 161s Unpacking librust-slog-dev:ppc64el (2.7.0-1) ... 161s Selecting previously unselected package librust-uuid-dev:ppc64el. 161s Preparing to unpack .../210-librust-uuid-dev_1.10.0-1_ppc64el.deb ... 161s Unpacking librust-uuid-dev:ppc64el (1.10.0-1) ... 161s Selecting previously unselected package librust-bytecheck-dev:ppc64el. 161s Preparing to unpack .../211-librust-bytecheck-dev_0.6.12-1_ppc64el.deb ... 161s Unpacking librust-bytecheck-dev:ppc64el (0.6.12-1) ... 161s Selecting previously unselected package librust-autocfg-dev:ppc64el. 161s Preparing to unpack .../212-librust-autocfg-dev_1.1.0-1_ppc64el.deb ... 161s Unpacking librust-autocfg-dev:ppc64el (1.1.0-1) ... 161s Selecting previously unselected package librust-num-traits-dev:ppc64el. 161s Preparing to unpack .../213-librust-num-traits-dev_0.2.19-2_ppc64el.deb ... 161s Unpacking librust-num-traits-dev:ppc64el (0.2.19-2) ... 161s Selecting previously unselected package librust-funty-dev:ppc64el. 161s Preparing to unpack .../214-librust-funty-dev_2.0.0-1_ppc64el.deb ... 161s Unpacking librust-funty-dev:ppc64el (2.0.0-1) ... 161s Selecting previously unselected package librust-radium-dev:ppc64el. 161s Preparing to unpack .../215-librust-radium-dev_1.1.0-1_ppc64el.deb ... 161s Unpacking librust-radium-dev:ppc64el (1.1.0-1) ... 161s Selecting previously unselected package librust-tap-dev:ppc64el. 161s Preparing to unpack .../216-librust-tap-dev_1.0.1-1_ppc64el.deb ... 161s Unpacking librust-tap-dev:ppc64el (1.0.1-1) ... 161s Selecting previously unselected package librust-traitobject-dev:ppc64el. 161s Preparing to unpack .../217-librust-traitobject-dev_0.1.0-1_ppc64el.deb ... 161s Unpacking librust-traitobject-dev:ppc64el (0.1.0-1) ... 161s Selecting previously unselected package librust-unsafe-any-dev:ppc64el. 161s Preparing to unpack .../218-librust-unsafe-any-dev_0.4.2-2_ppc64el.deb ... 161s Unpacking librust-unsafe-any-dev:ppc64el (0.4.2-2) ... 161s Selecting previously unselected package librust-typemap-dev:ppc64el. 161s Preparing to unpack .../219-librust-typemap-dev_0.3.3-2_ppc64el.deb ... 161s Unpacking librust-typemap-dev:ppc64el (0.3.3-2) ... 161s Selecting previously unselected package librust-wyz-dev:ppc64el. 161s Preparing to unpack .../220-librust-wyz-dev_0.5.1-1_ppc64el.deb ... 161s Unpacking librust-wyz-dev:ppc64el (0.5.1-1) ... 161s Selecting previously unselected package librust-bitvec-dev:ppc64el. 161s Preparing to unpack .../221-librust-bitvec-dev_1.0.1-1_ppc64el.deb ... 161s Unpacking librust-bitvec-dev:ppc64el (1.0.1-1) ... 162s Selecting previously unselected package librust-bytes-dev:ppc64el. 162s Preparing to unpack .../222-librust-bytes-dev_1.8.0-1_ppc64el.deb ... 162s Unpacking librust-bytes-dev:ppc64el (1.8.0-1) ... 162s Selecting previously unselected package librust-rend-dev:ppc64el. 162s Preparing to unpack .../223-librust-rend-dev_0.4.0-1_ppc64el.deb ... 162s Unpacking librust-rend-dev:ppc64el (0.4.0-1) ... 162s Selecting previously unselected package librust-rkyv-derive-dev:ppc64el. 162s Preparing to unpack .../224-librust-rkyv-derive-dev_0.7.44-1_ppc64el.deb ... 162s Unpacking librust-rkyv-derive-dev:ppc64el (0.7.44-1) ... 162s Selecting previously unselected package librust-seahash-dev:ppc64el. 162s Preparing to unpack .../225-librust-seahash-dev_4.1.0-1_ppc64el.deb ... 162s Unpacking librust-seahash-dev:ppc64el (4.1.0-1) ... 162s Selecting previously unselected package librust-smol-str-dev:ppc64el. 162s Preparing to unpack .../226-librust-smol-str-dev_0.2.0-1_ppc64el.deb ... 162s Unpacking librust-smol-str-dev:ppc64el (0.2.0-1) ... 162s Selecting previously unselected package librust-tinyvec-dev:ppc64el. 162s Preparing to unpack .../227-librust-tinyvec-dev_1.6.0-2_ppc64el.deb ... 162s Unpacking librust-tinyvec-dev:ppc64el (1.6.0-2) ... 162s Selecting previously unselected package librust-tinyvec-macros-dev:ppc64el. 162s Preparing to unpack .../228-librust-tinyvec-macros-dev_0.1.0-1_ppc64el.deb ... 162s Unpacking librust-tinyvec-macros-dev:ppc64el (0.1.0-1) ... 162s Selecting previously unselected package librust-tinyvec+tinyvec-macros-dev:ppc64el. 162s Preparing to unpack .../229-librust-tinyvec+tinyvec-macros-dev_1.6.0-2_ppc64el.deb ... 162s Unpacking librust-tinyvec+tinyvec-macros-dev:ppc64el (1.6.0-2) ... 162s Selecting previously unselected package librust-rkyv-dev:ppc64el. 162s Preparing to unpack .../230-librust-rkyv-dev_0.7.44-1_ppc64el.deb ... 162s Unpacking librust-rkyv-dev:ppc64el (0.7.44-1) ... 162s Selecting previously unselected package librust-num-complex-dev:ppc64el. 162s Preparing to unpack .../231-librust-num-complex-dev_0.4.6-2_ppc64el.deb ... 162s Unpacking librust-num-complex-dev:ppc64el (0.4.6-2) ... 162s Selecting previously unselected package librust-approx-dev:ppc64el. 162s Preparing to unpack .../232-librust-approx-dev_0.5.1-1_ppc64el.deb ... 162s Unpacking librust-approx-dev:ppc64el (0.5.1-1) ... 162s Selecting previously unselected package librust-array-init-dev:ppc64el. 162s Preparing to unpack .../233-librust-array-init-dev_2.0.1-1_ppc64el.deb ... 162s Unpacking librust-array-init-dev:ppc64el (2.0.1-1) ... 162s Selecting previously unselected package librust-async-attributes-dev. 162s Preparing to unpack .../234-librust-async-attributes-dev_1.1.2-6_all.deb ... 162s Unpacking librust-async-attributes-dev (1.1.2-6) ... 162s Selecting previously unselected package librust-concurrent-queue-dev:ppc64el. 162s Preparing to unpack .../235-librust-concurrent-queue-dev_2.5.0-4_ppc64el.deb ... 162s Unpacking librust-concurrent-queue-dev:ppc64el (2.5.0-4) ... 162s Selecting previously unselected package librust-parking-dev:ppc64el. 162s Preparing to unpack .../236-librust-parking-dev_2.2.0-1_ppc64el.deb ... 162s Unpacking librust-parking-dev:ppc64el (2.2.0-1) ... 162s Selecting previously unselected package librust-pin-project-lite-dev:ppc64el. 162s Preparing to unpack .../237-librust-pin-project-lite-dev_0.2.13-1_ppc64el.deb ... 162s Unpacking librust-pin-project-lite-dev:ppc64el (0.2.13-1) ... 162s Selecting previously unselected package librust-event-listener-dev. 162s Preparing to unpack .../238-librust-event-listener-dev_5.3.1-8_all.deb ... 162s Unpacking librust-event-listener-dev (5.3.1-8) ... 162s Selecting previously unselected package librust-event-listener-strategy-dev:ppc64el. 162s Preparing to unpack .../239-librust-event-listener-strategy-dev_0.5.2-3_ppc64el.deb ... 162s Unpacking librust-event-listener-strategy-dev:ppc64el (0.5.2-3) ... 162s Selecting previously unselected package librust-futures-core-dev:ppc64el. 162s Preparing to unpack .../240-librust-futures-core-dev_0.3.30-1_ppc64el.deb ... 162s Unpacking librust-futures-core-dev:ppc64el (0.3.30-1) ... 162s Selecting previously unselected package librust-async-channel-dev. 162s Preparing to unpack .../241-librust-async-channel-dev_2.3.1-8_all.deb ... 162s Unpacking librust-async-channel-dev (2.3.1-8) ... 162s Selecting previously unselected package librust-async-task-dev. 162s Preparing to unpack .../242-librust-async-task-dev_4.7.1-3_all.deb ... 162s Unpacking librust-async-task-dev (4.7.1-3) ... 162s Selecting previously unselected package librust-fastrand-dev:ppc64el. 162s Preparing to unpack .../243-librust-fastrand-dev_2.1.1-1_ppc64el.deb ... 162s Unpacking librust-fastrand-dev:ppc64el (2.1.1-1) ... 162s Selecting previously unselected package librust-futures-io-dev:ppc64el. 162s Preparing to unpack .../244-librust-futures-io-dev_0.3.31-1_ppc64el.deb ... 162s Unpacking librust-futures-io-dev:ppc64el (0.3.31-1) ... 162s Selecting previously unselected package librust-futures-lite-dev:ppc64el. 162s Preparing to unpack .../245-librust-futures-lite-dev_2.3.0-2_ppc64el.deb ... 162s Unpacking librust-futures-lite-dev:ppc64el (2.3.0-2) ... 162s Selecting previously unselected package librust-slab-dev:ppc64el. 162s Preparing to unpack .../246-librust-slab-dev_0.4.9-1_ppc64el.deb ... 162s Unpacking librust-slab-dev:ppc64el (0.4.9-1) ... 162s Selecting previously unselected package librust-async-executor-dev. 162s Preparing to unpack .../247-librust-async-executor-dev_1.13.1-1_all.deb ... 162s Unpacking librust-async-executor-dev (1.13.1-1) ... 162s Selecting previously unselected package librust-async-lock-dev. 162s Preparing to unpack .../248-librust-async-lock-dev_3.4.0-4_all.deb ... 162s Unpacking librust-async-lock-dev (3.4.0-4) ... 162s Selecting previously unselected package librust-atomic-waker-dev:ppc64el. 162s Preparing to unpack .../249-librust-atomic-waker-dev_1.1.2-1_ppc64el.deb ... 162s Unpacking librust-atomic-waker-dev:ppc64el (1.1.2-1) ... 162s Selecting previously unselected package librust-tracing-attributes-dev:ppc64el. 162s Preparing to unpack .../250-librust-tracing-attributes-dev_0.1.27-1_ppc64el.deb ... 162s Unpacking librust-tracing-attributes-dev:ppc64el (0.1.27-1) ... 162s Selecting previously unselected package librust-valuable-derive-dev:ppc64el. 162s Preparing to unpack .../251-librust-valuable-derive-dev_0.1.0-1_ppc64el.deb ... 162s Unpacking librust-valuable-derive-dev:ppc64el (0.1.0-1) ... 162s Selecting previously unselected package librust-valuable-dev:ppc64el. 162s Preparing to unpack .../252-librust-valuable-dev_0.1.0-4_ppc64el.deb ... 162s Unpacking librust-valuable-dev:ppc64el (0.1.0-4) ... 162s Selecting previously unselected package librust-tracing-core-dev:ppc64el. 162s Preparing to unpack .../253-librust-tracing-core-dev_0.1.32-1_ppc64el.deb ... 162s Unpacking librust-tracing-core-dev:ppc64el (0.1.32-1) ... 162s Selecting previously unselected package librust-tracing-dev:ppc64el. 162s Preparing to unpack .../254-librust-tracing-dev_0.1.40-1_ppc64el.deb ... 162s Unpacking librust-tracing-dev:ppc64el (0.1.40-1) ... 162s Selecting previously unselected package librust-blocking-dev. 162s Preparing to unpack .../255-librust-blocking-dev_1.6.1-5_all.deb ... 162s Unpacking librust-blocking-dev (1.6.1-5) ... 162s Selecting previously unselected package librust-async-fs-dev. 162s Preparing to unpack .../256-librust-async-fs-dev_2.1.2-4_all.deb ... 162s Unpacking librust-async-fs-dev (2.1.2-4) ... 162s Selecting previously unselected package librust-bitflags-dev:ppc64el. 162s Preparing to unpack .../257-librust-bitflags-dev_2.6.0-1_ppc64el.deb ... 162s Unpacking librust-bitflags-dev:ppc64el (2.6.0-1) ... 162s Selecting previously unselected package librust-compiler-builtins+core-dev:ppc64el. 162s Preparing to unpack .../258-librust-compiler-builtins+core-dev_0.1.101-1_ppc64el.deb ... 162s Unpacking librust-compiler-builtins+core-dev:ppc64el (0.1.101-1) ... 162s Selecting previously unselected package librust-compiler-builtins+rustc-dep-of-std-dev:ppc64el. 162s Preparing to unpack .../259-librust-compiler-builtins+rustc-dep-of-std-dev_0.1.101-1_ppc64el.deb ... 162s Unpacking librust-compiler-builtins+rustc-dep-of-std-dev:ppc64el (0.1.101-1) ... 162s Selecting previously unselected package librust-errno-dev:ppc64el. 162s Preparing to unpack .../260-librust-errno-dev_0.3.8-1_ppc64el.deb ... 162s Unpacking librust-errno-dev:ppc64el (0.3.8-1) ... 162s Selecting previously unselected package librust-linux-raw-sys-dev:ppc64el. 162s Preparing to unpack .../261-librust-linux-raw-sys-dev_0.4.14-1_ppc64el.deb ... 162s Unpacking librust-linux-raw-sys-dev:ppc64el (0.4.14-1) ... 162s Selecting previously unselected package librust-rustix-dev:ppc64el. 162s Preparing to unpack .../262-librust-rustix-dev_0.38.32-1_ppc64el.deb ... 162s Unpacking librust-rustix-dev:ppc64el (0.38.32-1) ... 162s Selecting previously unselected package librust-polling-dev:ppc64el. 162s Preparing to unpack .../263-librust-polling-dev_3.4.0-1_ppc64el.deb ... 162s Unpacking librust-polling-dev:ppc64el (3.4.0-1) ... 162s Selecting previously unselected package librust-async-io-dev:ppc64el. 162s Preparing to unpack .../264-librust-async-io-dev_2.3.3-4_ppc64el.deb ... 162s Unpacking librust-async-io-dev:ppc64el (2.3.3-4) ... 162s Selecting previously unselected package librust-mio-dev:ppc64el. 162s Preparing to unpack .../265-librust-mio-dev_1.0.2-2_ppc64el.deb ... 162s Unpacking librust-mio-dev:ppc64el (1.0.2-2) ... 162s Selecting previously unselected package librust-owning-ref-dev:ppc64el. 162s Preparing to unpack .../266-librust-owning-ref-dev_0.4.1-1_ppc64el.deb ... 162s Unpacking librust-owning-ref-dev:ppc64el (0.4.1-1) ... 163s Selecting previously unselected package librust-scopeguard-dev:ppc64el. 163s Preparing to unpack .../267-librust-scopeguard-dev_1.2.0-1_ppc64el.deb ... 163s Unpacking librust-scopeguard-dev:ppc64el (1.2.0-1) ... 163s Selecting previously unselected package librust-lock-api-dev:ppc64el. 163s Preparing to unpack .../268-librust-lock-api-dev_0.4.12-1_ppc64el.deb ... 163s Unpacking librust-lock-api-dev:ppc64el (0.4.12-1) ... 163s Selecting previously unselected package librust-parking-lot-dev:ppc64el. 163s Preparing to unpack .../269-librust-parking-lot-dev_0.12.3-1_ppc64el.deb ... 163s Unpacking librust-parking-lot-dev:ppc64el (0.12.3-1) ... 163s Selecting previously unselected package librust-signal-hook-registry-dev:ppc64el. 163s Preparing to unpack .../270-librust-signal-hook-registry-dev_1.4.0-1_ppc64el.deb ... 163s Unpacking librust-signal-hook-registry-dev:ppc64el (1.4.0-1) ... 163s Selecting previously unselected package librust-socket2-dev:ppc64el. 163s Preparing to unpack .../271-librust-socket2-dev_0.5.7-1_ppc64el.deb ... 163s Unpacking librust-socket2-dev:ppc64el (0.5.7-1) ... 163s Selecting previously unselected package librust-tokio-macros-dev:ppc64el. 163s Preparing to unpack .../272-librust-tokio-macros-dev_2.4.0-2_ppc64el.deb ... 163s Unpacking librust-tokio-macros-dev:ppc64el (2.4.0-2) ... 163s Selecting previously unselected package librust-tokio-dev:ppc64el. 163s Preparing to unpack .../273-librust-tokio-dev_1.39.3-3_ppc64el.deb ... 163s Unpacking librust-tokio-dev:ppc64el (1.39.3-3) ... 163s Selecting previously unselected package librust-async-global-executor-dev:ppc64el. 163s Preparing to unpack .../274-librust-async-global-executor-dev_2.4.1-5_ppc64el.deb ... 163s Unpacking librust-async-global-executor-dev:ppc64el (2.4.1-5) ... 163s Selecting previously unselected package librust-async-net-dev. 163s Preparing to unpack .../275-librust-async-net-dev_2.0.0-4_all.deb ... 163s Unpacking librust-async-net-dev (2.0.0-4) ... 163s Selecting previously unselected package librust-async-signal-dev:ppc64el. 163s Preparing to unpack .../276-librust-async-signal-dev_0.2.10-1_ppc64el.deb ... 163s Unpacking librust-async-signal-dev:ppc64el (0.2.10-1) ... 163s Selecting previously unselected package librust-async-process-dev. 163s Preparing to unpack .../277-librust-async-process-dev_2.3.0-1_all.deb ... 163s Unpacking librust-async-process-dev (2.3.0-1) ... 163s Selecting previously unselected package librust-kv-log-macro-dev. 163s Preparing to unpack .../278-librust-kv-log-macro-dev_1.0.8-4_all.deb ... 163s Unpacking librust-kv-log-macro-dev (1.0.8-4) ... 163s Selecting previously unselected package librust-pin-utils-dev:ppc64el. 163s Preparing to unpack .../279-librust-pin-utils-dev_0.1.0-1_ppc64el.deb ... 163s Unpacking librust-pin-utils-dev:ppc64el (0.1.0-1) ... 163s Selecting previously unselected package librust-async-std-dev. 163s Preparing to unpack .../280-librust-async-std-dev_1.13.0-1_all.deb ... 163s Unpacking librust-async-std-dev (1.13.0-1) ... 163s Selecting previously unselected package librust-base64-dev:ppc64el. 163s Preparing to unpack .../281-librust-base64-dev_0.21.7-1_ppc64el.deb ... 163s Unpacking librust-base64-dev:ppc64el (0.21.7-1) ... 163s Selecting previously unselected package librust-bit-vec-dev:ppc64el. 163s Preparing to unpack .../282-librust-bit-vec-dev_0.6.3-1_ppc64el.deb ... 163s Unpacking librust-bit-vec-dev:ppc64el (0.6.3-1) ... 163s Selecting previously unselected package librust-bit-set-dev:ppc64el. 163s Preparing to unpack .../283-librust-bit-set-dev_0.5.2-1_ppc64el.deb ... 163s Unpacking librust-bit-set-dev:ppc64el (0.5.2-1) ... 163s Selecting previously unselected package librust-bit-set+std-dev:ppc64el. 163s Preparing to unpack .../284-librust-bit-set+std-dev_0.5.2-1_ppc64el.deb ... 163s Unpacking librust-bit-set+std-dev:ppc64el (0.5.2-1) ... 163s Selecting previously unselected package librust-regex-syntax-dev:ppc64el. 163s Preparing to unpack .../285-librust-regex-syntax-dev_0.8.2-1_ppc64el.deb ... 163s Unpacking librust-regex-syntax-dev:ppc64el (0.8.2-1) ... 163s Selecting previously unselected package librust-regex-automata-dev:ppc64el. 163s Preparing to unpack .../286-librust-regex-automata-dev_0.4.7-1_ppc64el.deb ... 163s Unpacking librust-regex-automata-dev:ppc64el (0.4.7-1) ... 163s Selecting previously unselected package librust-bstr-dev:ppc64el. 163s Preparing to unpack .../287-librust-bstr-dev_1.7.0-2build1_ppc64el.deb ... 163s Unpacking librust-bstr-dev:ppc64el (1.7.0-2build1) ... 163s Selecting previously unselected package librust-bumpalo-dev:ppc64el. 163s Preparing to unpack .../288-librust-bumpalo-dev_3.16.0-1_ppc64el.deb ... 163s Unpacking librust-bumpalo-dev:ppc64el (3.16.0-1) ... 163s Selecting previously unselected package librust-cast-dev:ppc64el. 163s Preparing to unpack .../289-librust-cast-dev_0.3.0-1_ppc64el.deb ... 163s Unpacking librust-cast-dev:ppc64el (0.3.0-1) ... 163s Selecting previously unselected package librust-iana-time-zone-dev:ppc64el. 163s Preparing to unpack .../290-librust-iana-time-zone-dev_0.1.60-1_ppc64el.deb ... 163s Unpacking librust-iana-time-zone-dev:ppc64el (0.1.60-1) ... 163s Selecting previously unselected package librust-wasm-bindgen-shared-dev:ppc64el. 163s Preparing to unpack .../291-librust-wasm-bindgen-shared-dev_0.2.87-1_ppc64el.deb ... 163s Unpacking librust-wasm-bindgen-shared-dev:ppc64el (0.2.87-1) ... 163s Selecting previously unselected package librust-wasm-bindgen-backend-dev:ppc64el. 163s Preparing to unpack .../292-librust-wasm-bindgen-backend-dev_0.2.87-1_ppc64el.deb ... 163s Unpacking librust-wasm-bindgen-backend-dev:ppc64el (0.2.87-1) ... 163s Selecting previously unselected package librust-wasm-bindgen-macro-support-dev:ppc64el. 163s Preparing to unpack .../293-librust-wasm-bindgen-macro-support-dev_0.2.87-1_ppc64el.deb ... 163s Unpacking librust-wasm-bindgen-macro-support-dev:ppc64el (0.2.87-1) ... 163s Selecting previously unselected package librust-wasm-bindgen-macro-dev:ppc64el. 163s Preparing to unpack .../294-librust-wasm-bindgen-macro-dev_0.2.87-1_ppc64el.deb ... 163s Unpacking librust-wasm-bindgen-macro-dev:ppc64el (0.2.87-1) ... 163s Selecting previously unselected package librust-wasm-bindgen-dev:ppc64el. 163s Preparing to unpack .../295-librust-wasm-bindgen-dev_0.2.87-1_ppc64el.deb ... 163s Unpacking librust-wasm-bindgen-dev:ppc64el (0.2.87-1) ... 163s Selecting previously unselected package librust-wasm-bindgen-macro-support+spans-dev:ppc64el. 163s Preparing to unpack .../296-librust-wasm-bindgen-macro-support+spans-dev_0.2.87-1_ppc64el.deb ... 163s Unpacking librust-wasm-bindgen-macro-support+spans-dev:ppc64el (0.2.87-1) ... 163s Selecting previously unselected package librust-wasm-bindgen-macro+spans-dev:ppc64el. 163s Preparing to unpack .../297-librust-wasm-bindgen-macro+spans-dev_0.2.87-1_ppc64el.deb ... 163s Unpacking librust-wasm-bindgen-macro+spans-dev:ppc64el (0.2.87-1) ... 163s Selecting previously unselected package librust-wasm-bindgen+spans-dev:ppc64el. 163s Preparing to unpack .../298-librust-wasm-bindgen+spans-dev_0.2.87-1_ppc64el.deb ... 163s Unpacking librust-wasm-bindgen+spans-dev:ppc64el (0.2.87-1) ... 163s Selecting previously unselected package librust-wasm-bindgen+default-dev:ppc64el. 163s Preparing to unpack .../299-librust-wasm-bindgen+default-dev_0.2.87-1_ppc64el.deb ... 163s Unpacking librust-wasm-bindgen+default-dev:ppc64el (0.2.87-1) ... 163s Selecting previously unselected package librust-js-sys-dev:ppc64el. 163s Preparing to unpack .../300-librust-js-sys-dev_0.3.64-1_ppc64el.deb ... 163s Unpacking librust-js-sys-dev:ppc64el (0.3.64-1) ... 163s Selecting previously unselected package librust-pure-rust-locales-dev:ppc64el. 163s Preparing to unpack .../301-librust-pure-rust-locales-dev_0.8.1-1_ppc64el.deb ... 163s Unpacking librust-pure-rust-locales-dev:ppc64el (0.8.1-1) ... 163s Selecting previously unselected package librust-chrono-dev:ppc64el. 163s Preparing to unpack .../302-librust-chrono-dev_0.4.38-2_ppc64el.deb ... 163s Unpacking librust-chrono-dev:ppc64el (0.4.38-2) ... 163s Selecting previously unselected package librust-regex-dev:ppc64el. 163s Preparing to unpack .../303-librust-regex-dev_1.10.6-1_ppc64el.deb ... 163s Unpacking librust-regex-dev:ppc64el (1.10.6-1) ... 163s Selecting previously unselected package librust-parse-zoneinfo-dev:ppc64el. 163s Preparing to unpack .../304-librust-parse-zoneinfo-dev_0.3.0-1_ppc64el.deb ... 163s Unpacking librust-parse-zoneinfo-dev:ppc64el (0.3.0-1) ... 163s Selecting previously unselected package librust-siphasher-dev:ppc64el. 163s Preparing to unpack .../305-librust-siphasher-dev_0.3.10-1_ppc64el.deb ... 163s Unpacking librust-siphasher-dev:ppc64el (0.3.10-1) ... 163s Selecting previously unselected package librust-phf-shared-dev:ppc64el. 163s Preparing to unpack .../306-librust-phf-shared-dev_0.11.2-1_ppc64el.deb ... 163s Unpacking librust-phf-shared-dev:ppc64el (0.11.2-1) ... 163s Selecting previously unselected package librust-phf-dev:ppc64el. 163s Preparing to unpack .../307-librust-phf-dev_0.11.2-1_ppc64el.deb ... 163s Unpacking librust-phf-dev:ppc64el (0.11.2-1) ... 163s Selecting previously unselected package librust-uncased-dev:ppc64el. 163s Preparing to unpack .../308-librust-uncased-dev_0.9.6-2_ppc64el.deb ... 163s Unpacking librust-uncased-dev:ppc64el (0.9.6-2) ... 163s Selecting previously unselected package librust-phf-shared+uncased-dev:ppc64el. 163s Preparing to unpack .../309-librust-phf-shared+uncased-dev_0.11.2-1_ppc64el.deb ... 163s Unpacking librust-phf-shared+uncased-dev:ppc64el (0.11.2-1) ... 163s Selecting previously unselected package librust-phf+uncased-dev:ppc64el. 163s Preparing to unpack .../310-librust-phf+uncased-dev_0.11.2-1_ppc64el.deb ... 163s Unpacking librust-phf+uncased-dev:ppc64el (0.11.2-1) ... 163s Selecting previously unselected package librust-ciborium-io-dev:ppc64el. 163s Preparing to unpack .../311-librust-ciborium-io-dev_0.2.2-1_ppc64el.deb ... 163s Unpacking librust-ciborium-io-dev:ppc64el (0.2.2-1) ... 164s Selecting previously unselected package librust-half-dev:ppc64el. 164s Preparing to unpack .../312-librust-half-dev_1.8.2-4_ppc64el.deb ... 164s Unpacking librust-half-dev:ppc64el (1.8.2-4) ... 164s Selecting previously unselected package librust-ciborium-ll-dev:ppc64el. 164s Preparing to unpack .../313-librust-ciborium-ll-dev_0.2.2-1_ppc64el.deb ... 164s Unpacking librust-ciborium-ll-dev:ppc64el (0.2.2-1) ... 164s Selecting previously unselected package librust-ciborium-dev:ppc64el. 164s Preparing to unpack .../314-librust-ciborium-dev_0.2.2-2_ppc64el.deb ... 164s Unpacking librust-ciborium-dev:ppc64el (0.2.2-2) ... 164s Selecting previously unselected package librust-clap-lex-dev:ppc64el. 164s Preparing to unpack .../315-librust-clap-lex-dev_0.7.2-2_ppc64el.deb ... 164s Unpacking librust-clap-lex-dev:ppc64el (0.7.2-2) ... 164s Selecting previously unselected package librust-strsim-dev:ppc64el. 164s Preparing to unpack .../316-librust-strsim-dev_0.11.1-1_ppc64el.deb ... 164s Unpacking librust-strsim-dev:ppc64el (0.11.1-1) ... 164s Selecting previously unselected package librust-terminal-size-dev:ppc64el. 164s Preparing to unpack .../317-librust-terminal-size-dev_0.3.0-2_ppc64el.deb ... 164s Unpacking librust-terminal-size-dev:ppc64el (0.3.0-2) ... 164s Selecting previously unselected package librust-unicase-dev:ppc64el. 164s Preparing to unpack .../318-librust-unicase-dev_2.7.0-1_ppc64el.deb ... 164s Unpacking librust-unicase-dev:ppc64el (2.7.0-1) ... 164s Selecting previously unselected package librust-unicode-width-dev:ppc64el. 164s Preparing to unpack .../319-librust-unicode-width-dev_0.1.14-1_ppc64el.deb ... 164s Unpacking librust-unicode-width-dev:ppc64el (0.1.14-1) ... 164s Selecting previously unselected package librust-clap-builder-dev:ppc64el. 164s Preparing to unpack .../320-librust-clap-builder-dev_4.5.15-2_ppc64el.deb ... 164s Unpacking librust-clap-builder-dev:ppc64el (4.5.15-2) ... 164s Selecting previously unselected package librust-heck-dev:ppc64el. 164s Preparing to unpack .../321-librust-heck-dev_0.4.1-1_ppc64el.deb ... 164s Unpacking librust-heck-dev:ppc64el (0.4.1-1) ... 164s Selecting previously unselected package librust-clap-derive-dev:ppc64el. 164s Preparing to unpack .../322-librust-clap-derive-dev_4.5.13-2_ppc64el.deb ... 164s Unpacking librust-clap-derive-dev:ppc64el (4.5.13-2) ... 164s Selecting previously unselected package librust-clap-dev:ppc64el. 164s Preparing to unpack .../323-librust-clap-dev_4.5.16-1_ppc64el.deb ... 164s Unpacking librust-clap-dev:ppc64el (4.5.16-1) ... 164s Selecting previously unselected package librust-csv-core-dev:ppc64el. 164s Preparing to unpack .../324-librust-csv-core-dev_0.1.11-1_ppc64el.deb ... 164s Unpacking librust-csv-core-dev:ppc64el (0.1.11-1) ... 164s Selecting previously unselected package librust-csv-dev:ppc64el. 164s Preparing to unpack .../325-librust-csv-dev_1.3.0-1_ppc64el.deb ... 164s Unpacking librust-csv-dev:ppc64el (1.3.0-1) ... 164s Selecting previously unselected package librust-futures-sink-dev:ppc64el. 164s Preparing to unpack .../326-librust-futures-sink-dev_0.3.31-1_ppc64el.deb ... 164s Unpacking librust-futures-sink-dev:ppc64el (0.3.31-1) ... 164s Selecting previously unselected package librust-futures-channel-dev:ppc64el. 164s Preparing to unpack .../327-librust-futures-channel-dev_0.3.30-1_ppc64el.deb ... 164s Unpacking librust-futures-channel-dev:ppc64el (0.3.30-1) ... 164s Selecting previously unselected package librust-futures-task-dev:ppc64el. 164s Preparing to unpack .../328-librust-futures-task-dev_0.3.30-1_ppc64el.deb ... 164s Unpacking librust-futures-task-dev:ppc64el (0.3.30-1) ... 164s Selecting previously unselected package librust-futures-macro-dev:ppc64el. 164s Preparing to unpack .../329-librust-futures-macro-dev_0.3.30-1_ppc64el.deb ... 164s Unpacking librust-futures-macro-dev:ppc64el (0.3.30-1) ... 164s Selecting previously unselected package librust-futures-util-dev:ppc64el. 164s Preparing to unpack .../330-librust-futures-util-dev_0.3.30-2_ppc64el.deb ... 164s Unpacking librust-futures-util-dev:ppc64el (0.3.30-2) ... 164s Selecting previously unselected package librust-num-cpus-dev:ppc64el. 164s Preparing to unpack .../331-librust-num-cpus-dev_1.16.0-1_ppc64el.deb ... 164s Unpacking librust-num-cpus-dev:ppc64el (1.16.0-1) ... 164s Selecting previously unselected package librust-futures-executor-dev:ppc64el. 164s Preparing to unpack .../332-librust-futures-executor-dev_0.3.30-1_ppc64el.deb ... 164s Unpacking librust-futures-executor-dev:ppc64el (0.3.30-1) ... 164s Selecting previously unselected package librust-futures-dev:ppc64el. 164s Preparing to unpack .../333-librust-futures-dev_0.3.30-2_ppc64el.deb ... 164s Unpacking librust-futures-dev:ppc64el (0.3.30-2) ... 164s Selecting previously unselected package librust-is-terminal-dev:ppc64el. 164s Preparing to unpack .../334-librust-is-terminal-dev_0.4.13-1_ppc64el.deb ... 164s Unpacking librust-is-terminal-dev:ppc64el (0.4.13-1) ... 164s Selecting previously unselected package librust-itertools-dev:ppc64el. 164s Preparing to unpack .../335-librust-itertools-dev_0.10.5-1_ppc64el.deb ... 164s Unpacking librust-itertools-dev:ppc64el (0.10.5-1) ... 164s Selecting previously unselected package librust-oorandom-dev:ppc64el. 164s Preparing to unpack .../336-librust-oorandom-dev_11.1.3-1_ppc64el.deb ... 164s Unpacking librust-oorandom-dev:ppc64el (11.1.3-1) ... 164s Selecting previously unselected package librust-winapi-i686-pc-windows-gnu-dev:ppc64el. 164s Preparing to unpack .../337-librust-winapi-i686-pc-windows-gnu-dev_0.4.0-1_ppc64el.deb ... 164s Unpacking librust-winapi-i686-pc-windows-gnu-dev:ppc64el (0.4.0-1) ... 164s Selecting previously unselected package librust-winapi-x86-64-pc-windows-gnu-dev:ppc64el. 164s Preparing to unpack .../338-librust-winapi-x86-64-pc-windows-gnu-dev_0.4.0-1_ppc64el.deb ... 164s Unpacking librust-winapi-x86-64-pc-windows-gnu-dev:ppc64el (0.4.0-1) ... 164s Selecting previously unselected package librust-winapi-dev:ppc64el. 164s Preparing to unpack .../339-librust-winapi-dev_0.3.9-1_ppc64el.deb ... 164s Unpacking librust-winapi-dev:ppc64el (0.3.9-1) ... 164s Selecting previously unselected package librust-dirs-sys-next-dev:ppc64el. 164s Preparing to unpack .../340-librust-dirs-sys-next-dev_0.1.1-1_ppc64el.deb ... 164s Unpacking librust-dirs-sys-next-dev:ppc64el (0.1.1-1) ... 164s Selecting previously unselected package librust-dirs-next-dev:ppc64el. 164s Preparing to unpack .../341-librust-dirs-next-dev_2.0.0-1_ppc64el.deb ... 164s Unpacking librust-dirs-next-dev:ppc64el (2.0.0-1) ... 164s Selecting previously unselected package librust-float-ord-dev:ppc64el. 164s Preparing to unpack .../342-librust-float-ord-dev_0.3.2-1_ppc64el.deb ... 164s Unpacking librust-float-ord-dev:ppc64el (0.3.2-1) ... 164s Selecting previously unselected package librust-cmake-dev:ppc64el. 164s Preparing to unpack .../343-librust-cmake-dev_0.1.45-1_ppc64el.deb ... 164s Unpacking librust-cmake-dev:ppc64el (0.1.45-1) ... 164s Selecting previously unselected package librust-freetype-sys-dev:ppc64el. 164s Preparing to unpack .../344-librust-freetype-sys-dev_0.13.1-1_ppc64el.deb ... 164s Unpacking librust-freetype-sys-dev:ppc64el (0.13.1-1) ... 164s Selecting previously unselected package librust-freetype-dev:ppc64el. 164s Preparing to unpack .../345-librust-freetype-dev_0.7.0-4_ppc64el.deb ... 164s Unpacking librust-freetype-dev:ppc64el (0.7.0-4) ... 164s Selecting previously unselected package librust-spin-dev:ppc64el. 164s Preparing to unpack .../346-librust-spin-dev_0.9.8-4_ppc64el.deb ... 164s Unpacking librust-spin-dev:ppc64el (0.9.8-4) ... 164s Selecting previously unselected package librust-lazy-static-dev:ppc64el. 164s Preparing to unpack .../347-librust-lazy-static-dev_1.5.0-1_ppc64el.deb ... 164s Unpacking librust-lazy-static-dev:ppc64el (1.5.0-1) ... 164s Selecting previously unselected package librust-pathfinder-simd-dev:ppc64el. 164s Preparing to unpack .../348-librust-pathfinder-simd-dev_0.5.2-1_ppc64el.deb ... 164s Unpacking librust-pathfinder-simd-dev:ppc64el (0.5.2-1) ... 164s Selecting previously unselected package librust-pathfinder-geometry-dev:ppc64el. 164s Preparing to unpack .../349-librust-pathfinder-geometry-dev_0.5.1-1_ppc64el.deb ... 164s Unpacking librust-pathfinder-geometry-dev:ppc64el (0.5.1-1) ... 164s Selecting previously unselected package librust-winapi-util-dev:ppc64el. 164s Preparing to unpack .../350-librust-winapi-util-dev_0.1.6-1_ppc64el.deb ... 164s Unpacking librust-winapi-util-dev:ppc64el (0.1.6-1) ... 164s Selecting previously unselected package librust-same-file-dev:ppc64el. 164s Preparing to unpack .../351-librust-same-file-dev_1.0.6-1_ppc64el.deb ... 164s Unpacking librust-same-file-dev:ppc64el (1.0.6-1) ... 164s Selecting previously unselected package librust-walkdir-dev:ppc64el. 164s Preparing to unpack .../352-librust-walkdir-dev_2.5.0-1_ppc64el.deb ... 164s Unpacking librust-walkdir-dev:ppc64el (2.5.0-1) ... 164s Selecting previously unselected package librust-const-cstr-dev:ppc64el. 164s Preparing to unpack .../353-librust-const-cstr-dev_0.3.0-1_ppc64el.deb ... 164s Unpacking librust-const-cstr-dev:ppc64el (0.3.0-1) ... 164s Selecting previously unselected package librust-libloading-dev:ppc64el. 164s Preparing to unpack .../354-librust-libloading-dev_0.8.5-1_ppc64el.deb ... 164s Unpacking librust-libloading-dev:ppc64el (0.8.5-1) ... 164s Selecting previously unselected package librust-dlib-dev:ppc64el. 164s Preparing to unpack .../355-librust-dlib-dev_0.5.2-2_ppc64el.deb ... 164s Unpacking librust-dlib-dev:ppc64el (0.5.2-2) ... 164s Selecting previously unselected package librust-yeslogic-fontconfig-sys-dev:ppc64el. 164s Preparing to unpack .../356-librust-yeslogic-fontconfig-sys-dev_3.0.1-1_ppc64el.deb ... 164s Unpacking librust-yeslogic-fontconfig-sys-dev:ppc64el (3.0.1-1) ... 164s Selecting previously unselected package librust-font-kit-dev:ppc64el. 164s Preparing to unpack .../357-librust-font-kit-dev_0.11.0-2_ppc64el.deb ... 164s Unpacking librust-font-kit-dev:ppc64el (0.11.0-2) ... 165s Selecting previously unselected package librust-color-quant-dev:ppc64el. 165s Preparing to unpack .../358-librust-color-quant-dev_1.1.0-1_ppc64el.deb ... 165s Unpacking librust-color-quant-dev:ppc64el (1.1.0-1) ... 165s Selecting previously unselected package librust-weezl-dev:ppc64el. 165s Preparing to unpack .../359-librust-weezl-dev_0.1.5-1_ppc64el.deb ... 165s Unpacking librust-weezl-dev:ppc64el (0.1.5-1) ... 165s Selecting previously unselected package librust-gif-dev:ppc64el. 165s Preparing to unpack .../360-librust-gif-dev_0.11.3-1_ppc64el.deb ... 165s Unpacking librust-gif-dev:ppc64el (0.11.3-1) ... 165s Selecting previously unselected package librust-jpeg-decoder-dev:ppc64el. 165s Preparing to unpack .../361-librust-jpeg-decoder-dev_0.3.0-1_ppc64el.deb ... 165s Unpacking librust-jpeg-decoder-dev:ppc64el (0.3.0-1) ... 165s Selecting previously unselected package librust-num-integer-dev:ppc64el. 165s Preparing to unpack .../362-librust-num-integer-dev_0.1.46-1_ppc64el.deb ... 165s Unpacking librust-num-integer-dev:ppc64el (0.1.46-1) ... 165s Selecting previously unselected package librust-humantime-dev:ppc64el. 165s Preparing to unpack .../363-librust-humantime-dev_2.1.0-1_ppc64el.deb ... 165s Unpacking librust-humantime-dev:ppc64el (2.1.0-1) ... 165s Selecting previously unselected package librust-termcolor-dev:ppc64el. 165s Preparing to unpack .../364-librust-termcolor-dev_1.4.1-1_ppc64el.deb ... 165s Unpacking librust-termcolor-dev:ppc64el (1.4.1-1) ... 165s Selecting previously unselected package librust-env-logger-dev:ppc64el. 165s Preparing to unpack .../365-librust-env-logger-dev_0.10.2-2_ppc64el.deb ... 165s Unpacking librust-env-logger-dev:ppc64el (0.10.2-2) ... 165s Selecting previously unselected package librust-quickcheck-dev:ppc64el. 165s Preparing to unpack .../366-librust-quickcheck-dev_1.0.3-3_ppc64el.deb ... 165s Unpacking librust-quickcheck-dev:ppc64el (1.0.3-3) ... 165s Selecting previously unselected package librust-num-bigint-dev:ppc64el. 165s Preparing to unpack .../367-librust-num-bigint-dev_0.4.6-1_ppc64el.deb ... 165s Unpacking librust-num-bigint-dev:ppc64el (0.4.6-1) ... 165s Selecting previously unselected package librust-num-rational-dev:ppc64el. 165s Preparing to unpack .../368-librust-num-rational-dev_0.4.2-1_ppc64el.deb ... 165s Unpacking librust-num-rational-dev:ppc64el (0.4.2-1) ... 165s Selecting previously unselected package librust-png-dev:ppc64el. 165s Preparing to unpack .../369-librust-png-dev_0.17.7-3_ppc64el.deb ... 165s Unpacking librust-png-dev:ppc64el (0.17.7-3) ... 165s Selecting previously unselected package librust-qoi-dev:ppc64el. 165s Preparing to unpack .../370-librust-qoi-dev_0.4.1-2_ppc64el.deb ... 165s Unpacking librust-qoi-dev:ppc64el (0.4.1-2) ... 165s Selecting previously unselected package librust-tiff-dev:ppc64el. 165s Preparing to unpack .../371-librust-tiff-dev_0.9.0-1_ppc64el.deb ... 165s Unpacking librust-tiff-dev:ppc64el (0.9.0-1) ... 165s Selecting previously unselected package libsharpyuv0:ppc64el. 165s Preparing to unpack .../372-libsharpyuv0_1.4.0-0.1_ppc64el.deb ... 165s Unpacking libsharpyuv0:ppc64el (1.4.0-0.1) ... 165s Selecting previously unselected package libwebp7:ppc64el. 165s Preparing to unpack .../373-libwebp7_1.4.0-0.1_ppc64el.deb ... 165s Unpacking libwebp7:ppc64el (1.4.0-0.1) ... 165s Selecting previously unselected package libwebpdemux2:ppc64el. 165s Preparing to unpack .../374-libwebpdemux2_1.4.0-0.1_ppc64el.deb ... 165s Unpacking libwebpdemux2:ppc64el (1.4.0-0.1) ... 165s Selecting previously unselected package libwebpmux3:ppc64el. 165s Preparing to unpack .../375-libwebpmux3_1.4.0-0.1_ppc64el.deb ... 165s Unpacking libwebpmux3:ppc64el (1.4.0-0.1) ... 165s Selecting previously unselected package libwebpdecoder3:ppc64el. 165s Preparing to unpack .../376-libwebpdecoder3_1.4.0-0.1_ppc64el.deb ... 165s Unpacking libwebpdecoder3:ppc64el (1.4.0-0.1) ... 165s Selecting previously unselected package libsharpyuv-dev:ppc64el. 165s Preparing to unpack .../377-libsharpyuv-dev_1.4.0-0.1_ppc64el.deb ... 165s Unpacking libsharpyuv-dev:ppc64el (1.4.0-0.1) ... 165s Selecting previously unselected package libwebp-dev:ppc64el. 165s Preparing to unpack .../378-libwebp-dev_1.4.0-0.1_ppc64el.deb ... 165s Unpacking libwebp-dev:ppc64el (1.4.0-0.1) ... 165s Selecting previously unselected package librust-libwebp-sys-dev:ppc64el. 165s Preparing to unpack .../379-librust-libwebp-sys-dev_0.9.5-1build1_ppc64el.deb ... 165s Unpacking librust-libwebp-sys-dev:ppc64el (0.9.5-1build1) ... 165s Selecting previously unselected package librust-webp-dev:ppc64el. 165s Preparing to unpack .../380-librust-webp-dev_0.2.6-1_ppc64el.deb ... 165s Unpacking librust-webp-dev:ppc64el (0.2.6-1) ... 165s Selecting previously unselected package librust-image-dev:ppc64el. 165s Preparing to unpack .../381-librust-image-dev_0.24.7-2_ppc64el.deb ... 165s Unpacking librust-image-dev:ppc64el (0.24.7-2) ... 165s Selecting previously unselected package librust-plotters-backend-dev:ppc64el. 165s Preparing to unpack .../382-librust-plotters-backend-dev_0.3.7-1_ppc64el.deb ... 165s Unpacking librust-plotters-backend-dev:ppc64el (0.3.7-1) ... 165s Selecting previously unselected package librust-plotters-bitmap-dev:ppc64el. 165s Preparing to unpack .../383-librust-plotters-bitmap-dev_0.3.3-3_ppc64el.deb ... 165s Unpacking librust-plotters-bitmap-dev:ppc64el (0.3.3-3) ... 165s Selecting previously unselected package librust-plotters-svg-dev:ppc64el. 165s Preparing to unpack .../384-librust-plotters-svg-dev_0.3.5-1_ppc64el.deb ... 165s Unpacking librust-plotters-svg-dev:ppc64el (0.3.5-1) ... 165s Selecting previously unselected package librust-web-sys-dev:ppc64el. 165s Preparing to unpack .../385-librust-web-sys-dev_0.3.64-2_ppc64el.deb ... 165s Unpacking librust-web-sys-dev:ppc64el (0.3.64-2) ... 165s Selecting previously unselected package librust-plotters-dev:ppc64el. 165s Preparing to unpack .../386-librust-plotters-dev_0.3.5-4_ppc64el.deb ... 165s Unpacking librust-plotters-dev:ppc64el (0.3.5-4) ... 165s Selecting previously unselected package librust-smol-dev. 165s Preparing to unpack .../387-librust-smol-dev_2.0.2-1_all.deb ... 165s Unpacking librust-smol-dev (2.0.2-1) ... 165s Selecting previously unselected package librust-tinytemplate-dev:ppc64el. 165s Preparing to unpack .../388-librust-tinytemplate-dev_1.2.1-1_ppc64el.deb ... 165s Unpacking librust-tinytemplate-dev:ppc64el (1.2.1-1) ... 165s Selecting previously unselected package librust-criterion-dev. 165s Preparing to unpack .../389-librust-criterion-dev_0.5.1-6_all.deb ... 165s Unpacking librust-criterion-dev (0.5.1-6) ... 166s Selecting previously unselected package librust-phf-generator-dev:ppc64el. 166s Preparing to unpack .../390-librust-phf-generator-dev_0.11.2-2_ppc64el.deb ... 166s Unpacking librust-phf-generator-dev:ppc64el (0.11.2-2) ... 166s Selecting previously unselected package librust-phf-codegen-dev:ppc64el. 166s Preparing to unpack .../391-librust-phf-codegen-dev_0.11.2-1_ppc64el.deb ... 166s Unpacking librust-phf-codegen-dev:ppc64el (0.11.2-1) ... 166s Selecting previously unselected package librust-chrono-tz-build-dev:ppc64el. 166s Preparing to unpack .../392-librust-chrono-tz-build-dev_0.2.1-1_ppc64el.deb ... 166s Unpacking librust-chrono-tz-build-dev:ppc64el (0.2.1-1) ... 166s Selecting previously unselected package librust-chrono-tz-dev:ppc64el. 166s Preparing to unpack .../393-librust-chrono-tz-dev_0.8.6-2_ppc64el.deb ... 166s Unpacking librust-chrono-tz-dev:ppc64el (0.8.6-2) ... 166s Selecting previously unselected package librust-ctor-dev:ppc64el. 166s Preparing to unpack .../394-librust-ctor-dev_0.1.26-1_ppc64el.deb ... 166s Unpacking librust-ctor-dev:ppc64el (0.1.26-1) ... 166s Selecting previously unselected package librust-powerfmt-macros-dev:ppc64el. 166s Preparing to unpack .../395-librust-powerfmt-macros-dev_0.1.0-1_ppc64el.deb ... 166s Unpacking librust-powerfmt-macros-dev:ppc64el (0.1.0-1) ... 166s Selecting previously unselected package librust-powerfmt-dev:ppc64el. 166s Preparing to unpack .../396-librust-powerfmt-dev_0.2.0-1_ppc64el.deb ... 166s Unpacking librust-powerfmt-dev:ppc64el (0.2.0-1) ... 166s Selecting previously unselected package librust-deranged-dev:ppc64el. 166s Preparing to unpack .../397-librust-deranged-dev_0.3.11-1_ppc64el.deb ... 166s Unpacking librust-deranged-dev:ppc64el (0.3.11-1) ... 166s Selecting previously unselected package librust-eui48-dev:ppc64el. 166s Preparing to unpack .../398-librust-eui48-dev_1.1.0-2_ppc64el.deb ... 166s Unpacking librust-eui48-dev:ppc64el (1.1.0-2) ... 166s Selecting previously unselected package librust-indenter-dev:ppc64el. 166s Preparing to unpack .../399-librust-indenter-dev_0.3.3-1_ppc64el.deb ... 166s Unpacking librust-indenter-dev:ppc64el (0.3.3-1) ... 166s Selecting previously unselected package librust-eyre-dev:ppc64el. 166s Preparing to unpack .../400-librust-eyre-dev_0.6.12-1_ppc64el.deb ... 166s Unpacking librust-eyre-dev:ppc64el (0.6.12-1) ... 166s Selecting previously unselected package librust-eyre+default-dev:ppc64el. 166s Preparing to unpack .../401-librust-eyre+default-dev_0.6.12-1_ppc64el.deb ... 166s Unpacking librust-eyre+default-dev:ppc64el (0.6.12-1) ... 166s Selecting previously unselected package librust-fancy-regex-dev:ppc64el. 166s Preparing to unpack .../402-librust-fancy-regex-dev_0.11.0-2_ppc64el.deb ... 166s Unpacking librust-fancy-regex-dev:ppc64el (0.11.0-2) ... 166s Selecting previously unselected package librust-fnv-dev:ppc64el. 166s Preparing to unpack .../403-librust-fnv-dev_1.0.7-1_ppc64el.deb ... 166s Unpacking librust-fnv-dev:ppc64el (1.0.7-1) ... 166s Selecting previously unselected package librust-geo-types-dev:ppc64el. 166s Preparing to unpack .../404-librust-geo-types-dev_0.7.11-2_ppc64el.deb ... 166s Unpacking librust-geo-types-dev:ppc64el (0.7.11-2) ... 166s Selecting previously unselected package librust-ghost-dev:ppc64el. 166s Preparing to unpack .../405-librust-ghost-dev_0.1.5-1_ppc64el.deb ... 166s Unpacking librust-ghost-dev:ppc64el (0.1.5-1) ... 166s Selecting previously unselected package librust-hmac-dev:ppc64el. 166s Preparing to unpack .../406-librust-hmac-dev_0.12.1-1_ppc64el.deb ... 166s Unpacking librust-hmac-dev:ppc64el (0.12.1-1) ... 166s Selecting previously unselected package librust-indoc-dev:ppc64el. 166s Preparing to unpack .../407-librust-indoc-dev_2.0.5-1_ppc64el.deb ... 166s Unpacking librust-indoc-dev:ppc64el (2.0.5-1) ... 166s Selecting previously unselected package librust-inventory-dev:ppc64el. 166s Preparing to unpack .../408-librust-inventory-dev_0.3.2-1_ppc64el.deb ... 166s Unpacking librust-inventory-dev:ppc64el (0.3.2-1) ... 166s Selecting previously unselected package librust-memoffset-dev:ppc64el. 166s Preparing to unpack .../409-librust-memoffset-dev_0.8.0-1_ppc64el.deb ... 166s Unpacking librust-memoffset-dev:ppc64el (0.8.0-1) ... 166s Selecting previously unselected package librust-num-conv-dev:ppc64el. 166s Preparing to unpack .../410-librust-num-conv-dev_0.1.0-1_ppc64el.deb ... 166s Unpacking librust-num-conv-dev:ppc64el (0.1.0-1) ... 166s Selecting previously unselected package librust-num-threads-dev:ppc64el. 166s Preparing to unpack .../411-librust-num-threads-dev_0.1.7-1_ppc64el.deb ... 166s Unpacking librust-num-threads-dev:ppc64el (0.1.7-1) ... 166s Selecting previously unselected package librust-postgres-derive-dev:ppc64el. 166s Preparing to unpack .../412-librust-postgres-derive-dev_0.4.5-1_ppc64el.deb ... 166s Unpacking librust-postgres-derive-dev:ppc64el (0.4.5-1) ... 166s Selecting previously unselected package librust-sha2-asm-dev:ppc64el. 166s Preparing to unpack .../413-librust-sha2-asm-dev_0.6.2-2_ppc64el.deb ... 166s Unpacking librust-sha2-asm-dev:ppc64el (0.6.2-2) ... 166s Selecting previously unselected package librust-sha2-dev:ppc64el. 166s Preparing to unpack .../414-librust-sha2-dev_0.10.8-1_ppc64el.deb ... 166s Unpacking librust-sha2-dev:ppc64el (0.10.8-1) ... 166s Selecting previously unselected package librust-unicode-bidi-dev:ppc64el. 166s Preparing to unpack .../415-librust-unicode-bidi-dev_0.3.13-1_ppc64el.deb ... 166s Unpacking librust-unicode-bidi-dev:ppc64el (0.3.13-1) ... 166s Selecting previously unselected package librust-unicode-normalization-dev:ppc64el. 166s Preparing to unpack .../416-librust-unicode-normalization-dev_0.1.22-1_ppc64el.deb ... 166s Unpacking librust-unicode-normalization-dev:ppc64el (0.1.22-1) ... 166s Selecting previously unselected package librust-stringprep-dev:ppc64el. 166s Preparing to unpack .../417-librust-stringprep-dev_0.1.2-1_ppc64el.deb ... 166s Unpacking librust-stringprep-dev:ppc64el (0.1.2-1) ... 166s Selecting previously unselected package librust-postgres-protocol-dev:ppc64el. 166s Preparing to unpack .../418-librust-postgres-protocol-dev_0.6.6-2_ppc64el.deb ... 166s Unpacking librust-postgres-protocol-dev:ppc64el (0.6.6-2) ... 166s Selecting previously unselected package librust-time-core-dev:ppc64el. 166s Preparing to unpack .../419-librust-time-core-dev_0.1.2-1_ppc64el.deb ... 166s Unpacking librust-time-core-dev:ppc64el (0.1.2-1) ... 166s Selecting previously unselected package librust-time-macros-dev:ppc64el. 166s Preparing to unpack .../420-librust-time-macros-dev_0.2.16-1_ppc64el.deb ... 166s Unpacking librust-time-macros-dev:ppc64el (0.2.16-1) ... 166s Selecting previously unselected package librust-time-dev:ppc64el. 166s Preparing to unpack .../421-librust-time-dev_0.3.36-2_ppc64el.deb ... 166s Unpacking librust-time-dev:ppc64el (0.3.36-2) ... 166s Selecting previously unselected package librust-postgres-types-dev:ppc64el. 166s Preparing to unpack .../422-librust-postgres-types-dev_0.2.6-2_ppc64el.deb ... 166s Unpacking librust-postgres-types-dev:ppc64el (0.2.6-2) ... 166s Selecting previously unselected package librust-rand-xorshift-dev:ppc64el. 166s Preparing to unpack .../423-librust-rand-xorshift-dev_0.3.0-2_ppc64el.deb ... 166s Unpacking librust-rand-xorshift-dev:ppc64el (0.3.0-2) ... 166s Selecting previously unselected package librust-quick-error-dev:ppc64el. 166s Preparing to unpack .../424-librust-quick-error-dev_2.0.1-1_ppc64el.deb ... 166s Unpacking librust-quick-error-dev:ppc64el (2.0.1-1) ... 166s Selecting previously unselected package librust-tempfile-dev:ppc64el. 166s Preparing to unpack .../425-librust-tempfile-dev_3.10.1-1_ppc64el.deb ... 166s Unpacking librust-tempfile-dev:ppc64el (3.10.1-1) ... 166s Selecting previously unselected package librust-rusty-fork-dev:ppc64el. 166s Preparing to unpack .../426-librust-rusty-fork-dev_0.3.0-1_ppc64el.deb ... 166s Unpacking librust-rusty-fork-dev:ppc64el (0.3.0-1) ... 166s Selecting previously unselected package librust-wait-timeout-dev:ppc64el. 166s Preparing to unpack .../427-librust-wait-timeout-dev_0.2.0-1_ppc64el.deb ... 166s Unpacking librust-wait-timeout-dev:ppc64el (0.2.0-1) ... 166s Selecting previously unselected package librust-rusty-fork+wait-timeout-dev:ppc64el. 166s Preparing to unpack .../428-librust-rusty-fork+wait-timeout-dev_0.3.0-1_ppc64el.deb ... 166s Unpacking librust-rusty-fork+wait-timeout-dev:ppc64el (0.3.0-1) ... 166s Selecting previously unselected package librust-unarray-dev:ppc64el. 166s Preparing to unpack .../429-librust-unarray-dev_0.1.4-1_ppc64el.deb ... 166s Unpacking librust-unarray-dev:ppc64el (0.1.4-1) ... 166s Selecting previously unselected package librust-proptest-dev:ppc64el. 166s Preparing to unpack .../430-librust-proptest-dev_1.5.0-2_ppc64el.deb ... 166s Unpacking librust-proptest-dev:ppc64el (1.5.0-2) ... 166s Selecting previously unselected package llvm-19-runtime. 166s Preparing to unpack .../431-llvm-19-runtime_1%3a19.1.2-1ubuntu1_ppc64el.deb ... 166s Unpacking llvm-19-runtime (1:19.1.2-1ubuntu1) ... 166s Selecting previously unselected package llvm-runtime:ppc64el. 166s Preparing to unpack .../432-llvm-runtime_1%3a19.0-60~exp1_ppc64el.deb ... 166s Unpacking llvm-runtime:ppc64el (1:19.0-60~exp1) ... 166s Selecting previously unselected package llvm-19-linker-tools. 166s Preparing to unpack .../433-llvm-19-linker-tools_1%3a19.1.2-1ubuntu1_ppc64el.deb ... 166s Unpacking llvm-19-linker-tools (1:19.1.2-1ubuntu1) ... 166s Selecting previously unselected package libpfm4:ppc64el. 166s Preparing to unpack .../434-libpfm4_4.13.0+git83-g91970fe-1_ppc64el.deb ... 166s Unpacking libpfm4:ppc64el (4.13.0+git83-g91970fe-1) ... 166s Selecting previously unselected package llvm-19. 166s Preparing to unpack .../435-llvm-19_1%3a19.1.2-1ubuntu1_ppc64el.deb ... 166s Unpacking llvm-19 (1:19.1.2-1ubuntu1) ... 167s Selecting previously unselected package llvm. 167s Preparing to unpack .../436-llvm_1%3a19.0-60~exp1_ppc64el.deb ... 167s Unpacking llvm (1:19.0-60~exp1) ... 167s Selecting previously unselected package binutils-mingw-w64-x86-64. 167s Preparing to unpack .../437-binutils-mingw-w64-x86-64_2.43.1-4ubuntu1+12_ppc64el.deb ... 167s Unpacking binutils-mingw-w64-x86-64 (2.43.1-4ubuntu1+12) ... 167s Selecting previously unselected package binutils-mingw-w64-i686. 167s Preparing to unpack .../438-binutils-mingw-w64-i686_2.43.1-4ubuntu1+12_ppc64el.deb ... 167s Unpacking binutils-mingw-w64-i686 (2.43.1-4ubuntu1+12) ... 167s Selecting previously unselected package librust-python3-dll-a-dev:ppc64el. 167s Preparing to unpack .../439-librust-python3-dll-a-dev_0.2.10-1_ppc64el.deb ... 167s Unpacking librust-python3-dll-a-dev:ppc64el (0.2.10-1) ... 167s Selecting previously unselected package librust-target-lexicon-dev:ppc64el. 167s Preparing to unpack .../440-librust-target-lexicon-dev_0.12.14-1_ppc64el.deb ... 167s Unpacking librust-target-lexicon-dev:ppc64el (0.12.14-1) ... 167s Selecting previously unselected package librust-pyo3-build-config-dev:ppc64el. 167s Preparing to unpack .../441-librust-pyo3-build-config-dev_0.22.6-1_ppc64el.deb ... 167s Unpacking librust-pyo3-build-config-dev:ppc64el (0.22.6-1) ... 167s Selecting previously unselected package python3.12-dev. 167s Preparing to unpack .../442-python3.12-dev_3.12.7-3_ppc64el.deb ... 167s Unpacking python3.12-dev (3.12.7-3) ... 167s Selecting previously unselected package librust-pyo3-ffi-dev:ppc64el. 167s Preparing to unpack .../443-librust-pyo3-ffi-dev_0.22.6-1build1_ppc64el.deb ... 167s Unpacking librust-pyo3-ffi-dev:ppc64el (0.22.6-1build1) ... 167s Selecting previously unselected package librust-pyo3-macros-backend-dev:ppc64el. 167s Preparing to unpack .../444-librust-pyo3-macros-backend-dev_0.22.6-1_ppc64el.deb ... 167s Unpacking librust-pyo3-macros-backend-dev:ppc64el (0.22.6-1) ... 167s Selecting previously unselected package librust-pyo3-macros-dev:ppc64el. 167s Preparing to unpack .../445-librust-pyo3-macros-dev_0.22.6-1_ppc64el.deb ... 167s Unpacking librust-pyo3-macros-dev:ppc64el (0.22.6-1) ... 167s Selecting previously unselected package librust-rust-decimal-dev:ppc64el. 167s Preparing to unpack .../446-librust-rust-decimal-dev_1.36.0-1_ppc64el.deb ... 167s Unpacking librust-rust-decimal-dev:ppc64el (1.36.0-1) ... 167s Selecting previously unselected package librust-unindent-dev:ppc64el. 167s Preparing to unpack .../447-librust-unindent-dev_0.2.3-1_ppc64el.deb ... 167s Unpacking librust-unindent-dev:ppc64el (0.2.3-1) ... 167s Selecting previously unselected package librust-pyo3-dev:ppc64el. 167s Preparing to unpack .../448-librust-pyo3-dev_0.22.6-1_ppc64el.deb ... 167s Unpacking librust-pyo3-dev:ppc64el (0.22.6-1) ... 167s Selecting previously unselected package librust-rustc-hash-dev:ppc64el. 167s Preparing to unpack .../449-librust-rustc-hash-dev_1.1.0-1_ppc64el.deb ... 167s Unpacking librust-rustc-hash-dev:ppc64el (1.1.0-1) ... 167s Selecting previously unselected package pybuild-plugin-autopkgtest. 167s Preparing to unpack .../450-pybuild-plugin-autopkgtest_6.20241024_all.deb ... 167s Unpacking pybuild-plugin-autopkgtest (6.20241024) ... 167s Selecting previously unselected package python3-packaging. 167s Preparing to unpack .../451-python3-packaging_24.2-1_all.deb ... 167s Unpacking python3-packaging (24.2-1) ... 167s Selecting previously unselected package python3-pyproject-hooks. 167s Preparing to unpack .../452-python3-pyproject-hooks_1.2.0-1_all.deb ... 167s Unpacking python3-pyproject-hooks (1.2.0-1) ... 167s Selecting previously unselected package python3-toml. 167s Preparing to unpack .../453-python3-toml_0.10.2-1_all.deb ... 167s Unpacking python3-toml (0.10.2-1) ... 167s Selecting previously unselected package python3-wheel. 167s Preparing to unpack .../454-python3-wheel_0.45.0-1_all.deb ... 167s Unpacking python3-wheel (0.45.0-1) ... 168s Selecting previously unselected package python3-build. 168s Preparing to unpack .../455-python3-build_1.2.2-1_all.deb ... 168s Unpacking python3-build (1.2.2-1) ... 168s Selecting previously unselected package python3-installer. 168s Preparing to unpack .../456-python3-installer_0.7.0+dfsg1-3_all.deb ... 168s Unpacking python3-installer (0.7.0+dfsg1-3) ... 168s Selecting previously unselected package pybuild-plugin-pyproject. 168s Preparing to unpack .../457-pybuild-plugin-pyproject_6.20241024_all.deb ... 168s Unpacking pybuild-plugin-pyproject (6.20241024) ... 168s Selecting previously unselected package python3.13. 168s Preparing to unpack .../458-python3.13_3.13.0-2_ppc64el.deb ... 168s Unpacking python3.13 (3.13.0-2) ... 168s Selecting previously unselected package python3-all. 168s Preparing to unpack .../459-python3-all_3.12.7-1_ppc64el.deb ... 168s Unpacking python3-all (3.12.7-1) ... 168s Selecting previously unselected package python3-dateutil. 168s Preparing to unpack .../460-python3-dateutil_2.9.0-3_all.deb ... 168s Unpacking python3-dateutil (2.9.0-3) ... 168s Selecting previously unselected package python3-sortedcontainers. 168s Preparing to unpack .../461-python3-sortedcontainers_2.4.0-2_all.deb ... 168s Unpacking python3-sortedcontainers (2.4.0-2) ... 168s Selecting previously unselected package python3-hypothesis. 168s Preparing to unpack .../462-python3-hypothesis_6.119.3-1_all.deb ... 168s Unpacking python3-hypothesis (6.119.3-1) ... 168s Selecting previously unselected package python3-iniconfig. 168s Preparing to unpack .../463-python3-iniconfig_1.1.1-2_all.deb ... 168s Unpacking python3-iniconfig (1.1.1-2) ... 168s Selecting previously unselected package python3-pluggy. 168s Preparing to unpack .../464-python3-pluggy_1.5.0-1_all.deb ... 168s Unpacking python3-pluggy (1.5.0-1) ... 168s Selecting previously unselected package python3-pytest. 168s Preparing to unpack .../465-python3-pytest_8.3.3-1_all.deb ... 168s Unpacking python3-pytest (8.3.3-1) ... 168s Selecting previously unselected package python3-regex. 168s Preparing to unpack .../466-python3-regex_0.1.20240724-1build1_ppc64el.deb ... 168s Unpacking python3-regex (0.1.20240724-1build1) ... 168s Selecting previously unselected package python3-semantic-version. 168s Preparing to unpack .../467-python3-semantic-version_2.10.0-2_all.deb ... 168s Unpacking python3-semantic-version (2.10.0-2) ... 168s Selecting previously unselected package rustc. 168s Preparing to unpack .../468-rustc_1.80.1ubuntu2_ppc64el.deb ... 168s Unpacking rustc (1.80.1ubuntu2) ... 168s Selecting previously unselected package cargo. 168s Preparing to unpack .../469-cargo_1.80.1ubuntu2_ppc64el.deb ... 168s Unpacking cargo (1.80.1ubuntu2) ... 168s Selecting previously unselected package python3-setuptools-rust. 168s Preparing to unpack .../470-python3-setuptools-rust_1.9.0+dfsg-2_all.deb ... 168s Unpacking python3-setuptools-rust (1.9.0+dfsg-2) ... 168s Selecting previously unselected package python3-tiktoken. 168s Preparing to unpack .../471-python3-tiktoken_0.8.0-1build1_ppc64el.deb ... 168s Unpacking python3-tiktoken (0.8.0-1build1) ... 168s Selecting previously unselected package autopkgtest-satdep. 168s Preparing to unpack .../472-1-autopkgtest-satdep.deb ... 168s Unpacking autopkgtest-satdep (0) ... 168s Setting up dh-python (6.20241024) ... 168s Setting up librust-ciborium-io-dev:ppc64el (0.2.2-1) ... 168s Setting up librust-crossbeam-utils-dev:ppc64el (0.8.19-1) ... 168s Setting up librust-parking-dev:ppc64el (2.2.0-1) ... 168s Setting up librust-ppv-lite86-dev:ppc64el (0.2.16-1) ... 168s Setting up python3-iniconfig (1.1.1-2) ... 168s Setting up libsharpyuv0:ppc64el (1.4.0-0.1) ... 168s Setting up librust-pin-utils-dev:ppc64el (0.1.0-1) ... 168s Setting up librust-fnv-dev:ppc64el (1.0.7-1) ... 168s Setting up librust-libc-dev:ppc64el (0.2.155-1) ... 168s Setting up librust-unindent-dev:ppc64el (0.2.3-1) ... 168s Setting up librust-quick-error-dev:ppc64el (2.0.1-1) ... 168s Setting up librust-is-terminal-dev:ppc64el (0.4.13-1) ... 168s Setting up librust-traitobject-dev:ppc64el (0.1.0-1) ... 168s Setting up librust-either-dev:ppc64el (1.13.0-1) ... 168s Setting up binutils-mingw-w64-x86-64 (2.43.1-4ubuntu1+12) ... 168s Setting up librust-adler-dev:ppc64el (1.0.2-2) ... 168s Setting up librust-version-check-dev:ppc64el (0.9.5-1) ... 168s Setting up librust-base64-dev:ppc64el (0.21.7-1) ... 168s Setting up librust-indoc-dev:ppc64el (2.0.5-1) ... 168s Setting up librust-anstyle-dev:ppc64el (1.0.8-1) ... 168s Setting up librust-winapi-i686-pc-windows-gnu-dev:ppc64el (0.4.0-1) ... 168s Setting up librust-futures-task-dev:ppc64el (0.3.30-1) ... 168s Setting up librust-rustc-hash-dev:ppc64el (1.1.0-1) ... 168s Setting up librust-wasm-bindgen-shared-dev:ppc64el (0.2.87-1) ... 168s Setting up libarchive-zip-perl (1.68-1) ... 168s Setting up librust-colorchoice-dev:ppc64el (1.0.0-1) ... 168s Setting up librust-fastrand-dev:ppc64el (2.1.1-1) ... 168s Setting up librust-socket2-dev:ppc64el (0.5.7-1) ... 168s Setting up libdebhelper-perl (13.20ubuntu1) ... 168s Setting up librust-unsafe-any-dev:ppc64el (0.4.2-2) ... 168s Setting up librust-tinyvec-macros-dev:ppc64el (0.1.0-1) ... 168s Setting up librust-num-cpus-dev:ppc64el (1.16.0-1) ... 168s Setting up librust-libm-dev:ppc64el (0.2.8-1) ... 168s Setting up librust-strsim-dev:ppc64el (0.11.1-1) ... 168s Setting up libwebpdecoder3:ppc64el (1.4.0-0.1) ... 168s Setting up m4 (1.4.19-4build1) ... 168s Setting up librust-rustc-demangle-dev:ppc64el (0.1.21-1) ... 168s Setting up librust-cpufeatures-dev:ppc64el (0.2.11-1) ... 168s Setting up librust-const-cstr-dev:ppc64el (0.3.0-1) ... 168s Setting up librust-fallible-iterator-dev:ppc64el (0.3.0-2) ... 168s Setting up librust-ryu-dev:ppc64el (1.0.15-1) ... 168s Setting up python3-sortedcontainers (2.4.0-2) ... 169s Setting up librust-humantime-dev:ppc64el (2.1.0-1) ... 169s Setting up librust-anstyle-query-dev:ppc64el (1.0.0-1) ... 169s Setting up librust-cast-dev:ppc64el (0.3.0-1) ... 169s Setting up libgomp1:ppc64el (14.2.0-8ubuntu1) ... 169s Setting up librust-subtle-dev:ppc64el (2.6.1-1) ... 169s Setting up librust-simdutf8-dev:ppc64el (0.1.4-4) ... 169s Setting up librust-atomic-waker-dev:ppc64el (1.1.2-1) ... 169s Setting up librust-miniz-oxide-dev:ppc64el (0.7.1-1) ... 169s Setting up librust-pin-project-lite-dev:ppc64el (0.2.13-1) ... 169s Setting up python3-wheel (0.45.0-1) ... 169s Setting up librust-unicode-segmentation-dev:ppc64el (1.11.0-1) ... 169s Setting up librust-typemap-dev:ppc64el (0.3.3-2) ... 169s Setting up libpython3.13-minimal:ppc64el (3.13.0-2) ... 169s Setting up librust-compiler-builtins-dev:ppc64el (0.1.101-1) ... 169s Setting up librust-weezl-dev:ppc64el (0.1.5-1) ... 169s Setting up librust-utf8parse-dev:ppc64el (0.2.1-1) ... 169s Setting up librust-signal-hook-registry-dev:ppc64el (1.4.0-1) ... 169s Setting up librust-crossbeam-epoch-dev:ppc64el (0.9.18-1) ... 169s Setting up autotools-dev (20220109.1) ... 169s Setting up librust-tap-dev:ppc64el (1.0.1-1) ... 169s Setting up librust-errno-dev:ppc64el (0.3.8-1) ... 169s Setting up python3-packaging (24.2-1) ... 169s Setting up librust-array-init-dev:ppc64el (2.0.1-1) ... 169s Setting up libpkgconf3:ppc64el (1.8.1-4) ... 169s Setting up libpfm4:ppc64el (4.13.0+git83-g91970fe-1) ... 169s Setting up librust-oorandom-dev:ppc64el (11.1.3-1) ... 169s Setting up libexpat1-dev:ppc64el (2.6.4-1) ... 169s Setting up python3-pyproject-hooks (1.2.0-1) ... 169s Setting up librust-rustc-std-workspace-core-dev:ppc64el (1.0.0-1) ... 169s Setting up librust-funty-dev:ppc64el (2.0.0-1) ... 169s Setting up librust-futures-io-dev:ppc64el (0.3.31-1) ... 169s Setting up librust-typenum-dev:ppc64el (1.17.0-2) ... 169s Setting up uuid-dev:ppc64el (2.40.2-1ubuntu1) ... 169s Setting up librust-core-maths-dev:ppc64el (0.1.0-2) ... 169s Setting up librust-stable-deref-trait-dev:ppc64el (1.2.0-1) ... 169s Setting up librust-critical-section-dev:ppc64el (1.1.3-1) ... 169s Setting up libquadmath0:ppc64el (14.2.0-8ubuntu1) ... 169s Setting up librust-scopeguard-dev:ppc64el (1.2.0-1) ... 169s Setting up librust-iana-time-zone-dev:ppc64el (0.1.60-1) ... 169s Setting up fonts-dejavu-mono (2.37-8) ... 169s Setting up libmpc3:ppc64el (1.3.1-1build2) ... 169s Setting up librust-rand-core-dev:ppc64el (0.6.4-2) ... 169s Setting up python3-semantic-version (2.10.0-2) ... 169s Setting up librust-jobserver-dev:ppc64el (0.1.32-1) ... 169s Setting up autopoint (0.22.5-2) ... 169s Setting up libjsoncpp25:ppc64el (1.9.5-6build1) ... 169s Setting up fonts-dejavu-core (2.37-8) ... 169s Setting up librust-seahash-dev:ppc64el (4.1.0-1) ... 169s Setting up pkgconf-bin (1.8.1-4) ... 169s Setting up librust-ab-glyph-rasterizer-dev:ppc64el (0.1.7-1) ... 169s Setting up binutils-mingw-w64-i686 (2.43.1-4ubuntu1+12) ... 169s Setting up librust-time-core-dev:ppc64el (0.1.2-1) ... 169s Setting up python3-regex (0.1.20240724-1build1) ... 170s Setting up librust-crunchy-dev:ppc64el (0.2.2-1) ... 170s Setting up python3-toml (0.10.2-1) ... 170s Setting up librust-unicase-dev:ppc64el (2.7.0-1) ... 170s Setting up librust-unicode-width-dev:ppc64el (0.1.14-1) ... 170s Setting up python3-installer (0.7.0+dfsg1-3) ... 170s Setting up autoconf (2.72-3) ... 170s Setting up python3-pluggy (1.5.0-1) ... 170s Setting up libwebp7:ppc64el (1.4.0-0.1) ... 170s Setting up libubsan1:ppc64el (14.2.0-8ubuntu1) ... 170s Setting up zlib1g-dev:ppc64el (1:1.3.dfsg+really1.3.1-1ubuntu1) ... 170s Setting up librust-unicode-ident-dev:ppc64el (1.0.13-1) ... 170s Setting up librust-equivalent-dev:ppc64el (1.0.1-1) ... 170s Setting up dwz (0.15-1build6) ... 170s Setting up librust-bitflags-1-dev:ppc64el (1.3.2-5) ... 170s Setting up librust-uncased-dev:ppc64el (0.9.6-2) ... 170s Setting up librust-slog-dev:ppc64el (2.7.0-1) ... 170s Setting up python3-tiktoken (0.8.0-1build1) ... 171s Setting up librust-pure-rust-locales-dev:ppc64el (0.8.1-1) ... 171s Setting up librhash0:ppc64el (1.4.3-3build1) ... 171s Setting up libasan8:ppc64el (14.2.0-8ubuntu1) ... 171s Setting up librust-wait-timeout-dev:ppc64el (0.2.0-1) ... 171s Setting up librust-ttf-parser-dev:ppc64el (0.24.1-1) ... 171s Setting up librust-cfg-if-dev:ppc64el (1.0.0-1) ... 171s Setting up debugedit (1:5.1-1) ... 171s Setting up librust-color-quant-dev:ppc64el (1.1.0-1) ... 171s Setting up python3.13-minimal (3.13.0-2) ... 171s Setting up python3-dateutil (2.9.0-3) ... 172s Setting up librust-blobby-dev:ppc64el (0.3.1-1) ... 172s Setting up cmake-data (3.30.3-1) ... 172s Setting up llvm-19-linker-tools (1:19.1.2-1ubuntu1) ... 172s Setting up librust-byteorder-dev:ppc64el (1.5.0-1) ... 172s Setting up libtsan2:ppc64el (14.2.0-8ubuntu1) ... 172s Setting up librust-static-assertions-dev:ppc64el (1.1.0-1) ... 172s Setting up librust-compiler-builtins+core-dev:ppc64el (0.1.101-1) ... 172s Setting up librust-float-ord-dev:ppc64el (0.3.2-1) ... 172s Setting up librust-autocfg-dev:ppc64el (1.1.0-1) ... 172s Setting up libisl23:ppc64el (0.27-1) ... 172s Setting up librust-time-macros-dev:ppc64el (0.2.16-1) ... 172s Setting up llvm-19-runtime (1:19.1.2-1ubuntu1) ... 172s Setting up librust-futures-sink-dev:ppc64el (0.3.31-1) ... 172s Setting up python3-build (1.2.2-1) ... 172s Setting up libsharpyuv-dev:ppc64el (1.4.0-0.1) ... 172s Setting up librust-cfg-if-0.1-dev:ppc64el (0.1.10-2) ... 172s Setting up librust-tinyvec-dev:ppc64el (1.6.0-2) ... 172s Setting up libwebpmux3:ppc64el (1.4.0-0.1) ... 172s Setting up librust-plotters-backend-dev:ppc64el (0.3.7-1) ... 172s Setting up librust-shlex-dev:ppc64el (1.3.0-1) ... 172s Setting up libpython3.13-stdlib:ppc64el (3.13.0-2) ... 172s Setting up librust-indenter-dev:ppc64el (0.3.3-1) ... 172s Setting up librust-cpp-demangle-dev:ppc64el (0.4.0-1) ... 172s Setting up librust-winapi-x86-64-pc-windows-gnu-dev:ppc64el (0.4.0-1) ... 172s Setting up libcc1-0:ppc64el (14.2.0-8ubuntu1) ... 172s Setting up libbrotli-dev:ppc64el (1.1.0-2build3) ... 172s Setting up liblsan0:ppc64el (14.2.0-8ubuntu1) ... 172s Setting up libitm1:ppc64el (14.2.0-8ubuntu1) ... 172s Setting up librust-clap-lex-dev:ppc64el (0.7.2-2) ... 172s Setting up libhttp-parser2.9:ppc64el (2.9.4-6build1) ... 172s Setting up librust-unarray-dev:ppc64el (0.1.4-1) ... 172s Setting up libstd-rust-1.80:ppc64el (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 172s Setting up librust-itertools-dev:ppc64el (0.10.5-1) ... 172s Setting up librust-heck-dev:ppc64el (0.4.1-1) ... 172s Setting up libbz2-dev:ppc64el (1.0.8-6) ... 172s Setting up librust-num-conv-dev:ppc64el (0.1.0-1) ... 172s Setting up libpython3.13:ppc64el (3.13.0-2) ... 172s Setting up automake (1:1.16.5-1.3ubuntu1) ... 172s update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode 172s Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... 172s Setting up librust-owned-ttf-parser-dev:ppc64el (0.24.0-1) ... 172s Setting up librust-num-threads-dev:ppc64el (0.1.7-1) ... 172s Setting up librust-crossbeam-epoch+std-dev:ppc64el (0.9.18-1) ... 172s Setting up gettext (0.22.5-2) ... 172s Setting up librust-gif-dev:ppc64el (0.11.3-1) ... 172s Setting up librust-crossbeam-deque-dev:ppc64el (0.8.5-1) ... 172s Setting up librust-tiny-keccak-dev:ppc64el (2.0.2-1) ... 172s Setting up python3.13 (3.13.0-2) ... 173s Setting up librust-linux-raw-sys-dev:ppc64el (0.4.14-1) ... 173s Setting up pybuild-plugin-pyproject (6.20241024) ... 173s Setting up fontconfig-config (2.15.0-1.1ubuntu2) ... 173s Setting up librust-getrandom-dev:ppc64el (0.2.12-1) ... 173s Setting up python3-pytest (8.3.3-1) ... 174s Setting up librust-libloading-dev:ppc64el (0.8.5-1) ... 174s Setting up librust-memmap2-dev:ppc64el (0.9.3-1) ... 174s Setting up libwebpdemux2:ppc64el (1.4.0-0.1) ... 174s Setting up python3-hypothesis (6.119.3-1) ... 175s Setting up librust-ab-glyph-rasterizer+libm-dev:ppc64el (0.1.7-1) ... 175s Setting up libpng-dev:ppc64el (1.6.44-2) ... 175s Setting up librust-tinyvec+tinyvec-macros-dev:ppc64el (1.6.0-2) ... 175s Setting up librust-owning-ref-dev:ppc64el (0.4.1-1) ... 175s Setting up librust-memoffset-dev:ppc64el (0.8.0-1) ... 175s Setting up python3-all (3.12.7-1) ... 175s Setting up libpython3.12-dev:ppc64el (3.12.7-3) ... 175s Setting up librust-proc-macro2-dev:ppc64el (1.0.86-1) ... 175s Setting up librust-compiler-builtins+rustc-dep-of-std-dev:ppc64el (0.1.101-1) ... 175s Setting up librust-rayon-core-dev:ppc64el (1.12.1-1) ... 175s Setting up librust-winapi-dev:ppc64el (0.3.9-1) ... 175s Setting up pkgconf:ppc64el (1.8.1-4) ... 175s Setting up librust-ab-glyph-dev:ppc64el (0.2.28-1) ... 175s Setting up libstd-rust-1.80-dev:ppc64el (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 175s Setting up libfreetype-dev:ppc64el (2.13.3+dfsg-1) ... 175s Setting up intltool-debian (0.35.0+20060710.6) ... 175s Setting up librust-rand-core+getrandom-dev:ppc64el (0.6.4-2) ... 175s Setting up librust-rand-xorshift-dev:ppc64el (0.3.0-2) ... 175s Setting up libwebp-dev:ppc64el (1.4.0-0.1) ... 175s Setting up librust-anes-dev:ppc64el (0.1.6-1) ... 175s Setting up libpython3.13-dev:ppc64el (3.13.0-2) ... 175s Setting up llvm-runtime:ppc64el (1:19.0-60~exp1) ... 175s Setting up librust-cc-dev:ppc64el (1.1.14-1) ... 175s Setting up python3.12-dev (3.12.7-3) ... 175s Setting up pkg-config:ppc64el (1.8.1-4) ... 175s Setting up cpp-14-powerpc64le-linux-gnu (14.2.0-8ubuntu1) ... 175s Setting up cpp-14 (14.2.0-8ubuntu1) ... 175s Setting up dh-strip-nondeterminism (1.14.0-1) ... 175s Setting up librust-crc32fast-dev:ppc64el (1.4.2-1) ... 175s Setting up librust-num-traits-dev:ppc64el (0.2.19-2) ... 175s Setting up librust-winapi-util-dev:ppc64el (0.1.6-1) ... 175s Setting up cmake (3.30.3-1) ... 175s Setting up libgit2-1.7:ppc64el (1.7.2+ds-1ubuntu3) ... 175s Setting up llvm-19 (1:19.1.2-1ubuntu1) ... 175s Setting up libfontconfig1:ppc64el (2.15.0-1.1ubuntu2) ... 175s Setting up librust-sha1-asm-dev:ppc64el (0.5.1-2) ... 175s Setting up libgcc-14-dev:ppc64el (14.2.0-8ubuntu1) ... 175s Setting up librust-same-file-dev:ppc64el (1.0.6-1) ... 175s Setting up librust-rayon-dev:ppc64el (1.10.0-1) ... 175s Setting up librust-termcolor-dev:ppc64el (1.4.1-1) ... 175s Setting up librust-pkg-config-dev:ppc64el (0.3.27-1) ... 175s Setting up libstdc++-14-dev:ppc64el (14.2.0-8ubuntu1) ... 175s Setting up cpp-powerpc64le-linux-gnu (4:14.1.0-2ubuntu1) ... 175s Setting up gcc-14-powerpc64le-linux-gnu (14.2.0-8ubuntu1) ... 175s Setting up librust-jpeg-decoder-dev:ppc64el (0.3.0-1) ... 175s Setting up librust-dirs-sys-next-dev:ppc64el (0.1.1-1) ... 175s Setting up librust-cmake-dev:ppc64el (0.1.45-1) ... 175s Setting up librust-num-integer-dev:ppc64el (0.1.46-1) ... 175s Setting up librust-dirs-next-dev:ppc64el (2.0.0-1) ... 175s Setting up libpython3-dev:ppc64el (3.12.7-1) ... 175s Setting up librust-dlib-dev:ppc64el (0.5.2-2) ... 175s Setting up g++-14-powerpc64le-linux-gnu (14.2.0-8ubuntu1) ... 175s Setting up libfontconfig-dev:ppc64el (2.15.0-1.1ubuntu2) ... 175s Setting up librust-sha2-asm-dev:ppc64el (0.6.2-2) ... 175s Setting up librust-libwebp-sys-dev:ppc64el (0.9.5-1build1) ... 175s Setting up po-debconf (1.0.21+nmu1) ... 175s Setting up librust-quote-dev:ppc64el (1.0.37-1) ... 175s Setting up librust-freetype-sys-dev:ppc64el (0.13.1-1) ... 175s Setting up librust-libz-sys-dev:ppc64el (1.1.20-1) ... 175s Setting up librust-syn-dev:ppc64el (2.0.85-1) ... 175s Setting up librust-rand-core+std-dev:ppc64el (0.6.4-2) ... 175s Setting up librust-powerfmt-macros-dev:ppc64el (0.1.0-1) ... 175s Setting up gcc-14 (14.2.0-8ubuntu1) ... 175s Setting up librust-powerfmt-dev:ppc64el (0.2.0-1) ... 175s Setting up gcc-powerpc64le-linux-gnu (4:14.1.0-2ubuntu1) ... 175s Setting up librust-sval-derive-dev:ppc64el (2.6.1-2) ... 175s Setting up libpython3-all-dev:ppc64el (3.12.7-1) ... 175s Setting up librust-md5-asm-dev:ppc64el (0.5.0-2) ... 175s Setting up librust-freetype-dev:ppc64el (0.7.0-4) ... 175s Setting up librust-zeroize-derive-dev:ppc64el (1.4.2-1) ... 175s Setting up llvm (1:19.0-60~exp1) ... 175s Setting up librust-postgres-derive-dev:ppc64el (0.4.5-1) ... 175s Setting up librust-syn-1-dev:ppc64el (1.0.109-2) ... 175s Setting up librust-clap-derive-dev:ppc64el (4.5.13-2) ... 175s Setting up librust-bytecheck-derive-dev:ppc64el (0.6.12-1) ... 175s Setting up librust-no-panic-dev:ppc64el (0.1.13-1) ... 175s Setting up cpp (4:14.1.0-2ubuntu1) ... 175s Setting up librust-serde-derive-dev:ppc64el (1.0.210-1) ... 175s Setting up librust-walkdir-dev:ppc64el (2.5.0-1) ... 175s Setting up librust-zerocopy-derive-dev:ppc64el (0.7.32-2) ... 175s Setting up g++-14 (14.2.0-8ubuntu1) ... 175s Setting up librust-valuable-derive-dev:ppc64el (0.1.0-1) ... 175s Setting up librust-ghost-dev:ppc64el (0.1.5-1) ... 175s Setting up librust-serde-dev:ppc64el (1.0.210-2) ... 175s Setting up librust-bytemuck-derive-dev:ppc64el (1.5.0-2) ... 175s Setting up librust-derive-arbitrary-dev:ppc64el (1.3.2-1) ... 175s Setting up librust-allocator-api2-dev:ppc64el (0.2.16-1) ... 175s Setting up g++-powerpc64le-linux-gnu (4:14.1.0-2ubuntu1) ... 175s Setting up librust-async-attributes-dev (1.1.2-6) ... 175s Setting up librust-rand-chacha-dev:ppc64el (0.3.1-2) ... 175s Setting up librust-futures-macro-dev:ppc64el (0.3.30-1) ... 175s Setting up librust-ctor-dev:ppc64el (0.1.26-1) ... 175s Setting up librust-unicode-bidi-dev:ppc64el (0.3.13-1) ... 175s Setting up librust-tracing-attributes-dev:ppc64el (0.1.27-1) ... 175s Setting up librust-ptr-meta-derive-dev:ppc64el (0.1.4-1) ... 175s Setting up librust-serde-fmt-dev (1.0.3-3) ... 175s Setting up libtool (2.4.7-8) ... 175s Setting up librust-portable-atomic-dev:ppc64el (1.9.0-4) ... 175s Setting up librust-tokio-macros-dev:ppc64el (2.4.0-2) ... 175s Setting up librust-flate2-dev:ppc64el (1.0.34-1) ... 175s Setting up librust-lock-api-dev:ppc64el (0.4.12-1) ... 175s Setting up librust-ptr-meta-dev:ppc64el (0.1.4-1) ... 175s Setting up librust-inventory-dev:ppc64el (0.3.2-1) ... 175s Setting up librust-sval-dev:ppc64el (2.6.1-2) ... 175s Setting up librust-itoa-dev:ppc64el (1.0.9-1) ... 175s Setting up gcc (4:14.1.0-2ubuntu1) ... 175s Setting up librust-bytes-dev:ppc64el (1.8.0-1) ... 175s Setting up librust-bumpalo-dev:ppc64el (3.16.0-1) ... 175s Setting up librust-python3-dll-a-dev:ppc64el (0.2.10-1) ... 175s Setting up librust-siphasher-dev:ppc64el (0.3.10-1) ... 175s Setting up rustc-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 175s Setting up dh-autoreconf (20) ... 175s Setting up librust-rand-core+serde-dev:ppc64el (0.6.4-2) ... 175s Setting up librust-sval-ref-dev:ppc64el (2.6.1-1) ... 175s Setting up librust-rkyv-derive-dev:ppc64el (0.7.44-1) ... 175s Setting up librust-zerocopy-dev:ppc64el (0.7.32-1) ... 175s Setting up librust-semver-dev:ppc64el (1.0.23-1) ... 175s Setting up librust-bytemuck-dev:ppc64el (1.14.0-1) ... 175s Setting up librust-bit-vec-dev:ppc64el (0.6.3-1) ... 175s Setting up librust-zeroize-dev:ppc64el (1.8.1-1) ... 175s Setting up librust-slab-dev:ppc64el (0.4.9-1) ... 175s Setting up g++ (4:14.1.0-2ubuntu1) ... 175s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 175s Setting up rustc (1.80.1ubuntu2) ... 175s Setting up librust-arbitrary-dev:ppc64el (1.3.2-1) ... 175s Setting up librust-valuable-dev:ppc64el (0.1.0-4) ... 175s Setting up librust-target-lexicon-dev:ppc64el (0.12.14-1) ... 175s Setting up librust-serde-test-dev:ppc64el (1.0.171-1) ... 175s Setting up librust-bit-set-dev:ppc64el (0.5.2-1) ... 175s Setting up build-essential (12.10ubuntu1) ... 175s Setting up librust-concurrent-queue-dev:ppc64el (2.5.0-4) ... 175s Setting up cargo-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 175s Setting up librust-erased-serde-dev:ppc64el (0.3.31-1) ... 175s Setting up librust-radium-dev:ppc64el (1.1.0-1) ... 175s Setting up librust-bit-set+std-dev:ppc64el (0.5.2-1) ... 175s Setting up librust-phf-shared-dev:ppc64el (0.11.2-1) ... 175s Setting up librust-tiff-dev:ppc64el (0.9.0-1) ... 175s Setting up librust-smol-str-dev:ppc64el (0.2.0-1) ... 175s Setting up librust-atomic-dev:ppc64el (0.6.0-1) ... 175s Setting up librust-generic-array-dev:ppc64el (0.14.7-1) ... 175s Setting up librust-half-dev:ppc64el (1.8.2-4) ... 175s Setting up librust-phf-dev:ppc64el (0.11.2-1) ... 175s Setting up librust-spin-dev:ppc64el (0.9.8-4) ... 175s Setting up librust-sval-dynamic-dev:ppc64el (2.6.1-1) ... 175s Setting up librust-qoi-dev:ppc64el (0.4.1-2) ... 175s Setting up librust-async-task-dev (4.7.1-3) ... 175s Setting up librust-crypto-common-dev:ppc64el (0.1.6-1) ... 175s Setting up librust-ciborium-ll-dev:ppc64el (0.2.2-1) ... 175s Setting up librust-futures-core-dev:ppc64el (0.3.30-1) ... 175s Setting up librust-lazy-static-dev:ppc64el (1.5.0-1) ... 175s Setting up librust-sval-buffer-dev:ppc64el (2.6.1-1) ... 175s Setting up librust-arrayvec-dev:ppc64el (0.7.4-2) ... 175s Setting up librust-png-dev:ppc64el (0.17.7-3) ... 175s Setting up librust-rustc-version-dev:ppc64el (0.4.0-1) ... 175s Setting up librust-event-listener-dev (5.3.1-8) ... 175s Setting up debhelper (13.20ubuntu1) ... 175s Setting up librust-smallvec-dev:ppc64el (1.13.2-1) ... 175s Setting up librust-sval-fmt-dev:ppc64el (2.6.1-1) ... 175s Setting up librust-const-oid-dev:ppc64el (0.9.3-1) ... 175s Setting up librust-anstyle-parse-dev:ppc64el (0.2.1-1) ... 175s Setting up cargo (1.80.1ubuntu2) ... 175s Setting up librust-ciborium-dev:ppc64el (0.2.2-2) ... 175s Setting up librust-block-buffer-dev:ppc64el (0.10.2-2) ... 175s Setting up python3-setuptools-rust (1.9.0+dfsg-2) ... 175s Setting up librust-pathfinder-simd-dev:ppc64el (0.5.2-1) ... 175s Setting up librust-unicode-normalization-dev:ppc64el (0.1.22-1) ... 175s Setting up librust-anstream-dev:ppc64el (0.6.15-1) ... 175s Setting up librust-bitflags-dev:ppc64el (2.6.0-1) ... 175s Setting up librust-regex-syntax-dev:ppc64el (0.8.2-1) ... 175s Setting up librust-parking-lot-core-dev:ppc64el (0.9.10-1) ... 175s Setting up librust-futures-channel-dev:ppc64el (0.3.30-1) ... 175s Setting up librust-once-cell-dev:ppc64el (1.20.2-1) ... 175s Setting up librust-pyo3-build-config-dev:ppc64el (0.22.6-1) ... 175s Setting up librust-phf-shared+uncased-dev:ppc64el (0.11.2-1) ... 175s Setting up librust-digest-dev:ppc64el (0.10.7-2) ... 175s Setting up librust-md-5-dev:ppc64el (0.10.6-1) ... 175s Setting up librust-sval-serde-dev:ppc64el (2.6.1-1) ... 175s Setting up librust-parking-lot-dev:ppc64el (0.12.3-1) ... 175s Setting up librust-event-listener-strategy-dev:ppc64el (0.5.2-3) ... 175s Setting up librust-pyo3-macros-backend-dev:ppc64el (0.22.6-1) ... 175s Setting up librust-pyo3-ffi-dev:ppc64el (0.22.6-1build1) ... 175s Setting up pybuild-plugin-autopkgtest (6.20241024) ... 175s Setting up librust-const-random-macro-dev:ppc64el (0.1.16-2) ... 175s Setting up librust-const-random-dev:ppc64el (0.1.17-2) ... 175s Setting up librust-pyo3-macros-dev:ppc64el (0.22.6-1) ... 175s Setting up librust-sha1-dev:ppc64el (0.10.6-1) ... 175s Setting up librust-ahash-dev (0.8.11-8) ... 175s Setting up librust-async-channel-dev (2.3.1-8) ... 175s Setting up librust-stringprep-dev:ppc64el (0.1.2-1) ... 175s Setting up librust-tracing-core-dev:ppc64el (0.1.32-1) ... 175s Setting up librust-async-lock-dev (3.4.0-4) ... 175s Setting up librust-eyre-dev:ppc64el (0.6.12-1) ... 175s Setting up librust-yeslogic-fontconfig-sys-dev:ppc64el (3.0.1-1) ... 175s Setting up librust-sha2-dev:ppc64el (0.10.8-1) ... 175s Setting up librust-hmac-dev:ppc64el (0.12.1-1) ... 175s Setting up librust-rustix-dev:ppc64el (0.38.32-1) ... 175s Setting up librust-wyz-dev:ppc64el (0.5.1-1) ... 175s Setting up librust-bitvec-dev:ppc64el (1.0.1-1) ... 175s Setting up librust-phf+uncased-dev:ppc64el (0.11.2-1) ... 175s Setting up librust-value-bag-sval2-dev:ppc64el (1.9.0-1) ... 175s Setting up librust-tempfile-dev:ppc64el (3.10.1-1) ... 175s Setting up librust-eyre+default-dev:ppc64el (0.6.12-1) ... 175s Setting up librust-rusty-fork-dev:ppc64el (0.3.0-1) ... 175s Setting up librust-hashbrown-dev:ppc64el (0.14.5-5) ... 175s Setting up librust-rusty-fork+wait-timeout-dev:ppc64el (0.3.0-1) ... 175s Setting up librust-terminal-size-dev:ppc64el (0.3.0-2) ... 175s Setting up librust-indexmap-dev:ppc64el (2.2.6-1) ... 175s Setting up librust-gimli-dev:ppc64el (0.28.1-2) ... 175s Setting up librust-webp-dev:ppc64el (0.2.6-1) ... 175s Setting up librust-memchr-dev:ppc64el (2.7.4-1) ... 175s Setting up librust-futures-util-dev:ppc64el (0.3.30-2) ... 175s Setting up librust-csv-core-dev:ppc64el (0.1.11-1) ... 175s Setting up librust-futures-lite-dev:ppc64el (2.3.0-2) ... 175s Setting up librust-csv-dev:ppc64el (1.3.0-1) ... 175s Setting up librust-serde-json-dev:ppc64el (1.0.128-1) ... 175s Setting up librust-async-executor-dev (1.13.1-1) ... 175s Setting up librust-futures-executor-dev:ppc64el (0.3.30-1) ... 175s Setting up librust-value-bag-serde1-dev:ppc64el (1.9.0-1) ... 175s Setting up librust-tinytemplate-dev:ppc64el (1.2.1-1) ... 175s Setting up librust-futures-dev:ppc64el (0.3.30-2) ... 175s Setting up librust-value-bag-dev:ppc64el (1.9.0-1) ... 175s Setting up librust-log-dev:ppc64el (0.4.22-1) ... 175s Setting up librust-kv-log-macro-dev (1.0.8-4) ... 175s Setting up librust-pathfinder-geometry-dev:ppc64el (0.5.1-1) ... 175s Setting up librust-tracing-dev:ppc64el (0.1.40-1) ... 175s Setting up librust-polling-dev:ppc64el (3.4.0-1) ... 175s Setting up librust-aho-corasick-dev:ppc64el (1.1.3-1) ... 175s Setting up librust-font-kit-dev:ppc64el (0.11.0-2) ... 175s Setting up librust-async-io-dev:ppc64el (2.3.3-4) ... 175s Setting up librust-blocking-dev (1.6.1-5) ... 175s Setting up librust-async-net-dev (2.0.0-4) ... 175s Setting up librust-rand-dev:ppc64el (0.8.5-1) ... 175s Setting up librust-mio-dev:ppc64el (1.0.2-2) ... 175s Setting up librust-wasm-bindgen-backend-dev:ppc64el (0.2.87-1) ... 175s Setting up librust-twox-hash-dev:ppc64el (1.6.3-1) ... 175s Setting up librust-proptest-dev:ppc64el (1.5.0-2) ... 175s Setting up librust-wasm-bindgen-macro-support-dev:ppc64el (0.2.87-1) ... 175s Setting up librust-regex-automata-dev:ppc64el (0.4.7-1) ... 175s Setting up librust-wasm-bindgen-macro-support+spans-dev:ppc64el (0.2.87-1) ... 175s Setting up librust-wasm-bindgen-macro-dev:ppc64el (0.2.87-1) ... 175s Setting up librust-uuid-dev:ppc64el (1.10.0-1) ... 175s Setting up librust-bstr-dev:ppc64el (1.7.0-2build1) ... 175s Setting up librust-async-signal-dev:ppc64el (0.2.10-1) ... 175s Setting up librust-bytecheck-dev:ppc64el (0.6.12-1) ... 175s Setting up librust-postgres-protocol-dev:ppc64el (0.6.6-2) ... 175s Setting up librust-async-fs-dev (2.1.2-4) ... 175s Setting up librust-wasm-bindgen-dev:ppc64el (0.2.87-1) ... 175s Setting up librust-convert-case-dev:ppc64el (0.6.0-2) ... 175s Setting up librust-regex-dev:ppc64el (1.10.6-1) ... 175s Setting up librust-fancy-regex-dev:ppc64el (0.11.0-2) ... 175s Setting up librust-async-process-dev (2.3.0-1) ... 175s Setting up librust-wasm-bindgen-macro+spans-dev:ppc64el (0.2.87-1) ... 175s Setting up librust-rend-dev:ppc64el (0.4.0-1) ... 175s Setting up librust-derive-more-0.99-dev:ppc64el (0.99.18-1) ... 175s Setting up librust-env-logger-dev:ppc64el (0.10.2-2) ... 175s Setting up librust-wasm-bindgen+spans-dev:ppc64el (0.2.87-1) ... 175s Setting up librust-wasm-bindgen+default-dev:ppc64el (0.2.87-1) ... 175s Setting up librust-rkyv-dev:ppc64el (0.7.44-1) ... 175s Setting up librust-eui48-dev:ppc64el (1.1.0-2) ... 175s Setting up librust-parse-zoneinfo-dev:ppc64el (0.3.0-1) ... 175s Setting up librust-smol-dev (2.0.2-1) ... 175s Setting up librust-js-sys-dev:ppc64el (0.3.64-1) ... 175s Setting up librust-num-complex-dev:ppc64el (0.4.6-2) ... 175s Setting up librust-approx-dev:ppc64el (0.5.1-1) ... 175s Setting up librust-ruzstd-dev:ppc64el (0.5.0-1) ... 175s Setting up librust-web-sys-dev:ppc64el (0.3.64-2) ... 175s Setting up librust-quickcheck-dev:ppc64el (1.0.3-3) ... 175s Setting up librust-geo-types-dev:ppc64el (0.7.11-2) ... 175s Setting up librust-deranged-dev:ppc64el (0.3.11-1) ... 175s Setting up librust-num-bigint-dev:ppc64el (0.4.6-1) ... 175s Setting up librust-num-rational-dev:ppc64el (0.4.2-1) ... 175s Setting up librust-chrono-dev:ppc64el (0.4.38-2) ... 175s Setting up librust-object-dev:ppc64el (0.32.2-1) ... 175s Setting up librust-image-dev:ppc64el (0.24.7-2) ... 175s Setting up librust-time-dev:ppc64el (0.3.36-2) ... 175s Setting up librust-plotters-bitmap-dev:ppc64el (0.3.3-3) ... 175s Setting up librust-postgres-types-dev:ppc64el (0.2.6-2) ... 175s Setting up librust-addr2line-dev:ppc64el (0.21.0-2) ... 175s Setting up librust-plotters-svg-dev:ppc64el (0.3.5-1) ... 175s Setting up librust-rust-decimal-dev:ppc64el (1.36.0-1) ... 175s Setting up librust-plotters-dev:ppc64el (0.3.5-4) ... 175s Setting up librust-backtrace-dev:ppc64el (0.3.69-2) ... 175s Setting up librust-tokio-dev:ppc64el (1.39.3-3) ... 175s Setting up librust-async-global-executor-dev:ppc64el (2.4.1-5) ... 175s Setting up librust-clap-builder-dev:ppc64el (4.5.15-2) ... 175s Setting up librust-clap-dev:ppc64el (4.5.16-1) ... 175s Setting up librust-async-std-dev (1.13.0-1) ... 175s Setting up librust-anyhow-dev:ppc64el (1.0.86-1) ... 175s Setting up librust-criterion-dev (0.5.1-6) ... 175s Setting up librust-phf-generator-dev:ppc64el (0.11.2-2) ... 175s Setting up librust-phf-codegen-dev:ppc64el (0.11.2-1) ... 175s Setting up librust-chrono-tz-build-dev:ppc64el (0.2.1-1) ... 175s Setting up librust-chrono-tz-dev:ppc64el (0.8.6-2) ... 175s Setting up librust-pyo3-dev:ppc64el (0.22.6-1) ... 175s Setting up autopkgtest-satdep (0) ... 175s Processing triggers for libc-bin (2.40-1ubuntu3) ... 175s Processing triggers for systemd (256.5-2ubuntu4) ... 175s Processing triggers for man-db (2.13.0-1) ... 177s Processing triggers for install-info (7.1.1-1) ... 188s (Reading database ... 100557 files and directories currently installed.) 188s Removing autopkgtest-satdep (0) ... 188s autopkgtest [22:20:19]: test pybuild-autopkgtest: pybuild-autopkgtest 188s autopkgtest [22:20:19]: test pybuild-autopkgtest: [----------------------- 189s pybuild-autopkgtest 189s I: pybuild base:311: cd /tmp/autopkgtest.GmeWzd/autopkgtest_tmp/build; python3.13 -m pytest tests 190s ============================= test session starts ============================== 190s platform linux -- Python 3.13.0, pytest-8.3.3, pluggy-1.5.0 190s rootdir: /tmp/autopkgtest.GmeWzd/autopkgtest_tmp/build 190s configfile: pyproject.toml 190s plugins: hypothesis-6.119.3, typeguard-4.4.1 190s collected 30 items 190s 767s tests/test_encoding.py FFFFFFFFFFFFFFFFFFFFFF [ 73%] 768s tests/test_misc.py F. [ 80%] 771s tests/test_offsets.py FF [ 86%] 772s tests/test_pickle.py F [ 90%] 774s tests/test_simple_public.py FF. [100%] 774s 774s =================================== FAILURES =================================== 774s _________________________________ test_simple __________________________________ 774s 774s self = 774s 774s def _new_conn(self) -> socket.socket: 774s """Establish a socket connection and set nodelay settings on it. 774s 774s :return: New socket connection. 774s """ 774s try: 774s > sock = connection.create_connection( 774s (self._dns_host, self.port), 774s self.timeout, 774s source_address=self.source_address, 774s socket_options=self.socket_options, 774s ) 774s 774s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 774s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 774s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 774s raise err 774s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 774s 774s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 774s source_address = None, socket_options = [(6, 1, 1)] 774s 774s def create_connection( 774s address: tuple[str, int], 774s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 774s source_address: tuple[str, int] | None = None, 774s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 774s ) -> socket.socket: 774s """Connect to *address* and return the socket object. 774s 774s Convenience function. Connect to *address* (a 2-tuple ``(host, 774s port)``) and return the socket object. Passing the optional 774s *timeout* parameter will set the timeout on the socket instance 774s before attempting to connect. If no *timeout* is supplied, the 774s global default timeout setting returned by :func:`socket.getdefaulttimeout` 774s is used. If *source_address* is set it must be a tuple of (host, port) 774s for the socket to bind as a source address before making the connection. 774s An host of '' or port 0 tells the OS to use the default. 774s """ 774s 774s host, port = address 774s if host.startswith("["): 774s host = host.strip("[]") 774s err = None 774s 774s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 774s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 774s # The original create_connection function always returns all records. 774s family = allowed_gai_family() 774s 774s try: 774s host.encode("idna") 774s except UnicodeError: 774s raise LocationParseError(f"'{host}', label empty or too long") from None 774s 774s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 774s af, socktype, proto, canonname, sa = res 774s sock = None 774s try: 774s sock = socket.socket(af, socktype, proto) 774s 774s # If provided, set socket level options before connecting. 774s _set_socket_options(sock, socket_options) 774s 774s if timeout is not _DEFAULT_TIMEOUT: 774s sock.settimeout(timeout) 774s if source_address: 774s sock.bind(source_address) 774s > sock.connect(sa) 774s E ConnectionRefusedError: [Errno 111] Connection refused 774s 774s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 774s 774s The above exception was the direct cause of the following exception: 774s 774s self = 774s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 774s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 774s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 774s redirect = False, assert_same_host = False 774s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 774s release_conn = False, chunked = False, body_pos = None, preload_content = False 774s decode_content = False, response_kw = {} 774s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 774s destination_scheme = None, conn = None, release_this_conn = True 774s http_tunnel_required = False, err = None, clean_exit = False 774s 774s def urlopen( # type: ignore[override] 774s self, 774s method: str, 774s url: str, 774s body: _TYPE_BODY | None = None, 774s headers: typing.Mapping[str, str] | None = None, 774s retries: Retry | bool | int | None = None, 774s redirect: bool = True, 774s assert_same_host: bool = True, 774s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 774s pool_timeout: int | None = None, 774s release_conn: bool | None = None, 774s chunked: bool = False, 774s body_pos: _TYPE_BODY_POSITION | None = None, 774s preload_content: bool = True, 774s decode_content: bool = True, 774s **response_kw: typing.Any, 774s ) -> BaseHTTPResponse: 774s """ 774s Get a connection from the pool and perform an HTTP request. This is the 774s lowest level call for making a request, so you'll need to specify all 774s the raw details. 774s 774s .. note:: 774s 774s More commonly, it's appropriate to use a convenience method 774s such as :meth:`request`. 774s 774s .. note:: 774s 774s `release_conn` will only behave as expected if 774s `preload_content=False` because we want to make 774s `preload_content=False` the default behaviour someday soon without 774s breaking backwards compatibility. 774s 774s :param method: 774s HTTP request method (such as GET, POST, PUT, etc.) 774s 774s :param url: 774s The URL to perform the request on. 774s 774s :param body: 774s Data to send in the request body, either :class:`str`, :class:`bytes`, 774s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 774s 774s :param headers: 774s Dictionary of custom headers to send, such as User-Agent, 774s If-None-Match, etc. If None, pool headers are used. If provided, 774s these headers completely replace any pool-specific headers. 774s 774s :param retries: 774s Configure the number of retries to allow before raising a 774s :class:`~urllib3.exceptions.MaxRetryError` exception. 774s 774s Pass ``None`` to retry until you receive a response. Pass a 774s :class:`~urllib3.util.retry.Retry` object for fine-grained control 774s over different types of retries. 774s Pass an integer number to retry connection errors that many times, 774s but no other types of errors. Pass zero to never retry. 774s 774s If ``False``, then retries are disabled and any exception is raised 774s immediately. Also, instead of raising a MaxRetryError on redirects, 774s the redirect response will be returned. 774s 774s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 774s 774s :param redirect: 774s If True, automatically handle redirects (status codes 301, 302, 774s 303, 307, 308). Each redirect counts as a retry. Disabling retries 774s will disable redirect, too. 774s 774s :param assert_same_host: 774s If ``True``, will make sure that the host of the pool requests is 774s consistent else will raise HostChangedError. When ``False``, you can 774s use the pool on an HTTP proxy and request foreign hosts. 774s 774s :param timeout: 774s If specified, overrides the default timeout for this one 774s request. It may be a float (in seconds) or an instance of 774s :class:`urllib3.util.Timeout`. 774s 774s :param pool_timeout: 774s If set and the pool is set to block=True, then this method will 774s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 774s connection is available within the time period. 774s 774s :param bool preload_content: 774s If True, the response's body will be preloaded into memory. 774s 774s :param bool decode_content: 774s If True, will attempt to decode the body based on the 774s 'content-encoding' header. 774s 774s :param release_conn: 774s If False, then the urlopen call will not release the connection 774s back into the pool once a response is received (but will release if 774s you read the entire contents of the response such as when 774s `preload_content=True`). This is useful if you're not preloading 774s the response's content immediately. You will need to call 774s ``r.release_conn()`` on the response ``r`` to return the connection 774s back into the pool. If None, it takes the value of ``preload_content`` 774s which defaults to ``True``. 774s 774s :param bool chunked: 774s If True, urllib3 will send the body using chunked transfer 774s encoding. Otherwise, urllib3 will send the body using the standard 774s content-length form. Defaults to False. 774s 774s :param int body_pos: 774s Position to seek to in file-like body in the event of a retry or 774s redirect. Typically this won't need to be set because urllib3 will 774s auto-populate the value when needed. 774s """ 774s parsed_url = parse_url(url) 774s destination_scheme = parsed_url.scheme 774s 774s if headers is None: 774s headers = self.headers 774s 774s if not isinstance(retries, Retry): 774s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 774s 774s if release_conn is None: 774s release_conn = preload_content 774s 774s # Check host 774s if assert_same_host and not self.is_same_host(url): 774s raise HostChangedError(self, url, retries) 774s 774s # Ensure that the URL we're connecting to is properly encoded 774s if url.startswith("/"): 774s url = to_str(_encode_target(url)) 774s else: 774s url = to_str(parsed_url.url) 774s 774s conn = None 774s 774s # Track whether `conn` needs to be released before 774s # returning/raising/recursing. Update this variable if necessary, and 774s # leave `release_conn` constant throughout the function. That way, if 774s # the function recurses, the original value of `release_conn` will be 774s # passed down into the recursive call, and its value will be respected. 774s # 774s # See issue #651 [1] for details. 774s # 774s # [1] 774s release_this_conn = release_conn 774s 774s http_tunnel_required = connection_requires_http_tunnel( 774s self.proxy, self.proxy_config, destination_scheme 774s ) 774s 774s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 774s # have to copy the headers dict so we can safely change it without those 774s # changes being reflected in anyone else's copy. 774s if not http_tunnel_required: 774s headers = headers.copy() # type: ignore[attr-defined] 774s headers.update(self.proxy_headers) # type: ignore[union-attr] 774s 774s # Must keep the exception bound to a separate variable or else Python 3 774s # complains about UnboundLocalError. 774s err = None 774s 774s # Keep track of whether we cleanly exited the except block. This 774s # ensures we do proper cleanup in finally. 774s clean_exit = False 774s 774s # Rewind body position, if needed. Record current position 774s # for future rewinds in the event of a redirect/retry. 774s body_pos = set_file_position(body, body_pos) 774s 774s try: 774s # Request a connection from the queue. 774s timeout_obj = self._get_timeout(timeout) 774s conn = self._get_conn(timeout=pool_timeout) 774s 774s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 774s 774s # Is this a closed/new connection that requires CONNECT tunnelling? 774s if self.proxy is not None and http_tunnel_required and conn.is_closed: 774s try: 774s self._prepare_proxy(conn) 774s except (BaseSSLError, OSError, SocketTimeout) as e: 774s self._raise_timeout( 774s err=e, url=self.proxy.url, timeout_value=conn.timeout 774s ) 774s raise 774s 774s # If we're going to release the connection in ``finally:``, then 774s # the response doesn't need to know about the connection. Otherwise 774s # it will also try to release it and we'll have a double-release 774s # mess. 774s response_conn = conn if not release_conn else None 774s 774s # Make the request on the HTTPConnection object 774s > response = self._make_request( 774s conn, 774s method, 774s url, 774s timeout=timeout_obj, 774s body=body, 774s headers=headers, 774s chunked=chunked, 774s retries=retries, 774s response_conn=response_conn, 774s preload_content=preload_content, 774s decode_content=decode_content, 774s **response_kw, 774s ) 774s 774s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 774s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 774s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 774s raise new_e 774s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 774s self._validate_conn(conn) 774s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 774s conn.connect() 774s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 774s self.sock = sock = self._new_conn() 774s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 774s 774s self = 774s 774s def _new_conn(self) -> socket.socket: 774s """Establish a socket connection and set nodelay settings on it. 774s 774s :return: New socket connection. 774s """ 774s try: 774s sock = connection.create_connection( 774s (self._dns_host, self.port), 774s self.timeout, 774s source_address=self.source_address, 774s socket_options=self.socket_options, 774s ) 774s except socket.gaierror as e: 774s raise NameResolutionError(self.host, self, e) from e 774s except SocketTimeout as e: 774s raise ConnectTimeoutError( 774s self, 774s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 774s ) from e 774s 774s except OSError as e: 774s > raise NewConnectionError( 774s self, f"Failed to establish a new connection: {e}" 774s ) from e 774s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 774s 774s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 774s 774s The above exception was the direct cause of the following exception: 774s 774s self = 774s request = , stream = False 774s timeout = Timeout(connect=None, read=None, total=None), verify = True 774s cert = None, proxies = OrderedDict() 774s 774s def send( 774s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 774s ): 774s """Sends PreparedRequest object. Returns Response object. 774s 774s :param request: The :class:`PreparedRequest ` being sent. 774s :param stream: (optional) Whether to stream the request content. 774s :param timeout: (optional) How long to wait for the server to send 774s data before giving up, as a float, or a :ref:`(connect timeout, 774s read timeout) ` tuple. 774s :type timeout: float or tuple or urllib3 Timeout object 774s :param verify: (optional) Either a boolean, in which case it controls whether 774s we verify the server's TLS certificate, or a string, in which case it 774s must be a path to a CA bundle to use 774s :param cert: (optional) Any user-provided SSL certificate to be trusted. 774s :param proxies: (optional) The proxies dictionary to apply to the request. 774s :rtype: requests.Response 774s """ 774s 774s try: 774s conn = self.get_connection_with_tls_context( 774s request, verify, proxies=proxies, cert=cert 774s ) 774s except LocationValueError as e: 774s raise InvalidURL(e, request=request) 774s 774s self.cert_verify(conn, request.url, verify, cert) 774s url = self.request_url(request, proxies) 774s self.add_headers( 774s request, 774s stream=stream, 774s timeout=timeout, 774s verify=verify, 774s cert=cert, 774s proxies=proxies, 774s ) 774s 774s chunked = not (request.body is None or "Content-Length" in request.headers) 774s 774s if isinstance(timeout, tuple): 774s try: 774s connect, read = timeout 774s timeout = TimeoutSauce(connect=connect, read=read) 774s except ValueError: 774s raise ValueError( 774s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 774s f"or a single float to set both timeouts to the same value." 774s ) 774s elif isinstance(timeout, TimeoutSauce): 774s pass 774s else: 774s timeout = TimeoutSauce(connect=timeout, read=timeout) 774s 774s try: 774s > resp = conn.urlopen( 774s method=request.method, 774s url=url, 774s body=request.body, 774s headers=request.headers, 774s redirect=False, 774s assert_same_host=False, 774s preload_content=False, 774s decode_content=False, 774s retries=self.max_retries, 774s timeout=timeout, 774s chunked=chunked, 774s ) 774s 774s /usr/lib/python3/dist-packages/requests/adapters.py:667: 774s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 774s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 774s retries = retries.increment( 774s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 774s 774s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 774s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 774s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 774s _pool = 774s _stacktrace = 774s 774s def increment( 774s self, 774s method: str | None = None, 774s url: str | None = None, 774s response: BaseHTTPResponse | None = None, 774s error: Exception | None = None, 774s _pool: ConnectionPool | None = None, 774s _stacktrace: TracebackType | None = None, 774s ) -> Retry: 774s """Return a new Retry object with incremented retry counters. 774s 774s :param response: A response object, or None, if the server did not 774s return a response. 774s :type response: :class:`~urllib3.response.BaseHTTPResponse` 774s :param Exception error: An error encountered during the request, or 774s None if the response was received successfully. 774s 774s :return: A new ``Retry`` object. 774s """ 774s if self.total is False and error: 774s # Disabled, indicate to re-raise the error. 774s raise reraise(type(error), error, _stacktrace) 774s 774s total = self.total 774s if total is not None: 774s total -= 1 774s 774s connect = self.connect 774s read = self.read 774s redirect = self.redirect 774s status_count = self.status 774s other = self.other 774s cause = "unknown" 774s status = None 774s redirect_location = None 774s 774s if error and self._is_connection_error(error): 774s # Connect retry? 774s if connect is False: 774s raise reraise(type(error), error, _stacktrace) 774s elif connect is not None: 774s connect -= 1 774s 774s elif error and self._is_read_error(error): 774s # Read retry? 774s if read is False or method is None or not self._is_method_retryable(method): 774s raise reraise(type(error), error, _stacktrace) 774s elif read is not None: 774s read -= 1 774s 774s elif error: 774s # Other retry? 774s if other is not None: 774s other -= 1 774s 774s elif response and response.get_redirect_location(): 774s # Redirect retry? 774s if redirect is not None: 774s redirect -= 1 774s cause = "too many redirects" 774s response_redirect_location = response.get_redirect_location() 774s if response_redirect_location: 774s redirect_location = response_redirect_location 774s status = response.status 774s 774s else: 774s # Incrementing because of a server error like a 500 in 774s # status_forcelist and the given method is in the allowed_methods 774s cause = ResponseError.GENERIC_ERROR 774s if response and response.status: 774s if status_count is not None: 774s status_count -= 1 774s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 774s status = response.status 774s 774s history = self.history + ( 774s RequestHistory(method, url, error, status, redirect_location), 774s ) 774s 774s new_retry = self.new( 774s total=total, 774s connect=connect, 774s read=read, 774s redirect=redirect, 774s status=status_count, 774s other=other, 774s history=history, 774s ) 774s 774s if new_retry.is_exhausted(): 774s reason = error or ResponseError(cause) 774s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 774s 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')) 774s 774s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 774s 774s During handling of the above exception, another exception occurred: 774s 774s def test_simple(): 774s > enc = tiktoken.get_encoding("gpt2") 774s 774s tests/test_encoding.py:15: 774s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 774s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 774s enc = Encoding(**constructor()) 774s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 774s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 774s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 774s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 774s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 774s contents = read_file(blobpath) 774s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 774s resp = requests.get(blobpath) 774s /usr/lib/python3/dist-packages/requests/api.py:73: in get 774s return request("get", url, params=params, **kwargs) 774s /usr/lib/python3/dist-packages/requests/api.py:59: in request 774s return session.request(method=method, url=url, **kwargs) 774s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 774s resp = self.send(prep, **send_kwargs) 774s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 774s r = adapter.send(request, **kwargs) 774s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 774s 774s self = 774s request = , stream = False 774s timeout = Timeout(connect=None, read=None, total=None), verify = True 774s cert = None, proxies = OrderedDict() 774s 774s def send( 774s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 774s ): 774s """Sends PreparedRequest object. Returns Response object. 774s 774s :param request: The :class:`PreparedRequest ` being sent. 774s :param stream: (optional) Whether to stream the request content. 774s :param timeout: (optional) How long to wait for the server to send 774s data before giving up, as a float, or a :ref:`(connect timeout, 774s read timeout) ` tuple. 774s :type timeout: float or tuple or urllib3 Timeout object 774s :param verify: (optional) Either a boolean, in which case it controls whether 774s we verify the server's TLS certificate, or a string, in which case it 774s must be a path to a CA bundle to use 774s :param cert: (optional) Any user-provided SSL certificate to be trusted. 774s :param proxies: (optional) The proxies dictionary to apply to the request. 774s :rtype: requests.Response 774s """ 774s 774s try: 774s conn = self.get_connection_with_tls_context( 774s request, verify, proxies=proxies, cert=cert 774s ) 774s except LocationValueError as e: 774s raise InvalidURL(e, request=request) 774s 774s self.cert_verify(conn, request.url, verify, cert) 774s url = self.request_url(request, proxies) 774s self.add_headers( 774s request, 774s stream=stream, 774s timeout=timeout, 774s verify=verify, 774s cert=cert, 774s proxies=proxies, 774s ) 774s 774s chunked = not (request.body is None or "Content-Length" in request.headers) 774s 774s if isinstance(timeout, tuple): 774s try: 774s connect, read = timeout 774s timeout = TimeoutSauce(connect=connect, read=read) 774s except ValueError: 774s raise ValueError( 774s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 774s f"or a single float to set both timeouts to the same value." 774s ) 774s elif isinstance(timeout, TimeoutSauce): 774s pass 774s else: 774s timeout = TimeoutSauce(connect=timeout, read=timeout) 774s 774s try: 774s resp = conn.urlopen( 774s method=request.method, 774s url=url, 774s body=request.body, 774s headers=request.headers, 774s redirect=False, 774s assert_same_host=False, 774s preload_content=False, 774s decode_content=False, 774s retries=self.max_retries, 774s timeout=timeout, 774s chunked=chunked, 774s ) 774s 774s except (ProtocolError, OSError) as err: 774s raise ConnectionError(err, request=request) 774s 774s except MaxRetryError as e: 774s if isinstance(e.reason, ConnectTimeoutError): 774s # TODO: Remove this in 3.0.0: see #2811 774s if not isinstance(e.reason, NewConnectionError): 774s raise ConnectTimeout(e, request=request) 774s 774s if isinstance(e.reason, ResponseError): 774s raise RetryError(e, request=request) 774s 774s if isinstance(e.reason, _ProxyError): 774s raise ProxyError(e, request=request) 774s 774s if isinstance(e.reason, _SSLError): 774s # This branch is for urllib3 v1.22 and later. 774s raise SSLError(e, request=request) 774s 774s > raise ConnectionError(e, request=request) 774s 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')) 774s 774s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 774s _____________________________ test_simple_repeated _____________________________ 774s 774s self = 774s 774s def _new_conn(self) -> socket.socket: 774s """Establish a socket connection and set nodelay settings on it. 774s 774s :return: New socket connection. 774s """ 774s try: 774s > sock = connection.create_connection( 774s (self._dns_host, self.port), 774s self.timeout, 774s source_address=self.source_address, 774s socket_options=self.socket_options, 774s ) 774s 774s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 774s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 774s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 774s raise err 774s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 774s 774s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 774s source_address = None, socket_options = [(6, 1, 1)] 774s 774s def create_connection( 774s address: tuple[str, int], 774s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 774s source_address: tuple[str, int] | None = None, 774s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 774s ) -> socket.socket: 774s """Connect to *address* and return the socket object. 774s 774s Convenience function. Connect to *address* (a 2-tuple ``(host, 774s port)``) and return the socket object. Passing the optional 774s *timeout* parameter will set the timeout on the socket instance 774s before attempting to connect. If no *timeout* is supplied, the 774s global default timeout setting returned by :func:`socket.getdefaulttimeout` 774s is used. If *source_address* is set it must be a tuple of (host, port) 774s for the socket to bind as a source address before making the connection. 774s An host of '' or port 0 tells the OS to use the default. 774s """ 774s 774s host, port = address 774s if host.startswith("["): 774s host = host.strip("[]") 774s err = None 774s 774s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 774s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 774s # The original create_connection function always returns all records. 774s family = allowed_gai_family() 774s 774s try: 774s host.encode("idna") 774s except UnicodeError: 774s raise LocationParseError(f"'{host}', label empty or too long") from None 774s 774s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 774s af, socktype, proto, canonname, sa = res 774s sock = None 774s try: 774s sock = socket.socket(af, socktype, proto) 774s 774s # If provided, set socket level options before connecting. 774s _set_socket_options(sock, socket_options) 774s 774s if timeout is not _DEFAULT_TIMEOUT: 774s sock.settimeout(timeout) 774s if source_address: 774s sock.bind(source_address) 774s > sock.connect(sa) 774s E ConnectionRefusedError: [Errno 111] Connection refused 774s 774s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 774s 774s The above exception was the direct cause of the following exception: 774s 774s self = 774s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 774s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 774s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 774s redirect = False, assert_same_host = False 774s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 774s release_conn = False, chunked = False, body_pos = None, preload_content = False 774s decode_content = False, response_kw = {} 774s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 774s destination_scheme = None, conn = None, release_this_conn = True 774s http_tunnel_required = False, err = None, clean_exit = False 774s 774s def urlopen( # type: ignore[override] 774s self, 774s method: str, 774s url: str, 774s body: _TYPE_BODY | None = None, 774s headers: typing.Mapping[str, str] | None = None, 774s retries: Retry | bool | int | None = None, 774s redirect: bool = True, 774s assert_same_host: bool = True, 774s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 774s pool_timeout: int | None = None, 774s release_conn: bool | None = None, 774s chunked: bool = False, 774s body_pos: _TYPE_BODY_POSITION | None = None, 774s preload_content: bool = True, 774s decode_content: bool = True, 774s **response_kw: typing.Any, 774s ) -> BaseHTTPResponse: 774s """ 774s Get a connection from the pool and perform an HTTP request. This is the 774s lowest level call for making a request, so you'll need to specify all 774s the raw details. 774s 774s .. note:: 774s 774s More commonly, it's appropriate to use a convenience method 774s such as :meth:`request`. 774s 774s .. note:: 774s 774s `release_conn` will only behave as expected if 774s `preload_content=False` because we want to make 774s `preload_content=False` the default behaviour someday soon without 774s breaking backwards compatibility. 774s 774s :param method: 774s HTTP request method (such as GET, POST, PUT, etc.) 774s 774s :param url: 774s The URL to perform the request on. 774s 774s :param body: 774s Data to send in the request body, either :class:`str`, :class:`bytes`, 774s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 774s 774s :param headers: 774s Dictionary of custom headers to send, such as User-Agent, 774s If-None-Match, etc. If None, pool headers are used. If provided, 774s these headers completely replace any pool-specific headers. 774s 774s :param retries: 774s Configure the number of retries to allow before raising a 774s :class:`~urllib3.exceptions.MaxRetryError` exception. 774s 774s Pass ``None`` to retry until you receive a response. Pass a 774s :class:`~urllib3.util.retry.Retry` object for fine-grained control 774s over different types of retries. 774s Pass an integer number to retry connection errors that many times, 774s but no other types of errors. Pass zero to never retry. 774s 774s If ``False``, then retries are disabled and any exception is raised 774s immediately. Also, instead of raising a MaxRetryError on redirects, 774s the redirect response will be returned. 774s 774s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 774s 774s :param redirect: 774s If True, automatically handle redirects (status codes 301, 302, 774s 303, 307, 308). Each redirect counts as a retry. Disabling retries 774s will disable redirect, too. 774s 774s :param assert_same_host: 774s If ``True``, will make sure that the host of the pool requests is 774s consistent else will raise HostChangedError. When ``False``, you can 774s use the pool on an HTTP proxy and request foreign hosts. 774s 774s :param timeout: 774s If specified, overrides the default timeout for this one 774s request. It may be a float (in seconds) or an instance of 774s :class:`urllib3.util.Timeout`. 774s 774s :param pool_timeout: 774s If set and the pool is set to block=True, then this method will 774s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 774s connection is available within the time period. 774s 774s :param bool preload_content: 774s If True, the response's body will be preloaded into memory. 774s 774s :param bool decode_content: 774s If True, will attempt to decode the body based on the 774s 'content-encoding' header. 774s 774s :param release_conn: 774s If False, then the urlopen call will not release the connection 774s back into the pool once a response is received (but will release if 774s you read the entire contents of the response such as when 774s `preload_content=True`). This is useful if you're not preloading 774s the response's content immediately. You will need to call 774s ``r.release_conn()`` on the response ``r`` to return the connection 774s back into the pool. If None, it takes the value of ``preload_content`` 774s which defaults to ``True``. 774s 774s :param bool chunked: 774s If True, urllib3 will send the body using chunked transfer 774s encoding. Otherwise, urllib3 will send the body using the standard 774s content-length form. Defaults to False. 774s 774s :param int body_pos: 774s Position to seek to in file-like body in the event of a retry or 774s redirect. Typically this won't need to be set because urllib3 will 774s auto-populate the value when needed. 774s """ 774s parsed_url = parse_url(url) 774s destination_scheme = parsed_url.scheme 774s 774s if headers is None: 774s headers = self.headers 774s 774s if not isinstance(retries, Retry): 774s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 774s 774s if release_conn is None: 774s release_conn = preload_content 774s 774s # Check host 774s if assert_same_host and not self.is_same_host(url): 774s raise HostChangedError(self, url, retries) 774s 774s # Ensure that the URL we're connecting to is properly encoded 774s if url.startswith("/"): 774s url = to_str(_encode_target(url)) 774s else: 774s url = to_str(parsed_url.url) 774s 774s conn = None 774s 774s # Track whether `conn` needs to be released before 774s # returning/raising/recursing. Update this variable if necessary, and 774s # leave `release_conn` constant throughout the function. That way, if 774s # the function recurses, the original value of `release_conn` will be 774s # passed down into the recursive call, and its value will be respected. 774s # 774s # See issue #651 [1] for details. 774s # 774s # [1] 774s release_this_conn = release_conn 774s 774s http_tunnel_required = connection_requires_http_tunnel( 774s self.proxy, self.proxy_config, destination_scheme 774s ) 774s 774s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 774s # have to copy the headers dict so we can safely change it without those 774s # changes being reflected in anyone else's copy. 774s if not http_tunnel_required: 774s headers = headers.copy() # type: ignore[attr-defined] 774s headers.update(self.proxy_headers) # type: ignore[union-attr] 774s 774s # Must keep the exception bound to a separate variable or else Python 3 774s # complains about UnboundLocalError. 774s err = None 774s 774s # Keep track of whether we cleanly exited the except block. This 774s # ensures we do proper cleanup in finally. 774s clean_exit = False 774s 774s # Rewind body position, if needed. Record current position 774s # for future rewinds in the event of a redirect/retry. 774s body_pos = set_file_position(body, body_pos) 774s 774s try: 774s # Request a connection from the queue. 774s timeout_obj = self._get_timeout(timeout) 774s conn = self._get_conn(timeout=pool_timeout) 774s 774s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 774s 774s # Is this a closed/new connection that requires CONNECT tunnelling? 774s if self.proxy is not None and http_tunnel_required and conn.is_closed: 774s try: 774s self._prepare_proxy(conn) 774s except (BaseSSLError, OSError, SocketTimeout) as e: 774s self._raise_timeout( 774s err=e, url=self.proxy.url, timeout_value=conn.timeout 774s ) 774s raise 774s 774s # If we're going to release the connection in ``finally:``, then 774s # the response doesn't need to know about the connection. Otherwise 774s # it will also try to release it and we'll have a double-release 774s # mess. 774s response_conn = conn if not release_conn else None 774s 774s # Make the request on the HTTPConnection object 774s > response = self._make_request( 774s conn, 774s method, 774s url, 774s timeout=timeout_obj, 774s body=body, 774s headers=headers, 774s chunked=chunked, 774s retries=retries, 774s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s def test_simple_repeated(): 775s > enc = tiktoken.get_encoding("gpt2") 775s 775s tests/test_encoding.py:32: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 775s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 775s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ______________________________ test_simple_regex _______________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s def test_simple_regex(): 775s > enc = tiktoken.get_encoding("cl100k_base") 775s 775s tests/test_encoding.py:53: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ______________________________ test_basic_encode _______________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s def test_basic_encode(): 775s > enc = tiktoken.get_encoding("r50k_base") 775s 775s tests/test_encoding.py:62: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ______________________________ test_encode_empty _______________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s def test_encode_empty(): 775s > enc = tiktoken.get_encoding("r50k_base") 775s 775s tests/test_encoding.py:74: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ______________________________ test_encode_bytes _______________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s def test_encode_bytes(): 775s > enc = tiktoken.get_encoding("cl100k_base") 775s 775s tests/test_encoding.py:79: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s _________________________ test_encode_surrogate_pairs __________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s def test_encode_surrogate_pairs(): 775s > enc = tiktoken.get_encoding("cl100k_base") 775s 775s tests/test_encoding.py:84: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s _________________ test_catastrophically_repetitive[r50k_base] __________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'r50k_base') 775s 775s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 775s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 775s > enc = make_enc() 775s 775s tests/test_encoding.py:96: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ________________ test_catastrophically_repetitive[cl100k_base] _________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'cl100k_base') 775s 775s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 775s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 775s > enc = make_enc() 775s 775s tests/test_encoding.py:96: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s _______________________ test_basic_roundtrip[r50k_base] ________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'r50k_base') 775s 775s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 775s def test_basic_roundtrip(make_enc): 775s > enc = make_enc() 775s 775s tests/test_encoding.py:115: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ______________________ test_basic_roundtrip[cl100k_base] _______________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'cl100k_base') 775s 775s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 775s def test_basic_roundtrip(make_enc): 775s > enc = make_enc() 775s 775s tests/test_encoding.py:115: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ________________________ test_hyp_roundtrip[r50k_base] _________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'r50k_base') 775s 775s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 775s > @hypothesis.given(text=st.text()) 775s 775s tests/test_encoding.py:131: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s tests/test_encoding.py:134: in test_hyp_roundtrip 775s enc = make_enc() 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s E Falsifying example: test_hyp_roundtrip( 775s E make_enc=functools.partial(get_encoding, 'r50k_base'), 775s E text='', # or any other generated value 775s E ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s _______________________ test_hyp_roundtrip[cl100k_base] ________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'cl100k_base') 775s 775s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 775s > @hypothesis.given(text=st.text()) 775s 775s tests/test_encoding.py:131: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s tests/test_encoding.py:134: in test_hyp_roundtrip 775s enc = make_enc() 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s E Falsifying example: test_hyp_roundtrip( 775s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 775s E text='', # or any other generated value 775s E ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ____________________ test_single_token_roundtrip[r50k_base] ____________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'r50k_base') 775s 775s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 775s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 775s > enc = make_enc() 775s 775s tests/test_encoding.py:141: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ___________________ test_single_token_roundtrip[cl100k_base] ___________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'cl100k_base') 775s 775s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 775s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 775s > enc = make_enc() 775s 775s tests/test_encoding.py:141: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ______________________________ test_special_token ______________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s def test_special_token(): 775s > enc = tiktoken.get_encoding("cl100k_base") 775s 775s tests/test_encoding.py:157: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s _____________________ test_hyp_special_ordinary[r50k_base] _____________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'r50k_base') 775s 775s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 775s > @hypothesis.given(text=st.text()) 775s 775s tests/test_encoding.py:208: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s tests/test_encoding.py:211: in test_hyp_special_ordinary 775s enc = make_enc() 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s E Falsifying example: test_hyp_special_ordinary( 775s E make_enc=functools.partial(get_encoding, 'r50k_base'), 775s E text='', # or any other generated value 775s E ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ____________________ test_hyp_special_ordinary[cl100k_base] ____________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'cl100k_base') 775s 775s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 775s > @hypothesis.given(text=st.text()) 775s 775s tests/test_encoding.py:208: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s tests/test_encoding.py:211: in test_hyp_special_ordinary 775s enc = make_enc() 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s E Falsifying example: test_hyp_special_ordinary( 775s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 775s E text='', # or any other generated value 775s E ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s _________________________ test_batch_encode[r50k_base] _________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'r50k_base') 775s 775s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 775s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 775s > enc = make_enc() 775s 775s tests/test_encoding.py:222: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ________________________ test_batch_encode[cl100k_base] ________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock =E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.GmeWzd/autopkgtest_tmp/build; python3.13 -m pytest tests 775s I: pybuild base:311: cd /tmp/autopkgtest.GmeWzd/autopkgtest_tmp/build; python3.12 -m pytest tests 775s connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'cl100k_base') 775s 775s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 775s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 775s > enc = make_enc() 775s 775s tests/test_encoding.py:222: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s _____________________ test_hyp_batch_roundtrip[r50k_base] ______________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'r50k_base') 775s 775s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 775s > @hypothesis.given(batch=st.lists(st.text())) 775s 775s tests/test_encoding.py:237: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 775s enc = make_enc() 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s E Falsifying example: test_hyp_batch_roundtrip( 775s E make_enc=functools.partial(get_encoding, 'r50k_base'), 775s E batch=[], # or any other generated value 775s E ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ____________________ test_hyp_batch_roundtrip[cl100k_base] _____________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'cl100k_base') 775s 775s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 775s > @hypothesis.given(batch=st.lists(st.text())) 775s 775s tests/test_encoding.py:237: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 775s enc = make_enc() 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s E Falsifying example: test_hyp_batch_roundtrip( 775s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 775s E batch=[], # or any other generated value 775s E ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ___________________________ test_encoding_for_model ____________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s def test_encoding_for_model(): 775s > enc = tiktoken.encoding_for_model("gpt2") 775s 775s tests/test_misc.py:8: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 775s return get_encoding(encoding_name_for_model(model_name)) 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 775s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 775s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ________________________ test_hyp_offsets[cl100k_base] _________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s make_enc = functools.partial(, 'cl100k_base') 775s 775s @pytest.mark.parametrize("make_enc", SOME_ENCODING_FACTORIES) 775s > @hypothesis.given(data=st.data()) 775s 775s tests/test_offsets.py:29: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s tests/test_offsets.py:32: in test_hyp_offsets 775s enc = make_enc() 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s E Falsifying example: test_hyp_offsets( 775s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 775s E data=data(...), 775s E ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ______________________________ test_basic_offsets ______________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s def test_basic_offsets(): 775s > enc = tiktoken.get_encoding("cl100k_base") 775s 775s tests/test_offsets.py:50: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s _________________________________ test_pickle __________________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s def test_pickle(): 775s import pickle 775s 775s > enc_old = tiktoken.get_encoding("r50k_base") 775s 775s tests/test_pickle.py:7: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 775s mergeable_ranks = load_tiktoken_bpe( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 775s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s _________________________________ test_simple __________________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s def test_simple(): 775s # Note that there are more actual tests, they're just not currently public :-) 775s > enc = tiktoken.get_encoding("gpt2") 775s 775s tests/test_simple_public.py:9: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 775s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 775s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s ___________________________ test_encoding_for_model ____________________________ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s > sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 775s raise err 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 775s source_address = None, socket_options = [(6, 1, 1)] 775s 775s def create_connection( 775s address: tuple[str, int], 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s source_address: tuple[str, int] | None = None, 775s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 775s ) -> socket.socket: 775s """Connect to *address* and return the socket object. 775s 775s Convenience function. Connect to *address* (a 2-tuple ``(host, 775s port)``) and return the socket object. Passing the optional 775s *timeout* parameter will set the timeout on the socket instance 775s before attempting to connect. If no *timeout* is supplied, the 775s global default timeout setting returned by :func:`socket.getdefaulttimeout` 775s is used. If *source_address* is set it must be a tuple of (host, port) 775s for the socket to bind as a source address before making the connection. 775s An host of '' or port 0 tells the OS to use the default. 775s """ 775s 775s host, port = address 775s if host.startswith("["): 775s host = host.strip("[]") 775s err = None 775s 775s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 775s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 775s # The original create_connection function always returns all records. 775s family = allowed_gai_family() 775s 775s try: 775s host.encode("idna") 775s except UnicodeError: 775s raise LocationParseError(f"'{host}', label empty or too long") from None 775s 775s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 775s af, socktype, proto, canonname, sa = res 775s sock = None 775s try: 775s sock = socket.socket(af, socktype, proto) 775s 775s # If provided, set socket level options before connecting. 775s _set_socket_options(sock, socket_options) 775s 775s if timeout is not _DEFAULT_TIMEOUT: 775s sock.settimeout(timeout) 775s if source_address: 775s sock.bind(source_address) 775s > sock.connect(sa) 775s E ConnectionRefusedError: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 775s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 775s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s redirect = False, assert_same_host = False 775s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 775s release_conn = False, chunked = False, body_pos = None, preload_content = False 775s decode_content = False, response_kw = {} 775s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 775s destination_scheme = None, conn = None, release_this_conn = True 775s http_tunnel_required = False, err = None, clean_exit = False 775s 775s def urlopen( # type: ignore[override] 775s self, 775s method: str, 775s url: str, 775s body: _TYPE_BODY | None = None, 775s headers: typing.Mapping[str, str] | None = None, 775s retries: Retry | bool | int | None = None, 775s redirect: bool = True, 775s assert_same_host: bool = True, 775s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 775s pool_timeout: int | None = None, 775s release_conn: bool | None = None, 775s chunked: bool = False, 775s body_pos: _TYPE_BODY_POSITION | None = None, 775s preload_content: bool = True, 775s decode_content: bool = True, 775s **response_kw: typing.Any, 775s ) -> BaseHTTPResponse: 775s """ 775s Get a connection from the pool and perform an HTTP request. This is the 775s lowest level call for making a request, so you'll need to specify all 775s the raw details. 775s 775s .. note:: 775s 775s More commonly, it's appropriate to use a convenience method 775s such as :meth:`request`. 775s 775s .. note:: 775s 775s `release_conn` will only behave as expected if 775s `preload_content=False` because we want to make 775s `preload_content=False` the default behaviour someday soon without 775s breaking backwards compatibility. 775s 775s :param method: 775s HTTP request method (such as GET, POST, PUT, etc.) 775s 775s :param url: 775s The URL to perform the request on. 775s 775s :param body: 775s Data to send in the request body, either :class:`str`, :class:`bytes`, 775s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 775s 775s :param headers: 775s Dictionary of custom headers to send, such as User-Agent, 775s If-None-Match, etc. If None, pool headers are used. If provided, 775s these headers completely replace any pool-specific headers. 775s 775s :param retries: 775s Configure the number of retries to allow before raising a 775s :class:`~urllib3.exceptions.MaxRetryError` exception. 775s 775s Pass ``None`` to retry until you receive a response. Pass a 775s :class:`~urllib3.util.retry.Retry` object for fine-grained control 775s over different types of retries. 775s Pass an integer number to retry connection errors that many times, 775s but no other types of errors. Pass zero to never retry. 775s 775s If ``False``, then retries are disabled and any exception is raised 775s immediately. Also, instead of raising a MaxRetryError on redirects, 775s the redirect response will be returned. 775s 775s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 775s 775s :param redirect: 775s If True, automatically handle redirects (status codes 301, 302, 775s 303, 307, 308). Each redirect counts as a retry. Disabling retries 775s will disable redirect, too. 775s 775s :param assert_same_host: 775s If ``True``, will make sure that the host of the pool requests is 775s consistent else will raise HostChangedError. When ``False``, you can 775s use the pool on an HTTP proxy and request foreign hosts. 775s 775s :param timeout: 775s If specified, overrides the default timeout for this one 775s request. It may be a float (in seconds) or an instance of 775s :class:`urllib3.util.Timeout`. 775s 775s :param pool_timeout: 775s If set and the pool is set to block=True, then this method will 775s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 775s connection is available within the time period. 775s 775s :param bool preload_content: 775s If True, the response's body will be preloaded into memory. 775s 775s :param bool decode_content: 775s If True, will attempt to decode the body based on the 775s 'content-encoding' header. 775s 775s :param release_conn: 775s If False, then the urlopen call will not release the connection 775s back into the pool once a response is received (but will release if 775s you read the entire contents of the response such as when 775s `preload_content=True`). This is useful if you're not preloading 775s the response's content immediately. You will need to call 775s ``r.release_conn()`` on the response ``r`` to return the connection 775s back into the pool. If None, it takes the value of ``preload_content`` 775s which defaults to ``True``. 775s 775s :param bool chunked: 775s If True, urllib3 will send the body using chunked transfer 775s encoding. Otherwise, urllib3 will send the body using the standard 775s content-length form. Defaults to False. 775s 775s :param int body_pos: 775s Position to seek to in file-like body in the event of a retry or 775s redirect. Typically this won't need to be set because urllib3 will 775s auto-populate the value when needed. 775s """ 775s parsed_url = parse_url(url) 775s destination_scheme = parsed_url.scheme 775s 775s if headers is None: 775s headers = self.headers 775s 775s if not isinstance(retries, Retry): 775s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 775s 775s if release_conn is None: 775s release_conn = preload_content 775s 775s # Check host 775s if assert_same_host and not self.is_same_host(url): 775s raise HostChangedError(self, url, retries) 775s 775s # Ensure that the URL we're connecting to is properly encoded 775s if url.startswith("/"): 775s url = to_str(_encode_target(url)) 775s else: 775s url = to_str(parsed_url.url) 775s 775s conn = None 775s 775s # Track whether `conn` needs to be released before 775s # returning/raising/recursing. Update this variable if necessary, and 775s # leave `release_conn` constant throughout the function. That way, if 775s # the function recurses, the original value of `release_conn` will be 775s # passed down into the recursive call, and its value will be respected. 775s # 775s # See issue #651 [1] for details. 775s # 775s # [1] 775s release_this_conn = release_conn 775s 775s http_tunnel_required = connection_requires_http_tunnel( 775s self.proxy, self.proxy_config, destination_scheme 775s ) 775s 775s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 775s # have to copy the headers dict so we can safely change it without those 775s # changes being reflected in anyone else's copy. 775s if not http_tunnel_required: 775s headers = headers.copy() # type: ignore[attr-defined] 775s headers.update(self.proxy_headers) # type: ignore[union-attr] 775s 775s # Must keep the exception bound to a separate variable or else Python 3 775s # complains about UnboundLocalError. 775s err = None 775s 775s # Keep track of whether we cleanly exited the except block. This 775s # ensures we do proper cleanup in finally. 775s clean_exit = False 775s 775s # Rewind body position, if needed. Record current position 775s # for future rewinds in the event of a redirect/retry. 775s body_pos = set_file_position(body, body_pos) 775s 775s try: 775s # Request a connection from the queue. 775s timeout_obj = self._get_timeout(timeout) 775s conn = self._get_conn(timeout=pool_timeout) 775s 775s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 775s 775s # Is this a closed/new connection that requires CONNECT tunnelling? 775s if self.proxy is not None and http_tunnel_required and conn.is_closed: 775s try: 775s self._prepare_proxy(conn) 775s except (BaseSSLError, OSError, SocketTimeout) as e: 775s self._raise_timeout( 775s err=e, url=self.proxy.url, timeout_value=conn.timeout 775s ) 775s raise 775s 775s # If we're going to release the connection in ``finally:``, then 775s # the response doesn't need to know about the connection. Otherwise 775s # it will also try to release it and we'll have a double-release 775s # mess. 775s response_conn = conn if not release_conn else None 775s 775s # Make the request on the HTTPConnection object 775s > response = self._make_request( 775s conn, 775s method, 775s url, 775s timeout=timeout_obj, 775s body=body, 775s headers=headers, 775s chunked=chunked, 775s retries=retries, 775s response_conn=response_conn, 775s preload_content=preload_content, 775s decode_content=decode_content, 775s **response_kw, 775s ) 775s 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 775s raise new_e 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 775s self._validate_conn(conn) 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 775s conn.connect() 775s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 775s self.sock = sock = self._new_conn() 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s 775s def _new_conn(self) -> socket.socket: 775s """Establish a socket connection and set nodelay settings on it. 775s 775s :return: New socket connection. 775s """ 775s try: 775s sock = connection.create_connection( 775s (self._dns_host, self.port), 775s self.timeout, 775s source_address=self.source_address, 775s socket_options=self.socket_options, 775s ) 775s except socket.gaierror as e: 775s raise NameResolutionError(self.host, self, e) from e 775s except SocketTimeout as e: 775s raise ConnectTimeoutError( 775s self, 775s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 775s ) from e 775s 775s except OSError as e: 775s > raise NewConnectionError( 775s self, f"Failed to establish a new connection: {e}" 775s ) from e 775s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 775s 775s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 775s 775s The above exception was the direct cause of the following exception: 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s > resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:667: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 775s retries = retries.increment( 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 775s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 775s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 775s _pool = 775s _stacktrace = 775s 775s def increment( 775s self, 775s method: str | None = None, 775s url: str | None = None, 775s response: BaseHTTPResponse | None = None, 775s error: Exception | None = None, 775s _pool: ConnectionPool | None = None, 775s _stacktrace: TracebackType | None = None, 775s ) -> Retry: 775s """Return a new Retry object with incremented retry counters. 775s 775s :param response: A response object, or None, if the server did not 775s return a response. 775s :type response: :class:`~urllib3.response.BaseHTTPResponse` 775s :param Exception error: An error encountered during the request, or 775s None if the response was received successfully. 775s 775s :return: A new ``Retry`` object. 775s """ 775s if self.total is False and error: 775s # Disabled, indicate to re-raise the error. 775s raise reraise(type(error), error, _stacktrace) 775s 775s total = self.total 775s if total is not None: 775s total -= 1 775s 775s connect = self.connect 775s read = self.read 775s redirect = self.redirect 775s status_count = self.status 775s other = self.other 775s cause = "unknown" 775s status = None 775s redirect_location = None 775s 775s if error and self._is_connection_error(error): 775s # Connect retry? 775s if connect is False: 775s raise reraise(type(error), error, _stacktrace) 775s elif connect is not None: 775s connect -= 1 775s 775s elif error and self._is_read_error(error): 775s # Read retry? 775s if read is False or method is None or not self._is_method_retryable(method): 775s raise reraise(type(error), error, _stacktrace) 775s elif read is not None: 775s read -= 1 775s 775s elif error: 775s # Other retry? 775s if other is not None: 775s other -= 1 775s 775s elif response and response.get_redirect_location(): 775s # Redirect retry? 775s if redirect is not None: 775s redirect -= 1 775s cause = "too many redirects" 775s response_redirect_location = response.get_redirect_location() 775s if response_redirect_location: 775s redirect_location = response_redirect_location 775s status = response.status 775s 775s else: 775s # Incrementing because of a server error like a 500 in 775s # status_forcelist and the given method is in the allowed_methods 775s cause = ResponseError.GENERIC_ERROR 775s if response and response.status: 775s if status_count is not None: 775s status_count -= 1 775s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 775s status = response.status 775s 775s history = self.history + ( 775s RequestHistory(method, url, error, status, redirect_location), 775s ) 775s 775s new_retry = self.new( 775s total=total, 775s connect=connect, 775s read=read, 775s redirect=redirect, 775s status=status_count, 775s other=other, 775s history=history, 775s ) 775s 775s if new_retry.is_exhausted(): 775s reason = error or ResponseError(cause) 775s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 775s 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')) 775s 775s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 775s 775s During handling of the above exception, another exception occurred: 775s 775s def test_encoding_for_model(): 775s > enc = tiktoken.encoding_for_model("gpt2") 775s 775s tests/test_simple_public.py:26: 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 775s return get_encoding(encoding_name_for_model(model_name)) 775s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 775s enc = Encoding(**constructor()) 775s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 775s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 775s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 775s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 775s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 775s contents = read_file(blobpath) 775s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 775s resp = requests.get(blobpath) 775s /usr/lib/python3/dist-packages/requests/api.py:73: in get 775s return request("get", url, params=params, **kwargs) 775s /usr/lib/python3/dist-packages/requests/api.py:59: in request 775s return session.request(method=method, url=url, **kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 775s resp = self.send(prep, **send_kwargs) 775s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 775s r = adapter.send(request, **kwargs) 775s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 775s 775s self = 775s request = , stream = False 775s timeout = Timeout(connect=None, read=None, total=None), verify = True 775s cert = None, proxies = OrderedDict() 775s 775s def send( 775s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 775s ): 775s """Sends PreparedRequest object. Returns Response object. 775s 775s :param request: The :class:`PreparedRequest ` being sent. 775s :param stream: (optional) Whether to stream the request content. 775s :param timeout: (optional) How long to wait for the server to send 775s data before giving up, as a float, or a :ref:`(connect timeout, 775s read timeout) ` tuple. 775s :type timeout: float or tuple or urllib3 Timeout object 775s :param verify: (optional) Either a boolean, in which case it controls whether 775s we verify the server's TLS certificate, or a string, in which case it 775s must be a path to a CA bundle to use 775s :param cert: (optional) Any user-provided SSL certificate to be trusted. 775s :param proxies: (optional) The proxies dictionary to apply to the request. 775s :rtype: requests.Response 775s """ 775s 775s try: 775s conn = self.get_connection_with_tls_context( 775s request, verify, proxies=proxies, cert=cert 775s ) 775s except LocationValueError as e: 775s raise InvalidURL(e, request=request) 775s 775s self.cert_verify(conn, request.url, verify, cert) 775s url = self.request_url(request, proxies) 775s self.add_headers( 775s request, 775s stream=stream, 775s timeout=timeout, 775s verify=verify, 775s cert=cert, 775s proxies=proxies, 775s ) 775s 775s chunked = not (request.body is None or "Content-Length" in request.headers) 775s 775s if isinstance(timeout, tuple): 775s try: 775s connect, read = timeout 775s timeout = TimeoutSauce(connect=connect, read=read) 775s except ValueError: 775s raise ValueError( 775s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 775s f"or a single float to set both timeouts to the same value." 775s ) 775s elif isinstance(timeout, TimeoutSauce): 775s pass 775s else: 775s timeout = TimeoutSauce(connect=timeout, read=timeout) 775s 775s try: 775s resp = conn.urlopen( 775s method=request.method, 775s url=url, 775s body=request.body, 775s headers=request.headers, 775s redirect=False, 775s assert_same_host=False, 775s preload_content=False, 775s decode_content=False, 775s retries=self.max_retries, 775s timeout=timeout, 775s chunked=chunked, 775s ) 775s 775s except (ProtocolError, OSError) as err: 775s raise ConnectionError(err, request=request) 775s 775s except MaxRetryError as e: 775s if isinstance(e.reason, ConnectTimeoutError): 775s # TODO: Remove this in 3.0.0: see #2811 775s if not isinstance(e.reason, NewConnectionError): 775s raise ConnectTimeout(e, request=request) 775s 775s if isinstance(e.reason, ResponseError): 775s raise RetryError(e, request=request) 775s 775s if isinstance(e.reason, _ProxyError): 775s raise ProxyError(e, request=request) 775s 775s if isinstance(e.reason, _SSLError): 775s # This branch is for urllib3 v1.22 and later. 775s raise SSLError(e, request=request) 775s 775s > raise ConnectionError(e, request=request) 775s 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')) 775s 775s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 775s =========================== short test summary info ============================ 775s FAILED tests/test_encoding.py::test_simple - requests.exceptions.ConnectionEr... 775s FAILED tests/test_encoding.py::test_simple_repeated - requests.exceptions.Con... 775s FAILED tests/test_encoding.py::test_simple_regex - requests.exceptions.Connec... 775s FAILED tests/test_encoding.py::test_basic_encode - requests.exceptions.Connec... 775s FAILED tests/test_encoding.py::test_encode_empty - requests.exceptions.Connec... 775s FAILED tests/test_encoding.py::test_encode_bytes - requests.exceptions.Connec... 775s FAILED tests/test_encoding.py::test_encode_surrogate_pairs - requests.excepti... 775s FAILED tests/test_encoding.py::test_catastrophically_repetitive[r50k_base] - ... 775s FAILED tests/test_encoding.py::test_catastrophically_repetitive[cl100k_base] 775s FAILED tests/test_encoding.py::test_basic_roundtrip[r50k_base] - requests.exc... 775s FAILED tests/test_encoding.py::test_basic_roundtrip[cl100k_base] - requests.e... 775s FAILED tests/test_encoding.py::test_hyp_roundtrip[r50k_base] - requests.excep... 775s FAILED tests/test_encoding.py::test_hyp_roundtrip[cl100k_base] - requests.exc... 775s FAILED tests/test_encoding.py::test_single_token_roundtrip[r50k_base] - reque... 775s FAILED tests/test_encoding.py::test_single_token_roundtrip[cl100k_base] - req... 775s FAILED tests/test_encoding.py::test_special_token - requests.exceptions.Conne... 775s FAILED tests/test_encoding.py::test_hyp_special_ordinary[r50k_base] - request... 775s FAILED tests/test_encoding.py::test_hyp_special_ordinary[cl100k_base] - reque... 775s FAILED tests/test_encoding.py::test_batch_encode[r50k_base] - requests.except... 775s FAILED tests/test_encoding.py::test_batch_encode[cl100k_base] - requests.exce... 775s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[r50k_base] - requests... 775s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[cl100k_base] - reques... 775s FAILED tests/test_misc.py::test_encoding_for_model - requests.exceptions.Conn... 775s FAILED tests/test_offsets.py::test_hyp_offsets[cl100k_base] - requests.except... 775s FAILED tests/test_offsets.py::test_basic_offsets - requests.exceptions.Connec... 775s FAILED tests/test_pickle.py::test_pickle - requests.exceptions.ConnectionErro... 775s FAILED tests/test_simple_public.py::test_simple - requests.exceptions.Connect... 775s FAILED tests/test_simple_public.py::test_encoding_for_model - requests.except... 775s =================== 28 failed, 2 passed in 585.21s (0:09:45) =================== 775s ============================= test session starts ============================== 775s platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0 775s rootdir: /tmp/autopkgtest.GmeWzd/autopkgtest_tmp/build 775s configfile: pyproject.toml 775s plugins: hypothesis-6.119.3, typeguard-4.4.1 775s collected 30 items 775s 802s tests/test_encoding.py FFFFFFFFFFFFFFFFFFFFFF [ 73%] 803s tests/test_misc.py F. [ 80%] 805s tests/test_offsets.py FF [ 86%] 806s tests/test_pickle.py F [ 90%] 809s tests/test_simple_public.py FF. [100%] 809s 809s =================================== FAILURES =================================== 809s _________________________________ test_simple __________________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s def test_simple(): 809s > enc = tiktoken.get_encoding("gpt2") 809s 809s tests/test_encoding.py:15: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 809s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 809s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s _____________________________ test_simple_repeated _____________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s def test_simple_repeated(): 809s > enc = tiktoken.get_encoding("gpt2") 809s 809s tests/test_encoding.py:32: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 809s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 809s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ______________________________ test_simple_regex _______________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s def test_simple_regex(): 809s > enc = tiktoken.get_encoding("cl100k_base") 809s 809s tests/test_encoding.py:53: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ______________________________ test_basic_encode _______________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s def test_basic_encode(): 809s > enc = tiktoken.get_encoding("r50k_base") 809s 809s tests/test_encoding.py:62: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ______________________________ test_encode_empty _______________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s def test_encode_empty(): 809s > enc = tiktoken.get_encoding("r50k_base") 809s 809s tests/test_encoding.py:74: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ______________________________ test_encode_bytes _______________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s def test_encode_bytes(): 809s > enc = tiktoken.get_encoding("cl100k_base") 809s 809s tests/test_encoding.py:79: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s _________________________ test_encode_surrogate_pairs __________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s def test_encode_surrogate_pairs(): 809s > enc = tiktoken.get_encoding("cl100k_base") 809s 809s tests/test_encoding.py:84: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s _________________ test_catastrophically_repetitive[r50k_base] __________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'r50k_base') 809s 809s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 809s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 809s > enc = make_enc() 809s 809s tests/test_encoding.py:96: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ________________ test_catastrophically_repetitive[cl100k_base] _________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'cl100k_base') 809s 809s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 809s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 809s > enc = make_enc() 809s 809s tests/test_encoding.py:96: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s _______________________ test_basic_roundtrip[r50k_base] ________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'r50k_base') 809s 809s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 809s def test_basic_roundtrip(make_enc): 809s > enc = make_enc() 809s 809s tests/test_encoding.py:115: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ______________________ test_basic_roundtrip[cl100k_base] _______________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'cl100k_base') 809s 809s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 809s def test_basic_roundtrip(make_enc): 809s > enc = make_enc() 809s 809s tests/test_encoding.py:115: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ________________________ test_hyp_roundtrip[r50k_base] _________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'r50k_base') 809s 809s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 809s > @hypothesis.given(text=st.text()) 809s 809s tests/test_encoding.py:131: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s tests/test_encoding.py:134: in test_hyp_roundtrip 809s enc = make_enc() 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s E Falsifying example: test_hyp_roundtrip( 809s E make_enc=functools.partial(get_encoding, 'r50k_base'), 809s E text='', 809s E ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s _______________________ test_hyp_roundtrip[cl100k_base] ________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'cl100k_base') 809s 809s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 809s > @hypothesis.given(text=st.text()) 809s 809s tests/test_encoding.py:131: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s tests/test_encoding.py:134: in test_hyp_roundtrip 809s enc = make_enc() 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s E Falsifying example: test_hyp_roundtrip( 809s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 809s E text='', 809s E ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ____________________ test_single_token_roundtrip[r50k_base] ____________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'r50k_base') 809s 809s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 809s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 809s > enc = make_enc() 809s 809s tests/test_encoding.py:141: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ___________________ test_single_token_roundtrip[cl100k_base] ___________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'cl100k_base') 809s 809s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 809s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 809s > enc = make_enc() 809s 809s tests/test_encoding.py:141: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ______________________________ test_special_token ______________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s def test_special_token(): 809s > enc = tiktoken.get_encoding("cl100k_base") 809s 809s tests/test_encoding.py:157: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s _____________________ test_hyp_special_ordinary[r50k_base] _____________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'r50k_base') 809s 809s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 809s > @hypothesis.given(text=st.text()) 809s 809s tests/test_encoding.py:208: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s tests/test_encoding.py:211: in test_hyp_special_ordinary 809s enc = make_enc() 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s E Falsifying example: test_hyp_special_ordinary( 809s E make_enc=functools.partial(get_encoding, 'r50k_base'), 809s E text='', 809s E ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ____________________ test_hyp_special_ordinary[cl100k_base] ____________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'cl100k_base') 809s 809s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 809s > @hypothesis.given(text=st.text()) 809s 809s tests/test_encoding.py:208: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s tests/test_encoding.py:211: in test_hyp_special_ordinary 809s enc = make_enc() 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s E Falsifying example: test_hyp_special_ordinary( 809s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 809s E text='', 809s E ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s _________________________ test_batch_encode[r50k_base] _________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'r50k_base') 809s 809s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 809s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 809s > enc = make_enc() 809s 809s tests/test_encoding.py:222: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ________________________ test_batch_encode[cl100k_base] ________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirE: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.GmeWzd/autopkgtest_tmp/build; python3.12 -m pytest tests 809s pybuild-autopkgtest: error: pybuild --autopkgtest --test-pytest -i python{version} -p "3.13 3.12" returned exit code 13 809s make: *** [/tmp/DY1jJJ745E/run:4: pybuild-autopkgtest] Error 25 809s pybuild-autopkgtest: error: /tmp/DY1jJJ745E/run pybuild-autopkgtest returned exit code 2 809s ect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'cl100k_base') 809s 809s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 809s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 809s > enc = make_enc() 809s 809s tests/test_encoding.py:222: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s _____________________ test_hyp_batch_roundtrip[r50k_base] ______________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'r50k_base') 809s 809s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 809s > @hypothesis.given(batch=st.lists(st.text())) 809s 809s tests/test_encoding.py:237: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 809s enc = make_enc() 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s E Falsifying example: test_hyp_batch_roundtrip( 809s E make_enc=functools.partial(get_encoding, 'r50k_base'), 809s E batch=[], 809s E ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ____________________ test_hyp_batch_roundtrip[cl100k_base] _____________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'cl100k_base') 809s 809s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 809s > @hypothesis.given(batch=st.lists(st.text())) 809s 809s tests/test_encoding.py:237: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 809s enc = make_enc() 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s E Falsifying example: test_hyp_batch_roundtrip( 809s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 809s E batch=[], 809s E ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ___________________________ test_encoding_for_model ____________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s def test_encoding_for_model(): 809s > enc = tiktoken.encoding_for_model("gpt2") 809s 809s tests/test_misc.py:8: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 809s return get_encoding(encoding_name_for_model(model_name)) 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 809s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 809s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ________________________ test_hyp_offsets[cl100k_base] _________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s make_enc = functools.partial(, 'cl100k_base') 809s 809s @pytest.mark.parametrize("make_enc", SOME_ENCODING_FACTORIES) 809s > @hypothesis.given(data=st.data()) 809s 809s tests/test_offsets.py:29: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s tests/test_offsets.py:32: in test_hyp_offsets 809s enc = make_enc() 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s E Falsifying example: test_hyp_offsets( 809s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 809s E data=data(...), 809s E ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ______________________________ test_basic_offsets ______________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s def test_basic_offsets(): 809s > enc = tiktoken.get_encoding("cl100k_base") 809s 809s tests/test_offsets.py:50: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s _________________________________ test_pickle __________________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s def test_pickle(): 809s import pickle 809s 809s > enc_old = tiktoken.get_encoding("r50k_base") 809s 809s tests/test_pickle.py:7: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 809s mergeable_ranks = load_tiktoken_bpe( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 809s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s _________________________________ test_simple __________________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s def test_simple(): 809s # Note that there are more actual tests, they're just not currently public :-) 809s > enc = tiktoken.get_encoding("gpt2") 809s 809s tests/test_simple_public.py:9: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 809s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 809s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s ___________________________ test_encoding_for_model ____________________________ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s > sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 809s raise err 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 809s source_address = None, socket_options = [(6, 1, 1)] 809s 809s def create_connection( 809s address: tuple[str, int], 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s source_address: tuple[str, int] | None = None, 809s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 809s ) -> socket.socket: 809s """Connect to *address* and return the socket object. 809s 809s Convenience function. Connect to *address* (a 2-tuple ``(host, 809s port)``) and return the socket object. Passing the optional 809s *timeout* parameter will set the timeout on the socket instance 809s before attempting to connect. If no *timeout* is supplied, the 809s global default timeout setting returned by :func:`socket.getdefaulttimeout` 809s is used. If *source_address* is set it must be a tuple of (host, port) 809s for the socket to bind as a source address before making the connection. 809s An host of '' or port 0 tells the OS to use the default. 809s """ 809s 809s host, port = address 809s if host.startswith("["): 809s host = host.strip("[]") 809s err = None 809s 809s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 809s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 809s # The original create_connection function always returns all records. 809s family = allowed_gai_family() 809s 809s try: 809s host.encode("idna") 809s except UnicodeError: 809s raise LocationParseError(f"'{host}', label empty or too long") from None 809s 809s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 809s af, socktype, proto, canonname, sa = res 809s sock = None 809s try: 809s sock = socket.socket(af, socktype, proto) 809s 809s # If provided, set socket level options before connecting. 809s _set_socket_options(sock, socket_options) 809s 809s if timeout is not _DEFAULT_TIMEOUT: 809s sock.settimeout(timeout) 809s if source_address: 809s sock.bind(source_address) 809s > sock.connect(sa) 809s E ConnectionRefusedError: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 809s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 809s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s redirect = False, assert_same_host = False 809s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 809s release_conn = False, chunked = False, body_pos = None, preload_content = False 809s decode_content = False, response_kw = {} 809s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 809s destination_scheme = None, conn = None, release_this_conn = True 809s http_tunnel_required = False, err = None, clean_exit = False 809s 809s def urlopen( # type: ignore[override] 809s self, 809s method: str, 809s url: str, 809s body: _TYPE_BODY | None = None, 809s headers: typing.Mapping[str, str] | None = None, 809s retries: Retry | bool | int | None = None, 809s redirect: bool = True, 809s assert_same_host: bool = True, 809s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 809s pool_timeout: int | None = None, 809s release_conn: bool | None = None, 809s chunked: bool = False, 809s body_pos: _TYPE_BODY_POSITION | None = None, 809s preload_content: bool = True, 809s decode_content: bool = True, 809s **response_kw: typing.Any, 809s ) -> BaseHTTPResponse: 809s """ 809s Get a connection from the pool and perform an HTTP request. This is the 809s lowest level call for making a request, so you'll need to specify all 809s the raw details. 809s 809s .. note:: 809s 809s More commonly, it's appropriate to use a convenience method 809s such as :meth:`request`. 809s 809s .. note:: 809s 809s `release_conn` will only behave as expected if 809s `preload_content=False` because we want to make 809s `preload_content=False` the default behaviour someday soon without 809s breaking backwards compatibility. 809s 809s :param method: 809s HTTP request method (such as GET, POST, PUT, etc.) 809s 809s :param url: 809s The URL to perform the request on. 809s 809s :param body: 809s Data to send in the request body, either :class:`str`, :class:`bytes`, 809s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 809s 809s :param headers: 809s Dictionary of custom headers to send, such as User-Agent, 809s If-None-Match, etc. If None, pool headers are used. If provided, 809s these headers completely replace any pool-specific headers. 809s 809s :param retries: 809s Configure the number of retries to allow before raising a 809s :class:`~urllib3.exceptions.MaxRetryError` exception. 809s 809s Pass ``None`` to retry until you receive a response. Pass a 809s :class:`~urllib3.util.retry.Retry` object for fine-grained control 809s over different types of retries. 809s Pass an integer number to retry connection errors that many times, 809s but no other types of errors. Pass zero to never retry. 809s 809s If ``False``, then retries are disabled and any exception is raised 809s immediately. Also, instead of raising a MaxRetryError on redirects, 809s the redirect response will be returned. 809s 809s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 809s 809s :param redirect: 809s If True, automatically handle redirects (status codes 301, 302, 809s 303, 307, 308). Each redirect counts as a retry. Disabling retries 809s will disable redirect, too. 809s 809s :param assert_same_host: 809s If ``True``, will make sure that the host of the pool requests is 809s consistent else will raise HostChangedError. When ``False``, you can 809s use the pool on an HTTP proxy and request foreign hosts. 809s 809s :param timeout: 809s If specified, overrides the default timeout for this one 809s request. It may be a float (in seconds) or an instance of 809s :class:`urllib3.util.Timeout`. 809s 809s :param pool_timeout: 809s If set and the pool is set to block=True, then this method will 809s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 809s connection is available within the time period. 809s 809s :param bool preload_content: 809s If True, the response's body will be preloaded into memory. 809s 809s :param bool decode_content: 809s If True, will attempt to decode the body based on the 809s 'content-encoding' header. 809s 809s :param release_conn: 809s If False, then the urlopen call will not release the connection 809s back into the pool once a response is received (but will release if 809s you read the entire contents of the response such as when 809s `preload_content=True`). This is useful if you're not preloading 809s the response's content immediately. You will need to call 809s ``r.release_conn()`` on the response ``r`` to return the connection 809s back into the pool. If None, it takes the value of ``preload_content`` 809s which defaults to ``True``. 809s 809s :param bool chunked: 809s If True, urllib3 will send the body using chunked transfer 809s encoding. Otherwise, urllib3 will send the body using the standard 809s content-length form. Defaults to False. 809s 809s :param int body_pos: 809s Position to seek to in file-like body in the event of a retry or 809s redirect. Typically this won't need to be set because urllib3 will 809s auto-populate the value when needed. 809s """ 809s parsed_url = parse_url(url) 809s destination_scheme = parsed_url.scheme 809s 809s if headers is None: 809s headers = self.headers 809s 809s if not isinstance(retries, Retry): 809s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 809s 809s if release_conn is None: 809s release_conn = preload_content 809s 809s # Check host 809s if assert_same_host and not self.is_same_host(url): 809s raise HostChangedError(self, url, retries) 809s 809s # Ensure that the URL we're connecting to is properly encoded 809s if url.startswith("/"): 809s url = to_str(_encode_target(url)) 809s else: 809s url = to_str(parsed_url.url) 809s 809s conn = None 809s 809s # Track whether `conn` needs to be released before 809s # returning/raising/recursing. Update this variable if necessary, and 809s # leave `release_conn` constant throughout the function. That way, if 809s # the function recurses, the original value of `release_conn` will be 809s # passed down into the recursive call, and its value will be respected. 809s # 809s # See issue #651 [1] for details. 809s # 809s # [1] 809s release_this_conn = release_conn 809s 809s http_tunnel_required = connection_requires_http_tunnel( 809s self.proxy, self.proxy_config, destination_scheme 809s ) 809s 809s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 809s # have to copy the headers dict so we can safely change it without those 809s # changes being reflected in anyone else's copy. 809s if not http_tunnel_required: 809s headers = headers.copy() # type: ignore[attr-defined] 809s headers.update(self.proxy_headers) # type: ignore[union-attr] 809s 809s # Must keep the exception bound to a separate variable or else Python 3 809s # complains about UnboundLocalError. 809s err = None 809s 809s # Keep track of whether we cleanly exited the except block. This 809s # ensures we do proper cleanup in finally. 809s clean_exit = False 809s 809s # Rewind body position, if needed. Record current position 809s # for future rewinds in the event of a redirect/retry. 809s body_pos = set_file_position(body, body_pos) 809s 809s try: 809s # Request a connection from the queue. 809s timeout_obj = self._get_timeout(timeout) 809s conn = self._get_conn(timeout=pool_timeout) 809s 809s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 809s 809s # Is this a closed/new connection that requires CONNECT tunnelling? 809s if self.proxy is not None and http_tunnel_required and conn.is_closed: 809s try: 809s self._prepare_proxy(conn) 809s except (BaseSSLError, OSError, SocketTimeout) as e: 809s self._raise_timeout( 809s err=e, url=self.proxy.url, timeout_value=conn.timeout 809s ) 809s raise 809s 809s # If we're going to release the connection in ``finally:``, then 809s # the response doesn't need to know about the connection. Otherwise 809s # it will also try to release it and we'll have a double-release 809s # mess. 809s response_conn = conn if not release_conn else None 809s 809s # Make the request on the HTTPConnection object 809s > response = self._make_request( 809s conn, 809s method, 809s url, 809s timeout=timeout_obj, 809s body=body, 809s headers=headers, 809s chunked=chunked, 809s retries=retries, 809s response_conn=response_conn, 809s preload_content=preload_content, 809s decode_content=decode_content, 809s **response_kw, 809s ) 809s 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 809s raise new_e 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 809s self._validate_conn(conn) 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 809s conn.connect() 809s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 809s self.sock = sock = self._new_conn() 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s 809s def _new_conn(self) -> socket.socket: 809s """Establish a socket connection and set nodelay settings on it. 809s 809s :return: New socket connection. 809s """ 809s try: 809s sock = connection.create_connection( 809s (self._dns_host, self.port), 809s self.timeout, 809s source_address=self.source_address, 809s socket_options=self.socket_options, 809s ) 809s except socket.gaierror as e: 809s raise NameResolutionError(self.host, self, e) from e 809s except SocketTimeout as e: 809s raise ConnectTimeoutError( 809s self, 809s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 809s ) from e 809s 809s except OSError as e: 809s > raise NewConnectionError( 809s self, f"Failed to establish a new connection: {e}" 809s ) from e 809s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 809s 809s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 809s 809s The above exception was the direct cause of the following exception: 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s > resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:667: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 809s retries = retries.increment( 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 809s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 809s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 809s _pool = 809s _stacktrace = 809s 809s def increment( 809s self, 809s method: str | None = None, 809s url: str | None = None, 809s response: BaseHTTPResponse | None = None, 809s error: Exception | None = None, 809s _pool: ConnectionPool | None = None, 809s _stacktrace: TracebackType | None = None, 809s ) -> Retry: 809s """Return a new Retry object with incremented retry counters. 809s 809s :param response: A response object, or None, if the server did not 809s return a response. 809s :type response: :class:`~urllib3.response.BaseHTTPResponse` 809s :param Exception error: An error encountered during the request, or 809s None if the response was received successfully. 809s 809s :return: A new ``Retry`` object. 809s """ 809s if self.total is False and error: 809s # Disabled, indicate to re-raise the error. 809s raise reraise(type(error), error, _stacktrace) 809s 809s total = self.total 809s if total is not None: 809s total -= 1 809s 809s connect = self.connect 809s read = self.read 809s redirect = self.redirect 809s status_count = self.status 809s other = self.other 809s cause = "unknown" 809s status = None 809s redirect_location = None 809s 809s if error and self._is_connection_error(error): 809s # Connect retry? 809s if connect is False: 809s raise reraise(type(error), error, _stacktrace) 809s elif connect is not None: 809s connect -= 1 809s 809s elif error and self._is_read_error(error): 809s # Read retry? 809s if read is False or method is None or not self._is_method_retryable(method): 809s raise reraise(type(error), error, _stacktrace) 809s elif read is not None: 809s read -= 1 809s 809s elif error: 809s # Other retry? 809s if other is not None: 809s other -= 1 809s 809s elif response and response.get_redirect_location(): 809s # Redirect retry? 809s if redirect is not None: 809s redirect -= 1 809s cause = "too many redirects" 809s response_redirect_location = response.get_redirect_location() 809s if response_redirect_location: 809s redirect_location = response_redirect_location 809s status = response.status 809s 809s else: 809s # Incrementing because of a server error like a 500 in 809s # status_forcelist and the given method is in the allowed_methods 809s cause = ResponseError.GENERIC_ERROR 809s if response and response.status: 809s if status_count is not None: 809s status_count -= 1 809s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 809s status = response.status 809s 809s history = self.history + ( 809s RequestHistory(method, url, error, status, redirect_location), 809s ) 809s 809s new_retry = self.new( 809s total=total, 809s connect=connect, 809s read=read, 809s redirect=redirect, 809s status=status_count, 809s other=other, 809s history=history, 809s ) 809s 809s if new_retry.is_exhausted(): 809s reason = error or ResponseError(cause) 809s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 809s 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')) 809s 809s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 809s 809s During handling of the above exception, another exception occurred: 809s 809s def test_encoding_for_model(): 809s > enc = tiktoken.encoding_for_model("gpt2") 809s 809s tests/test_simple_public.py:26: 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 809s return get_encoding(encoding_name_for_model(model_name)) 809s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 809s enc = Encoding(**constructor()) 809s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 809s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 809s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 809s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 809s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 809s contents = read_file(blobpath) 809s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 809s resp = requests.get(blobpath) 809s /usr/lib/python3/dist-packages/requests/api.py:73: in get 809s return request("get", url, params=params, **kwargs) 809s /usr/lib/python3/dist-packages/requests/api.py:59: in request 809s return session.request(method=method, url=url, **kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 809s resp = self.send(prep, **send_kwargs) 809s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 809s r = adapter.send(request, **kwargs) 809s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 809s 809s self = 809s request = , stream = False 809s timeout = Timeout(connect=None, read=None, total=None), verify = True 809s cert = None, proxies = OrderedDict() 809s 809s def send( 809s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 809s ): 809s """Sends PreparedRequest object. Returns Response object. 809s 809s :param request: The :class:`PreparedRequest ` being sent. 809s :param stream: (optional) Whether to stream the request content. 809s :param timeout: (optional) How long to wait for the server to send 809s data before giving up, as a float, or a :ref:`(connect timeout, 809s read timeout) ` tuple. 809s :type timeout: float or tuple or urllib3 Timeout object 809s :param verify: (optional) Either a boolean, in which case it controls whether 809s we verify the server's TLS certificate, or a string, in which case it 809s must be a path to a CA bundle to use 809s :param cert: (optional) Any user-provided SSL certificate to be trusted. 809s :param proxies: (optional) The proxies dictionary to apply to the request. 809s :rtype: requests.Response 809s """ 809s 809s try: 809s conn = self.get_connection_with_tls_context( 809s request, verify, proxies=proxies, cert=cert 809s ) 809s except LocationValueError as e: 809s raise InvalidURL(e, request=request) 809s 809s self.cert_verify(conn, request.url, verify, cert) 809s url = self.request_url(request, proxies) 809s self.add_headers( 809s request, 809s stream=stream, 809s timeout=timeout, 809s verify=verify, 809s cert=cert, 809s proxies=proxies, 809s ) 809s 809s chunked = not (request.body is None or "Content-Length" in request.headers) 809s 809s if isinstance(timeout, tuple): 809s try: 809s connect, read = timeout 809s timeout = TimeoutSauce(connect=connect, read=read) 809s except ValueError: 809s raise ValueError( 809s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 809s f"or a single float to set both timeouts to the same value." 809s ) 809s elif isinstance(timeout, TimeoutSauce): 809s pass 809s else: 809s timeout = TimeoutSauce(connect=timeout, read=timeout) 809s 809s try: 809s resp = conn.urlopen( 809s method=request.method, 809s url=url, 809s body=request.body, 809s headers=request.headers, 809s redirect=False, 809s assert_same_host=False, 809s preload_content=False, 809s decode_content=False, 809s retries=self.max_retries, 809s timeout=timeout, 809s chunked=chunked, 809s ) 809s 809s except (ProtocolError, OSError) as err: 809s raise ConnectionError(err, request=request) 809s 809s except MaxRetryError as e: 809s if isinstance(e.reason, ConnectTimeoutError): 809s # TODO: Remove this in 3.0.0: see #2811 809s if not isinstance(e.reason, NewConnectionError): 809s raise ConnectTimeout(e, request=request) 809s 809s if isinstance(e.reason, ResponseError): 809s raise RetryError(e, request=request) 809s 809s if isinstance(e.reason, _ProxyError): 809s raise ProxyError(e, request=request) 809s 809s if isinstance(e.reason, _SSLError): 809s # This branch is for urllib3 v1.22 and later. 809s raise SSLError(e, request=request) 809s 809s > raise ConnectionError(e, request=request) 809s 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')) 809s 809s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 809s =========================== short test summary info ============================ 809s FAILED tests/test_encoding.py::test_simple - requests.exceptions.ConnectionEr... 809s FAILED tests/test_encoding.py::test_simple_repeated - requests.exceptions.Con... 809s FAILED tests/test_encoding.py::test_simple_regex - requests.exceptions.Connec... 809s FAILED tests/test_encoding.py::test_basic_encode - requests.exceptions.Connec... 809s FAILED tests/test_encoding.py::test_encode_empty - requests.exceptions.Connec... 809s FAILED tests/test_encoding.py::test_encode_bytes - requests.exceptions.Connec... 809s FAILED tests/test_encoding.py::test_encode_surrogate_pairs - requests.excepti... 809s FAILED tests/test_encoding.py::test_catastrophically_repetitive[r50k_base] - ... 809s FAILED tests/test_encoding.py::test_catastrophically_repetitive[cl100k_base] 809s FAILED tests/test_encoding.py::test_basic_roundtrip[r50k_base] - requests.exc... 809s FAILED tests/test_encoding.py::test_basic_roundtrip[cl100k_base] - requests.e... 809s FAILED tests/test_encoding.py::test_hyp_roundtrip[r50k_base] - requests.excep... 809s FAILED tests/test_encoding.py::test_hyp_roundtrip[cl100k_base] - requests.exc... 809s FAILED tests/test_encoding.py::test_single_token_roundtrip[r50k_base] - reque... 809s FAILED tests/test_encoding.py::test_single_token_roundtrip[cl100k_base] - req... 809s FAILED tests/test_encoding.py::test_special_token - requests.exceptions.Conne... 809s FAILED tests/test_encoding.py::test_hyp_special_ordinary[r50k_base] - request... 809s FAILED tests/test_encoding.py::test_hyp_special_ordinary[cl100k_base] - reque... 809s FAILED tests/test_encoding.py::test_batch_encode[r50k_base] - requests.except... 809s FAILED tests/test_encoding.py::test_batch_encode[cl100k_base] - requests.exce... 809s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[r50k_base] - requests... 809s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[cl100k_base] - reques... 809s FAILED tests/test_misc.py::test_encoding_for_model - requests.exceptions.Conn... 809s FAILED tests/test_offsets.py::test_hyp_offsets[cl100k_base] - requests.except... 809s FAILED tests/test_offsets.py::test_basic_offsets - requests.exceptions.Connec... 809s FAILED tests/test_pickle.py::test_pickle - requests.exceptions.ConnectionErro... 809s FAILED tests/test_simple_public.py::test_simple - requests.exceptions.Connect... 809s FAILED tests/test_simple_public.py::test_encoding_for_model - requests.except... 809s ======================== 28 failed, 2 passed in 33.92s ========================= 809s autopkgtest [22:30:40]: test pybuild-autopkgtest: -----------------------] 810s autopkgtest [22:30:41]: test pybuild-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 810s pybuild-autopkgtest FAIL non-zero exit status 25 810s autopkgtest [22:30:41]: @@@@@@@@@@@@@@@@@@@@ summary 810s pybuild-autopkgtest FAIL non-zero exit status 25 814s nova [W] Using flock in prodstack6-ppc64el 814s Creating nova instance adt-plucky-ppc64el-tiktoken-20241123-221711-juju-7f2275-prod-proposed-migration-environment-20-f61a6632-cac1-4435-8b7d-0b22ce822999 from image adt/ubuntu-plucky-ppc64el-server-20241119.img (UUID dcc6a44c-21fb-45bb-821a-d64a8784c175)...