0s autopkgtest [20:31:00]: starting date and time: 2024-11-23 20:31:00+0000 0s autopkgtest [20:31:00]: git checkout: 6408f825 Correct logic in old-systemd fallback code 0s autopkgtest [20:31:00]: host juju-7f2275-prod-proposed-migration-environment-9; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.y5jeuzg5/out --timeout-copy=6000 --setup-commands 'ln -s /dev/null /etc/systemd/system/bluetooth.service; printf "http_proxy=http://squid.internal:3128\nhttps_proxy=http://squid.internal:3128\nno_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\n" >> /etc/environment' --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' -- lxd -r lxd-armhf-10.145.243.242 lxd-armhf-10.145.243.242:autopkgtest/ubuntu/plucky/armhf 54s autopkgtest [20:31:54]: testbed dpkg architecture: armhf 57s autopkgtest [20:31:56]: testbed apt version: 2.9.8 57s autopkgtest [20:31:56]: @@@@@@@@@@@@@@@@@@@@ test bed setup 64s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease [73.9 kB] 64s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/universe Sources [930 kB] 65s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse Sources [13.6 kB] 65s Get:4 http://ftpmaster.internal/ubuntu plucky-proposed/restricted Sources [9704 B] 65s Get:5 http://ftpmaster.internal/ubuntu plucky-proposed/main Sources [54.8 kB] 65s Get:6 http://ftpmaster.internal/ubuntu plucky-proposed/main armhf Packages [63.6 kB] 65s Get:7 http://ftpmaster.internal/ubuntu plucky-proposed/restricted armhf Packages [756 B] 65s Get:8 http://ftpmaster.internal/ubuntu plucky-proposed/universe armhf Packages [727 kB] 65s Get:9 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse armhf Packages [5924 B] 65s Fetched 1879 kB in 1s (2217 kB/s) 65s Reading package lists... 82s tee: /proc/self/fd/2: Permission denied 104s Hit:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease 104s Hit:2 http://ftpmaster.internal/ubuntu plucky InRelease 104s Hit:3 http://ftpmaster.internal/ubuntu plucky-updates InRelease 104s Hit:4 http://ftpmaster.internal/ubuntu plucky-security InRelease 105s Reading package lists... 105s Reading package lists... 106s Building dependency tree... 106s Reading state information... 106s Calculating upgrade... 107s The following packages will be upgraded: 107s bash debconf debconf-i18n libpython3-stdlib python3 python3-blinker 107s python3-debconf python3-minimal vim-common vim-tiny xxd 107s 11 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 107s Need to get 2233 kB of archives. 107s After this operation, 1024 B disk space will be freed. 107s Get:1 http://ftpmaster.internal/ubuntu plucky/main armhf bash armhf 5.2.32-1ubuntu2 [673 kB] 107s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/main armhf python3-minimal armhf 3.12.7-1 [27.4 kB] 107s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/main armhf python3 armhf 3.12.7-1 [24.0 kB] 107s Get:4 http://ftpmaster.internal/ubuntu plucky-proposed/main armhf libpython3-stdlib armhf 3.12.7-1 [10.0 kB] 107s Get:5 http://ftpmaster.internal/ubuntu plucky/main armhf debconf-i18n all 1.5.87ubuntu1 [204 kB] 107s Get:6 http://ftpmaster.internal/ubuntu plucky/main armhf python3-debconf all 1.5.87ubuntu1 [4156 B] 107s Get:7 http://ftpmaster.internal/ubuntu plucky/main armhf debconf all 1.5.87ubuntu1 [124 kB] 107s Get:8 http://ftpmaster.internal/ubuntu plucky/main armhf vim-tiny armhf 2:9.1.0861-1ubuntu1 [694 kB] 107s Get:9 http://ftpmaster.internal/ubuntu plucky/main armhf vim-common all 2:9.1.0861-1ubuntu1 [395 kB] 107s Get:10 http://ftpmaster.internal/ubuntu plucky/main armhf xxd armhf 2:9.1.0861-1ubuntu1 [67.0 kB] 107s Get:11 http://ftpmaster.internal/ubuntu plucky/main armhf python3-blinker all 1.9.0-1 [10.7 kB] 108s Preconfiguring packages ... 108s Fetched 2233 kB in 1s (3340 kB/s) 108s (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 ... 59616 files and directories currently installed.) 108s Preparing to unpack .../bash_5.2.32-1ubuntu2_armhf.deb ... 108s Unpacking bash (5.2.32-1ubuntu2) over (5.2.32-1ubuntu1) ... 108s Setting up bash (5.2.32-1ubuntu2) ... 108s 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 108s (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 ... 59616 files and directories currently installed.) 108s Preparing to unpack .../python3-minimal_3.12.7-1_armhf.deb ... 108s Unpacking python3-minimal (3.12.7-1) over (3.12.6-0ubuntu1) ... 108s Setting up python3-minimal (3.12.7-1) ... 108s (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 ... 59616 files and directories currently installed.) 108s Preparing to unpack .../python3_3.12.7-1_armhf.deb ... 108s Unpacking python3 (3.12.7-1) over (3.12.6-0ubuntu1) ... 108s Preparing to unpack .../libpython3-stdlib_3.12.7-1_armhf.deb ... 108s Unpacking libpython3-stdlib:armhf (3.12.7-1) over (3.12.6-0ubuntu1) ... 108s Preparing to unpack .../debconf-i18n_1.5.87ubuntu1_all.deb ... 108s Unpacking debconf-i18n (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 108s Preparing to unpack .../python3-debconf_1.5.87ubuntu1_all.deb ... 108s Unpacking python3-debconf (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 109s Preparing to unpack .../debconf_1.5.87ubuntu1_all.deb ... 109s Unpacking debconf (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 109s Setting up debconf (1.5.87ubuntu1) ... 109s (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 ... 59616 files and directories currently installed.) 109s Preparing to unpack .../vim-tiny_2%3a9.1.0861-1ubuntu1_armhf.deb ... 109s Unpacking vim-tiny (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 109s Preparing to unpack .../vim-common_2%3a9.1.0861-1ubuntu1_all.deb ... 109s Unpacking vim-common (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 109s Preparing to unpack .../xxd_2%3a9.1.0861-1ubuntu1_armhf.deb ... 109s Unpacking xxd (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 109s Preparing to unpack .../python3-blinker_1.9.0-1_all.deb ... 109s Unpacking python3-blinker (1.9.0-1) over (1.8.2-1) ... 109s Setting up debconf-i18n (1.5.87ubuntu1) ... 109s Setting up xxd (2:9.1.0861-1ubuntu1) ... 109s Setting up vim-common (2:9.1.0861-1ubuntu1) ... 109s Setting up libpython3-stdlib:armhf (3.12.7-1) ... 109s Setting up python3 (3.12.7-1) ... 109s Setting up vim-tiny (2:9.1.0861-1ubuntu1) ... 109s Setting up python3-blinker (1.9.0-1) ... 109s Setting up python3-debconf (1.5.87ubuntu1) ... 110s Processing triggers for debianutils (5.21) ... 110s Processing triggers for install-info (7.1.1-1) ... 110s Processing triggers for man-db (2.13.0-1) ... 111s Reading package lists... 112s Building dependency tree... 112s Reading state information... 112s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 115s autopkgtest [20:32:55]: rebooting testbed after setup commands that affected boot 190s autopkgtest [20:34:10]: testbed running kernel: Linux 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 18:12:14 UTC 2 227s autopkgtest [20:34:47]: @@@@@@@@@@@@@@@@@@@@ apt-source tiktoken 238s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed/universe tiktoken 0.8.0-1build1 (dsc) [2247 B] 238s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/universe tiktoken 0.8.0-1build1 (tar) [31.6 kB] 238s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/universe tiktoken 0.8.0-1build1 (diff) [3908 B] 238s gpgv: Signature made Mon Nov 18 15:38:19 2024 UTC 238s gpgv: using RSA key 25E3FF2D7F469DBE7D0D4E50AFCFEC8E669CE1C2 238s gpgv: Can't check signature: No public key 238s dpkg-source: warning: cannot verify inline signature for ./tiktoken_0.8.0-1build1.dsc: no acceptable signature found 238s autopkgtest [20:34:58]: testing package tiktoken version 0.8.0-1build1 241s autopkgtest [20:35:01]: build not needed 244s autopkgtest [20:35:04]: test pybuild-autopkgtest: preparing testbed 257s Reading package lists... 257s Building dependency tree... 257s Reading state information... 258s Starting pkgProblemResolver with broken count: 0 258s Starting 2 pkgProblemResolver with broken count: 0 258s Done 259s The following additional packages will be installed: 259s autoconf automake autopoint autotools-dev binutils-mingw-w64-i686 259s binutils-mingw-w64-x86-64 build-essential cargo cargo-1.80 cmake cmake-data 259s cpp cpp-14 cpp-14-arm-linux-gnueabihf cpp-arm-linux-gnueabihf debhelper 259s debugedit dh-autoreconf dh-python dh-strip-nondeterminism dwz 259s fontconfig-config fonts-dejavu-core fonts-dejavu-mono g++ g++-14 259s g++-14-arm-linux-gnueabihf g++-arm-linux-gnueabihf gcc gcc-14 259s gcc-14-arm-linux-gnueabihf gcc-arm-linux-gnueabihf gettext intltool-debian 259s libarchive-zip-perl libasan8 libbrotli-dev libbz2-dev libc-dev-bin libc6-dev 259s libcc1-0 libcrypt-dev libdebhelper-perl libexpat1-dev 259s libfile-stripnondeterminism-perl libfontconfig-dev libfontconfig1 259s libfreetype-dev libfreetype6 libgcc-14-dev libgit2-1.7 libgomp1 259s libhttp-parser2.9 libisl23 libjsoncpp25 libllvm18 libllvm19 libmpc3 libpfm4 259s libpkgconf3 libpng-dev libpython3-all-dev libpython3-dev libpython3.12-dev 259s libpython3.12t64 libpython3.13 libpython3.13-dev libpython3.13-minimal 259s libpython3.13-stdlib librhash0 librust-ab-glyph-dev 259s librust-ab-glyph-rasterizer+libm-dev librust-ab-glyph-rasterizer-dev 259s librust-addr2line-dev librust-adler-dev librust-ahash-dev 259s librust-aho-corasick-dev librust-allocator-api2-dev librust-anes-dev 259s librust-anstream-dev librust-anstyle-dev librust-anstyle-parse-dev 259s librust-anstyle-query-dev librust-anyhow-dev librust-approx-dev 259s librust-arbitrary-dev librust-array-init-dev librust-arrayvec-dev 259s librust-async-attributes-dev librust-async-channel-dev 259s librust-async-executor-dev librust-async-fs-dev 259s librust-async-global-executor-dev librust-async-io-dev 259s librust-async-lock-dev librust-async-net-dev librust-async-process-dev 259s librust-async-signal-dev librust-async-std-dev librust-async-task-dev 259s librust-atomic-dev librust-atomic-waker-dev librust-autocfg-dev 259s librust-backtrace-dev librust-base64-dev librust-bit-set+std-dev 259s librust-bit-set-dev librust-bit-vec-dev librust-bitflags-1-dev 259s librust-bitflags-dev librust-bitvec-dev librust-blobby-dev 259s librust-block-buffer-dev librust-blocking-dev librust-bstr-dev 259s librust-bumpalo-dev librust-bytecheck-derive-dev librust-bytecheck-dev 259s librust-bytemuck-derive-dev librust-bytemuck-dev librust-byteorder-dev 259s librust-bytes-dev librust-cast-dev librust-cc-dev librust-cfg-if-0.1-dev 259s librust-cfg-if-dev librust-chrono-dev librust-chrono-tz-build-dev 259s librust-chrono-tz-dev librust-ciborium-dev librust-ciborium-io-dev 259s librust-ciborium-ll-dev librust-clap-builder-dev librust-clap-derive-dev 259s librust-clap-dev librust-clap-lex-dev librust-cmake-dev 259s librust-color-quant-dev librust-colorchoice-dev 259s librust-compiler-builtins+core-dev 259s librust-compiler-builtins+rustc-dep-of-std-dev librust-compiler-builtins-dev 259s librust-concurrent-queue-dev librust-const-cstr-dev librust-const-oid-dev 259s librust-const-random-dev librust-const-random-macro-dev 259s librust-convert-case-dev librust-core-maths-dev librust-cpp-demangle-dev 259s librust-cpufeatures-dev librust-crc32fast-dev librust-criterion-dev 259s librust-critical-section-dev librust-crossbeam-deque-dev 259s librust-crossbeam-epoch+std-dev librust-crossbeam-epoch-dev 259s librust-crossbeam-utils-dev librust-crunchy-dev librust-crypto-common-dev 259s librust-csv-core-dev librust-csv-dev librust-ctor-dev librust-deranged-dev 259s librust-derive-arbitrary-dev librust-derive-more-0.99-dev librust-digest-dev 259s librust-dirs-next-dev librust-dirs-sys-next-dev librust-dlib-dev 259s librust-either-dev librust-env-logger-dev librust-equivalent-dev 259s librust-erased-serde-dev librust-errno-dev librust-eui48-dev 259s librust-event-listener-dev librust-event-listener-strategy-dev 259s librust-eyre+default-dev librust-eyre-dev librust-fallible-iterator-dev 259s librust-fancy-regex-dev librust-fastrand-dev librust-flate2-dev 259s librust-float-ord-dev librust-fnv-dev librust-font-kit-dev 259s librust-freetype-dev librust-freetype-sys-dev librust-funty-dev 259s librust-futures-channel-dev librust-futures-core-dev librust-futures-dev 259s librust-futures-executor-dev librust-futures-io-dev librust-futures-lite-dev 259s librust-futures-macro-dev librust-futures-sink-dev librust-futures-task-dev 259s librust-futures-util-dev librust-generic-array-dev librust-geo-types-dev 259s librust-getrandom-dev librust-ghost-dev librust-gif-dev librust-gimli-dev 259s librust-half-dev librust-hashbrown-dev librust-heck-dev librust-hmac-dev 259s librust-humantime-dev librust-iana-time-zone-dev librust-image-dev 259s librust-indenter-dev librust-indexmap-dev librust-indoc-dev 259s librust-inventory-dev librust-is-terminal-dev librust-itertools-dev 259s librust-itoa-dev librust-jobserver-dev librust-jpeg-decoder-dev 259s librust-js-sys-dev librust-kv-log-macro-dev librust-lazy-static-dev 259s librust-libc-dev librust-libloading-dev librust-libm-dev 259s librust-libwebp-sys-dev librust-libz-sys-dev librust-linux-raw-sys-dev 259s librust-lock-api-dev librust-log-dev librust-md-5-dev librust-md5-asm-dev 259s librust-memchr-dev librust-memmap2-dev librust-memoffset-dev 259s librust-miniz-oxide-dev librust-mio-dev librust-no-panic-dev 259s librust-num-bigint-dev librust-num-complex-dev librust-num-conv-dev 259s librust-num-cpus-dev librust-num-integer-dev librust-num-rational-dev 259s librust-num-threads-dev librust-num-traits-dev librust-object-dev 259s librust-once-cell-dev librust-oorandom-dev librust-owned-ttf-parser-dev 259s librust-owning-ref-dev librust-parking-dev librust-parking-lot-core-dev 259s librust-parking-lot-dev librust-parse-zoneinfo-dev 259s librust-pathfinder-geometry-dev librust-pathfinder-simd-dev 259s librust-phf+uncased-dev librust-phf-codegen-dev librust-phf-dev 259s librust-phf-generator-dev librust-phf-shared+uncased-dev 259s librust-phf-shared-dev librust-pin-project-lite-dev librust-pin-utils-dev 259s librust-pkg-config-dev librust-plotters-backend-dev 259s librust-plotters-bitmap-dev librust-plotters-dev librust-plotters-svg-dev 259s librust-png-dev librust-polling-dev librust-portable-atomic-dev 259s librust-postgres-derive-dev librust-postgres-protocol-dev 259s librust-postgres-types-dev librust-powerfmt-dev librust-powerfmt-macros-dev 259s librust-ppv-lite86-dev librust-proc-macro2-dev librust-proptest-dev 259s librust-ptr-meta-derive-dev librust-ptr-meta-dev 259s librust-pure-rust-locales-dev librust-pyo3-build-config-dev librust-pyo3-dev 259s librust-pyo3-ffi-dev librust-pyo3-macros-backend-dev librust-pyo3-macros-dev 259s librust-python3-dll-a-dev librust-qoi-dev librust-quick-error-dev 259s librust-quickcheck-dev librust-quote-dev librust-radium-dev 259s librust-rand-chacha-dev librust-rand-core+getrandom-dev 259s librust-rand-core+serde-dev librust-rand-core+std-dev librust-rand-core-dev 259s librust-rand-dev librust-rand-xorshift-dev librust-rayon-core-dev 259s librust-rayon-dev librust-regex-automata-dev librust-regex-dev 259s librust-regex-syntax-dev librust-rend-dev librust-rkyv-derive-dev 259s librust-rkyv-dev librust-rust-decimal-dev librust-rustc-demangle-dev 259s librust-rustc-hash-dev librust-rustc-std-workspace-core-dev 259s librust-rustc-version-dev librust-rustix-dev 259s librust-rusty-fork+wait-timeout-dev librust-rusty-fork-dev 259s librust-ruzstd-dev librust-ryu-dev librust-same-file-dev 259s librust-scopeguard-dev librust-seahash-dev librust-semver-dev 259s librust-serde-derive-dev librust-serde-dev librust-serde-fmt-dev 259s librust-serde-json-dev librust-serde-test-dev librust-sha1-asm-dev 259s librust-sha1-dev librust-sha2-asm-dev librust-sha2-dev librust-shlex-dev 259s librust-signal-hook-registry-dev librust-simdutf8-dev librust-siphasher-dev 259s librust-slab-dev librust-slog-dev librust-smallvec-dev librust-smol-dev 259s librust-smol-str-dev librust-socket2-dev librust-spin-dev 259s librust-stable-deref-trait-dev librust-static-assertions-dev 259s librust-stringprep-dev librust-strsim-dev librust-subtle-dev 259s librust-sval-buffer-dev librust-sval-derive-dev librust-sval-dev 259s librust-sval-dynamic-dev librust-sval-fmt-dev librust-sval-ref-dev 259s librust-sval-serde-dev librust-syn-1-dev librust-syn-dev librust-tap-dev 259s librust-target-lexicon-dev librust-tempfile-dev librust-termcolor-dev 259s librust-terminal-size-dev librust-tiff-dev librust-time-core-dev 259s librust-time-dev librust-time-macros-dev librust-tiny-keccak-dev 259s librust-tinytemplate-dev librust-tinyvec+tinyvec-macros-dev 259s librust-tinyvec-dev librust-tinyvec-macros-dev librust-tokio-dev 259s librust-tokio-macros-dev librust-tracing-attributes-dev 259s librust-tracing-core-dev librust-tracing-dev librust-traitobject-dev 259s librust-ttf-parser-dev librust-twox-hash-dev librust-typemap-dev 259s librust-typenum-dev librust-unarray-dev librust-uncased-dev 259s librust-unicase-dev librust-unicode-bidi-dev librust-unicode-ident-dev 259s librust-unicode-normalization-dev librust-unicode-segmentation-dev 259s librust-unicode-width-dev librust-unindent-dev librust-unsafe-any-dev 259s librust-utf8parse-dev librust-uuid-dev librust-valuable-derive-dev 259s librust-valuable-dev librust-value-bag-dev librust-value-bag-serde1-dev 259s librust-value-bag-sval2-dev librust-version-check-dev 259s librust-wait-timeout-dev librust-walkdir-dev 259s librust-wasm-bindgen+default-dev librust-wasm-bindgen+spans-dev 259s librust-wasm-bindgen-backend-dev librust-wasm-bindgen-dev 259s librust-wasm-bindgen-macro+spans-dev librust-wasm-bindgen-macro-dev 259s librust-wasm-bindgen-macro-support+spans-dev 259s librust-wasm-bindgen-macro-support-dev librust-wasm-bindgen-shared-dev 259s librust-web-sys-dev librust-webp-dev librust-weezl-dev librust-winapi-dev 259s librust-winapi-i686-pc-windows-gnu-dev librust-winapi-util-dev 259s librust-winapi-x86-64-pc-windows-gnu-dev librust-wyz-dev 259s librust-yeslogic-fontconfig-sys-dev librust-zerocopy-derive-dev 259s librust-zerocopy-dev librust-zeroize-derive-dev librust-zeroize-dev 259s libsharpyuv-dev libsharpyuv0 libstd-rust-1.80 libstd-rust-1.80-dev 259s libstdc++-14-dev libtool libubsan1 libwebp-dev libwebp7 libwebpdecoder3 259s libwebpdemux2 libwebpmux3 linux-libc-dev llvm llvm-19 llvm-19-linker-tools 259s llvm-19-runtime llvm-runtime m4 pkg-config pkgconf pkgconf-bin po-debconf 259s pybuild-plugin-autopkgtest pybuild-plugin-pyproject python3-all 259s python3-build python3-dateutil python3-hypothesis python3-iniconfig 259s python3-installer python3-packaging python3-pluggy python3-pyproject-hooks 259s python3-pytest python3-regex python3-semantic-version 259s python3-setuptools-rust python3-sortedcontainers python3-tiktoken 259s python3-toml python3-wheel python3.12-dev python3.13 python3.13-minimal 259s rpcsvc-proto rustc rustc-1.80 uuid-dev zlib1g-dev 259s Suggested packages: 259s autoconf-archive gnu-standards autoconf-doc cargo-1.80-doc cmake-doc 259s cmake-format elpa-cmake-mode ninja-build cpp-doc gcc-14-locales cpp-14-doc 259s dh-make flit gcc-14-doc gcc-multilib manpages-dev flex bison gdb gcc-doc 259s gdb-arm-linux-gnueabihf gettext-doc libasprintf-dev libgettextpo-dev 259s libc-devtools glibc-doc freetype2-doc librust-adler+compiler-builtins-dev 259s librust-adler+core-dev librust-adler+rustc-dep-of-std-dev 259s librust-backtrace+cpp-demangle-dev librust-backtrace+rustc-serialize-dev 259s librust-backtrace+serde-dev librust-backtrace+verify-winapi-dev 259s librust-backtrace+winapi-dev librust-cfg-if-0.1+core-dev 259s librust-cfg-if+core-dev librust-compiler-builtins+c-dev gnuplot-nox 259s librust-csv-core+libc-dev librust-either+serde-dev 259s librust-getrandom+compiler-builtins-dev librust-getrandom+core-dev 259s librust-getrandom+rustc-dep-of-std-dev librust-libc+rustc-dep-of-std-dev 259s librust-libc+rustc-std-workspace-core-dev librust-phf+phf-macros-dev 259s librust-phf+serde-dev librust-phf+unicase-dev librust-phf-shared+unicase-dev 259s librust-rand-xorshift+serde-dev librust-rustc-demangle+compiler-builtins-dev 259s librust-rustc-demangle+core-dev librust-rustc-demangle+rustc-dep-of-std-dev 259s librust-ryu+no-panic-dev librust-slog+erased-serde-dev 259s librust-tinyvec+arbitrary-dev librust-tinyvec+serde-dev 259s librust-uncased+serde-dev librust-uncased+with-serde-alloc-dev 259s librust-wasm-bindgen-backend+extra-traits-dev librust-wasm-bindgen+serde-dev 259s librust-wasm-bindgen+serde-serialize-dev librust-wasm-bindgen+serde-json-dev 259s librust-wasm-bindgen+strict-macro-dev 259s librust-wasm-bindgen+xxx-debug-only-print-generated-code-dev 259s librust-wasm-bindgen-macro+strict-macro-dev 259s librust-wasm-bindgen-macro-support+extra-traits-dev librust-weezl+async-dev 259s librust-weezl+futures-dev libstdc++-14-doc libtool-doc gfortran 259s | fortran95-compiler gcj-jdk llvm-19-doc m4-doc libmail-box-perl python3-pip 259s python3-venv python-build-doc python-hypothesis-doc python-installer-doc 259s python-semantic-version-doc python-sortedcontainers-doc python3.13-venv 259s python3.13-doc binfmt-support llvm-18 lld-18 clang-18 259s Recommended packages: 259s bzip2-doc manpages manpages-dev libarchive-cpio-perl libpng-tools libssl3 259s librust-phf+std-dev librust-subtle+default-dev libltdl-dev llvm-19-dev 259s libmail-sendmail-perl python3-click 259s The following NEW packages will be installed: 259s autoconf automake autopkgtest-satdep autopoint autotools-dev 259s binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 build-essential cargo 259s cargo-1.80 cmake cmake-data cpp cpp-14 cpp-14-arm-linux-gnueabihf 259s cpp-arm-linux-gnueabihf debhelper debugedit dh-autoreconf dh-python 259s dh-strip-nondeterminism dwz fontconfig-config fonts-dejavu-core 259s fonts-dejavu-mono g++ g++-14 g++-14-arm-linux-gnueabihf 259s g++-arm-linux-gnueabihf gcc gcc-14 gcc-14-arm-linux-gnueabihf 259s gcc-arm-linux-gnueabihf gettext intltool-debian libarchive-zip-perl libasan8 259s libbrotli-dev libbz2-dev libc-dev-bin libc6-dev libcc1-0 libcrypt-dev 259s libdebhelper-perl libexpat1-dev libfile-stripnondeterminism-perl 259s libfontconfig-dev libfontconfig1 libfreetype-dev libfreetype6 libgcc-14-dev 259s libgit2-1.7 libgomp1 libhttp-parser2.9 libisl23 libjsoncpp25 libllvm18 259s libllvm19 libmpc3 libpfm4 libpkgconf3 libpng-dev libpython3-all-dev 259s libpython3-dev libpython3.12-dev libpython3.12t64 libpython3.13 259s libpython3.13-dev libpython3.13-minimal libpython3.13-stdlib librhash0 259s librust-ab-glyph-dev librust-ab-glyph-rasterizer+libm-dev 259s librust-ab-glyph-rasterizer-dev librust-addr2line-dev librust-adler-dev 259s librust-ahash-dev librust-aho-corasick-dev librust-allocator-api2-dev 259s librust-anes-dev librust-anstream-dev librust-anstyle-dev 259s librust-anstyle-parse-dev librust-anstyle-query-dev librust-anyhow-dev 259s librust-approx-dev librust-arbitrary-dev librust-array-init-dev 259s librust-arrayvec-dev librust-async-attributes-dev librust-async-channel-dev 259s librust-async-executor-dev librust-async-fs-dev 259s librust-async-global-executor-dev librust-async-io-dev 259s librust-async-lock-dev librust-async-net-dev librust-async-process-dev 259s librust-async-signal-dev librust-async-std-dev librust-async-task-dev 259s librust-atomic-dev librust-atomic-waker-dev librust-autocfg-dev 259s librust-backtrace-dev librust-base64-dev librust-bit-set+std-dev 259s librust-bit-set-dev librust-bit-vec-dev librust-bitflags-1-dev 259s librust-bitflags-dev librust-bitvec-dev librust-blobby-dev 259s librust-block-buffer-dev librust-blocking-dev librust-bstr-dev 259s librust-bumpalo-dev librust-bytecheck-derive-dev librust-bytecheck-dev 259s librust-bytemuck-derive-dev librust-bytemuck-dev librust-byteorder-dev 259s librust-bytes-dev librust-cast-dev librust-cc-dev librust-cfg-if-0.1-dev 259s librust-cfg-if-dev librust-chrono-dev librust-chrono-tz-build-dev 259s librust-chrono-tz-dev librust-ciborium-dev librust-ciborium-io-dev 259s librust-ciborium-ll-dev librust-clap-builder-dev librust-clap-derive-dev 259s librust-clap-dev librust-clap-lex-dev librust-cmake-dev 259s librust-color-quant-dev librust-colorchoice-dev 259s librust-compiler-builtins+core-dev 259s librust-compiler-builtins+rustc-dep-of-std-dev librust-compiler-builtins-dev 259s librust-concurrent-queue-dev librust-const-cstr-dev librust-const-oid-dev 259s librust-const-random-dev librust-const-random-macro-dev 259s librust-convert-case-dev librust-core-maths-dev librust-cpp-demangle-dev 259s librust-cpufeatures-dev librust-crc32fast-dev librust-criterion-dev 259s librust-critical-section-dev librust-crossbeam-deque-dev 259s librust-crossbeam-epoch+std-dev librust-crossbeam-epoch-dev 259s librust-crossbeam-utils-dev librust-crunchy-dev librust-crypto-common-dev 259s librust-csv-core-dev librust-csv-dev librust-ctor-dev librust-deranged-dev 259s librust-derive-arbitrary-dev librust-derive-more-0.99-dev librust-digest-dev 259s librust-dirs-next-dev librust-dirs-sys-next-dev librust-dlib-dev 259s librust-either-dev librust-env-logger-dev librust-equivalent-dev 259s librust-erased-serde-dev librust-errno-dev librust-eui48-dev 259s librust-event-listener-dev librust-event-listener-strategy-dev 259s librust-eyre+default-dev librust-eyre-dev librust-fallible-iterator-dev 259s librust-fancy-regex-dev librust-fastrand-dev librust-flate2-dev 259s librust-float-ord-dev librust-fnv-dev librust-font-kit-dev 259s librust-freetype-dev librust-freetype-sys-dev librust-funty-dev 259s librust-futures-channel-dev librust-futures-core-dev librust-futures-dev 259s librust-futures-executor-dev librust-futures-io-dev librust-futures-lite-dev 259s librust-futures-macro-dev librust-futures-sink-dev librust-futures-task-dev 259s librust-futures-util-dev librust-generic-array-dev librust-geo-types-dev 259s librust-getrandom-dev librust-ghost-dev librust-gif-dev librust-gimli-dev 259s librust-half-dev librust-hashbrown-dev librust-heck-dev librust-hmac-dev 259s librust-humantime-dev librust-iana-time-zone-dev librust-image-dev 259s librust-indenter-dev librust-indexmap-dev librust-indoc-dev 259s librust-inventory-dev librust-is-terminal-dev librust-itertools-dev 259s librust-itoa-dev librust-jobserver-dev librust-jpeg-decoder-dev 259s librust-js-sys-dev librust-kv-log-macro-dev librust-lazy-static-dev 259s librust-libc-dev librust-libloading-dev librust-libm-dev 259s librust-libwebp-sys-dev librust-libz-sys-dev librust-linux-raw-sys-dev 259s librust-lock-api-dev librust-log-dev librust-md-5-dev librust-md5-asm-dev 259s librust-memchr-dev librust-memmap2-dev librust-memoffset-dev 259s librust-miniz-oxide-dev librust-mio-dev librust-no-panic-dev 259s librust-num-bigint-dev librust-num-complex-dev librust-num-conv-dev 259s librust-num-cpus-dev librust-num-integer-dev librust-num-rational-dev 259s librust-num-threads-dev librust-num-traits-dev librust-object-dev 259s librust-once-cell-dev librust-oorandom-dev librust-owned-ttf-parser-dev 259s librust-owning-ref-dev librust-parking-dev librust-parking-lot-core-dev 259s librust-parking-lot-dev librust-parse-zoneinfo-dev 259s librust-pathfinder-geometry-dev librust-pathfinder-simd-dev 259s librust-phf+uncased-dev librust-phf-codegen-dev librust-phf-dev 259s librust-phf-generator-dev librust-phf-shared+uncased-dev 259s librust-phf-shared-dev librust-pin-project-lite-dev librust-pin-utils-dev 259s librust-pkg-config-dev librust-plotters-backend-dev 259s librust-plotters-bitmap-dev librust-plotters-dev librust-plotters-svg-dev 259s librust-png-dev librust-polling-dev librust-portable-atomic-dev 259s librust-postgres-derive-dev librust-postgres-protocol-dev 259s librust-postgres-types-dev librust-powerfmt-dev librust-powerfmt-macros-dev 259s librust-ppv-lite86-dev librust-proc-macro2-dev librust-proptest-dev 259s librust-ptr-meta-derive-dev librust-ptr-meta-dev 259s librust-pure-rust-locales-dev librust-pyo3-build-config-dev librust-pyo3-dev 259s librust-pyo3-ffi-dev librust-pyo3-macros-backend-dev librust-pyo3-macros-dev 259s librust-python3-dll-a-dev librust-qoi-dev librust-quick-error-dev 259s librust-quickcheck-dev librust-quote-dev librust-radium-dev 259s librust-rand-chacha-dev librust-rand-core+getrandom-dev 259s librust-rand-core+serde-dev librust-rand-core+std-dev librust-rand-core-dev 259s librust-rand-dev librust-rand-xorshift-dev librust-rayon-core-dev 259s librust-rayon-dev librust-regex-automata-dev librust-regex-dev 259s librust-regex-syntax-dev librust-rend-dev librust-rkyv-derive-dev 259s librust-rkyv-dev librust-rust-decimal-dev librust-rustc-demangle-dev 259s librust-rustc-hash-dev librust-rustc-std-workspace-core-dev 259s librust-rustc-version-dev librust-rustix-dev 259s librust-rusty-fork+wait-timeout-dev librust-rusty-fork-dev 259s librust-ruzstd-dev librust-ryu-dev librust-same-file-dev 259s librust-scopeguard-dev librust-seahash-dev librust-semver-dev 259s librust-serde-derive-dev librust-serde-dev librust-serde-fmt-dev 259s librust-serde-json-dev librust-serde-test-dev librust-sha1-asm-dev 259s librust-sha1-dev librust-sha2-asm-dev librust-sha2-dev librust-shlex-dev 259s librust-signal-hook-registry-dev librust-simdutf8-dev librust-siphasher-dev 259s librust-slab-dev librust-slog-dev librust-smallvec-dev librust-smol-dev 259s librust-smol-str-dev librust-socket2-dev librust-spin-dev 259s librust-stable-deref-trait-dev librust-static-assertions-dev 259s librust-stringprep-dev librust-strsim-dev librust-subtle-dev 259s librust-sval-buffer-dev librust-sval-derive-dev librust-sval-dev 259s librust-sval-dynamic-dev librust-sval-fmt-dev librust-sval-ref-dev 259s librust-sval-serde-dev librust-syn-1-dev librust-syn-dev librust-tap-dev 259s librust-target-lexicon-dev librust-tempfile-dev librust-termcolor-dev 259s librust-terminal-size-dev librust-tiff-dev librust-time-core-dev 259s librust-time-dev librust-time-macros-dev librust-tiny-keccak-dev 259s librust-tinytemplate-dev librust-tinyvec+tinyvec-macros-dev 259s librust-tinyvec-dev librust-tinyvec-macros-dev librust-tokio-dev 259s librust-tokio-macros-dev librust-tracing-attributes-dev 259s librust-tracing-core-dev librust-tracing-dev librust-traitobject-dev 259s librust-ttf-parser-dev librust-twox-hash-dev librust-typemap-dev 259s librust-typenum-dev librust-unarray-dev librust-uncased-dev 259s librust-unicase-dev librust-unicode-bidi-dev librust-unicode-ident-dev 259s librust-unicode-normalization-dev librust-unicode-segmentation-dev 259s librust-unicode-width-dev librust-unindent-dev librust-unsafe-any-dev 259s librust-utf8parse-dev librust-uuid-dev librust-valuable-derive-dev 259s librust-valuable-dev librust-value-bag-dev librust-value-bag-serde1-dev 259s librust-value-bag-sval2-dev librust-version-check-dev 259s librust-wait-timeout-dev librust-walkdir-dev 259s librust-wasm-bindgen+default-dev librust-wasm-bindgen+spans-dev 259s librust-wasm-bindgen-backend-dev librust-wasm-bindgen-dev 259s librust-wasm-bindgen-macro+spans-dev librust-wasm-bindgen-macro-dev 259s librust-wasm-bindgen-macro-support+spans-dev 259s librust-wasm-bindgen-macro-support-dev librust-wasm-bindgen-shared-dev 259s librust-web-sys-dev librust-webp-dev librust-weezl-dev librust-winapi-dev 259s librust-winapi-i686-pc-windows-gnu-dev librust-winapi-util-dev 259s librust-winapi-x86-64-pc-windows-gnu-dev librust-wyz-dev 259s librust-yeslogic-fontconfig-sys-dev librust-zerocopy-derive-dev 259s librust-zerocopy-dev librust-zeroize-derive-dev librust-zeroize-dev 259s libsharpyuv-dev libsharpyuv0 libstd-rust-1.80 libstd-rust-1.80-dev 259s libstdc++-14-dev libtool libubsan1 libwebp-dev libwebp7 libwebpdecoder3 259s libwebpdemux2 libwebpmux3 linux-libc-dev llvm llvm-19 llvm-19-linker-tools 259s llvm-19-runtime llvm-runtime m4 pkg-config pkgconf pkgconf-bin po-debconf 259s pybuild-plugin-autopkgtest pybuild-plugin-pyproject python3-all 259s python3-build python3-dateutil python3-hypothesis python3-iniconfig 259s python3-installer python3-packaging python3-pluggy python3-pyproject-hooks 259s python3-pytest python3-regex python3-semantic-version 259s python3-setuptools-rust python3-sortedcontainers python3-tiktoken 259s python3-toml python3-wheel python3.12-dev python3.13 python3.13-minimal 259s rpcsvc-proto rustc rustc-1.80 uuid-dev zlib1g-dev 259s 0 upgraded, 478 newly installed, 0 to remove and 0 not upgraded. 259s Need to get 259 MB/259 MB of archives. 259s After this operation, 1000 MB of additional disk space will be used. 259s Get:1 /tmp/autopkgtest.e6n6Yl/1-autopkgtest-satdep.deb autopkgtest-satdep armhf 0 [864 B] 259s Get:2 http://ftpmaster.internal/ubuntu plucky/main armhf libpython3.13-minimal armhf 3.13.0-2 [866 kB] 260s Get:3 http://ftpmaster.internal/ubuntu plucky/main armhf python3.13-minimal armhf 3.13.0-2 [1854 kB] 260s Get:4 http://ftpmaster.internal/ubuntu plucky/main armhf m4 armhf 1.4.19-4build1 [235 kB] 260s Get:5 http://ftpmaster.internal/ubuntu plucky/main armhf autoconf all 2.72-3 [382 kB] 260s Get:6 http://ftpmaster.internal/ubuntu plucky/main armhf autotools-dev all 20220109.1 [44.9 kB] 260s Get:7 http://ftpmaster.internal/ubuntu plucky/main armhf automake all 1:1.16.5-1.3ubuntu1 [558 kB] 260s Get:8 http://ftpmaster.internal/ubuntu plucky/main armhf autopoint all 0.22.5-2 [616 kB] 260s Get:9 http://ftpmaster.internal/ubuntu plucky/main armhf libc-dev-bin armhf 2.40-1ubuntu3 [19.2 kB] 260s Get:10 http://ftpmaster.internal/ubuntu plucky/main armhf linux-libc-dev armhf 6.11.0-8.8 [1628 kB] 260s Get:11 http://ftpmaster.internal/ubuntu plucky/main armhf libcrypt-dev armhf 1:4.4.36-5 [119 kB] 260s Get:12 http://ftpmaster.internal/ubuntu plucky/main armhf rpcsvc-proto armhf 1.4.2-0ubuntu7 [62.2 kB] 260s Get:13 http://ftpmaster.internal/ubuntu plucky/main armhf libc6-dev armhf 2.40-1ubuntu3 [1370 kB] 260s Get:14 http://ftpmaster.internal/ubuntu plucky/main armhf libisl23 armhf 0.27-1 [546 kB] 260s Get:15 http://ftpmaster.internal/ubuntu plucky/main armhf libmpc3 armhf 1.3.1-1build2 [47.1 kB] 260s Get:16 http://ftpmaster.internal/ubuntu plucky/main armhf cpp-14-arm-linux-gnueabihf armhf 14.2.0-8ubuntu1 [9219 kB] 260s Get:17 http://ftpmaster.internal/ubuntu plucky/main armhf cpp-14 armhf 14.2.0-8ubuntu1 [1032 B] 260s Get:18 http://ftpmaster.internal/ubuntu plucky/main armhf cpp-arm-linux-gnueabihf armhf 4:14.1.0-2ubuntu1 [5464 B] 260s Get:19 http://ftpmaster.internal/ubuntu plucky/main armhf cpp armhf 4:14.1.0-2ubuntu1 [22.4 kB] 260s Get:20 http://ftpmaster.internal/ubuntu plucky/main armhf libcc1-0 armhf 14.2.0-8ubuntu1 [43.3 kB] 260s Get:21 http://ftpmaster.internal/ubuntu plucky/main armhf libgomp1 armhf 14.2.0-8ubuntu1 [125 kB] 260s Get:22 http://ftpmaster.internal/ubuntu plucky/main armhf libasan8 armhf 14.2.0-8ubuntu1 [2901 kB] 260s Get:23 http://ftpmaster.internal/ubuntu plucky/main armhf libubsan1 armhf 14.2.0-8ubuntu1 [1150 kB] 260s Get:24 http://ftpmaster.internal/ubuntu plucky/main armhf libgcc-14-dev armhf 14.2.0-8ubuntu1 [897 kB] 260s Get:25 http://ftpmaster.internal/ubuntu plucky/main armhf gcc-14-arm-linux-gnueabihf armhf 14.2.0-8ubuntu1 [18.0 MB] 261s Get:26 http://ftpmaster.internal/ubuntu plucky/main armhf gcc-14 armhf 14.2.0-8ubuntu1 [498 kB] 261s Get:27 http://ftpmaster.internal/ubuntu plucky/main armhf gcc-arm-linux-gnueabihf armhf 4:14.1.0-2ubuntu1 [1222 B] 261s Get:28 http://ftpmaster.internal/ubuntu plucky/main armhf gcc armhf 4:14.1.0-2ubuntu1 [5002 B] 261s Get:29 http://ftpmaster.internal/ubuntu plucky/main armhf libstdc++-14-dev armhf 14.2.0-8ubuntu1 [2569 kB] 261s Get:30 http://ftpmaster.internal/ubuntu plucky/main armhf g++-14-arm-linux-gnueabihf armhf 14.2.0-8ubuntu1 [10.5 MB] 261s Get:31 http://ftpmaster.internal/ubuntu plucky/main armhf g++-14 armhf 14.2.0-8ubuntu1 [19.9 kB] 261s Get:32 http://ftpmaster.internal/ubuntu plucky/main armhf g++-arm-linux-gnueabihf armhf 4:14.1.0-2ubuntu1 [968 B] 261s Get:33 http://ftpmaster.internal/ubuntu plucky/main armhf g++ armhf 4:14.1.0-2ubuntu1 [1084 B] 261s Get:34 http://ftpmaster.internal/ubuntu plucky/main armhf build-essential armhf 12.10ubuntu1 [4928 B] 261s Get:35 http://ftpmaster.internal/ubuntu plucky/main armhf libhttp-parser2.9 armhf 2.9.4-6build1 [21.1 kB] 261s Get:36 http://ftpmaster.internal/ubuntu plucky/main armhf libgit2-1.7 armhf 1.7.2+ds-1ubuntu3 [444 kB] 261s Get:37 http://ftpmaster.internal/ubuntu plucky/main armhf libllvm18 armhf 1:18.1.8-12 [26.6 MB] 262s Get:38 http://ftpmaster.internal/ubuntu plucky/main armhf libstd-rust-1.80 armhf 1.80.1+dfsg0ubuntu1-0ubuntu1 [19.7 MB] 262s Get:39 http://ftpmaster.internal/ubuntu plucky/main armhf libstd-rust-1.80-dev armhf 1.80.1+dfsg0ubuntu1-0ubuntu1 [39.9 MB] 263s Get:40 http://ftpmaster.internal/ubuntu plucky/main armhf rustc-1.80 armhf 1.80.1+dfsg0ubuntu1-0ubuntu1 [3081 kB] 264s Get:41 http://ftpmaster.internal/ubuntu plucky/main armhf cargo-1.80 armhf 1.80.1+dfsg0ubuntu1-0ubuntu1 [5646 kB] 264s Get:42 http://ftpmaster.internal/ubuntu plucky/main armhf libjsoncpp25 armhf 1.9.5-6build1 [75.3 kB] 264s Get:43 http://ftpmaster.internal/ubuntu plucky/main armhf librhash0 armhf 1.4.3-3build1 [143 kB] 264s Get:44 http://ftpmaster.internal/ubuntu plucky/main armhf cmake-data all 3.30.3-1 [2246 kB] 264s Get:45 http://ftpmaster.internal/ubuntu plucky/main armhf cmake armhf 3.30.3-1 [6319 kB] 264s Get:46 http://ftpmaster.internal/ubuntu plucky/main armhf libdebhelper-perl all 13.20ubuntu1 [94.2 kB] 264s Get:47 http://ftpmaster.internal/ubuntu plucky/main armhf libtool all 2.4.7-8 [166 kB] 264s Get:48 http://ftpmaster.internal/ubuntu plucky/main armhf dh-autoreconf all 20 [16.1 kB] 264s Get:49 http://ftpmaster.internal/ubuntu plucky/main armhf libarchive-zip-perl all 1.68-1 [90.2 kB] 264s Get:50 http://ftpmaster.internal/ubuntu plucky/main armhf libfile-stripnondeterminism-perl all 1.14.0-1 [20.1 kB] 264s Get:51 http://ftpmaster.internal/ubuntu plucky/main armhf dh-strip-nondeterminism all 1.14.0-1 [5058 B] 264s Get:52 http://ftpmaster.internal/ubuntu plucky/main armhf debugedit armhf 1:5.1-1 [46.5 kB] 264s Get:53 http://ftpmaster.internal/ubuntu plucky/main armhf dwz armhf 0.15-1build6 [116 kB] 264s Get:54 http://ftpmaster.internal/ubuntu plucky/main armhf gettext armhf 0.22.5-2 [995 kB] 264s Get:55 http://ftpmaster.internal/ubuntu plucky/main armhf intltool-debian all 0.35.0+20060710.6 [23.2 kB] 264s Get:56 http://ftpmaster.internal/ubuntu plucky/main armhf po-debconf all 1.0.21+nmu1 [233 kB] 264s Get:57 http://ftpmaster.internal/ubuntu plucky/main armhf debhelper all 13.20ubuntu1 [893 kB] 264s Get:58 http://ftpmaster.internal/ubuntu plucky/universe armhf dh-python all 6.20241024 [112 kB] 264s Get:59 http://ftpmaster.internal/ubuntu plucky/main armhf fonts-dejavu-mono all 2.37-8 [502 kB] 264s Get:60 http://ftpmaster.internal/ubuntu plucky/main armhf fonts-dejavu-core all 2.37-8 [835 kB] 264s Get:61 http://ftpmaster.internal/ubuntu plucky/main armhf fontconfig-config armhf 2.15.0-1.1ubuntu2 [37.4 kB] 264s Get:62 http://ftpmaster.internal/ubuntu plucky/main armhf libbrotli-dev armhf 1.1.0-2build3 [337 kB] 264s Get:63 http://ftpmaster.internal/ubuntu plucky/main armhf libbz2-dev armhf 1.0.8-6 [30.9 kB] 264s Get:64 http://ftpmaster.internal/ubuntu plucky/main armhf libexpat1-dev armhf 2.6.4-1 [121 kB] 264s Get:65 http://ftpmaster.internal/ubuntu plucky/main armhf libfreetype6 armhf 2.13.3+dfsg-1 [330 kB] 264s Get:66 http://ftpmaster.internal/ubuntu plucky/main armhf libfontconfig1 armhf 2.15.0-1.1ubuntu2 [113 kB] 264s Get:67 http://ftpmaster.internal/ubuntu plucky/main armhf zlib1g-dev armhf 1:1.3.dfsg+really1.3.1-1ubuntu1 [880 kB] 264s Get:68 http://ftpmaster.internal/ubuntu plucky/main armhf libpng-dev armhf 1.6.44-2 [252 kB] 264s Get:69 http://ftpmaster.internal/ubuntu plucky/main armhf libfreetype-dev armhf 2.13.3+dfsg-1 [509 kB] 264s Get:70 http://ftpmaster.internal/ubuntu plucky/main armhf uuid-dev armhf 2.40.2-1ubuntu1 [51.0 kB] 264s Get:71 http://ftpmaster.internal/ubuntu plucky/main armhf libpkgconf3 armhf 1.8.1-4 [26.6 kB] 264s Get:72 http://ftpmaster.internal/ubuntu plucky/main armhf pkgconf-bin armhf 1.8.1-4 [21.2 kB] 264s Get:73 http://ftpmaster.internal/ubuntu plucky/main armhf pkgconf armhf 1.8.1-4 [16.8 kB] 264s Get:74 http://ftpmaster.internal/ubuntu plucky/main armhf libfontconfig-dev armhf 2.15.0-1.1ubuntu2 [143 kB] 264s Get:75 http://ftpmaster.internal/ubuntu plucky/main armhf libllvm19 armhf 1:19.1.2-1ubuntu1 [27.8 MB] 265s Get:76 http://ftpmaster.internal/ubuntu plucky/main armhf libpython3.12t64 armhf 3.12.7-3 [2075 kB] 265s Get:77 http://ftpmaster.internal/ubuntu plucky/main armhf libpython3.12-dev armhf 3.12.7-3 [4344 kB] 265s Get:78 http://ftpmaster.internal/ubuntu plucky-proposed/main armhf libpython3-dev armhf 3.12.7-1 [10.3 kB] 265s Get:79 http://ftpmaster.internal/ubuntu plucky/main armhf libpython3.13-stdlib armhf 3.13.0-2 [1972 kB] 265s Get:80 http://ftpmaster.internal/ubuntu plucky/main armhf libpython3.13 armhf 3.13.0-2 [2045 kB] 265s Get:81 http://ftpmaster.internal/ubuntu plucky/main armhf libpython3.13-dev armhf 3.13.0-2 [4254 kB] 265s Get:82 http://ftpmaster.internal/ubuntu plucky-proposed/main armhf libpython3-all-dev armhf 3.12.7-1 [916 B] 265s Get:83 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ab-glyph-rasterizer-dev armhf 0.1.7-1 [12.2 kB] 265s Get:84 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-libm-dev armhf 0.2.8-1 [101 kB] 265s Get:85 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ab-glyph-rasterizer+libm-dev armhf 0.1.7-1 [1062 B] 265s Get:86 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-core-maths-dev armhf 0.1.0-2 [7944 B] 265s Get:87 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ttf-parser-dev armhf 0.24.1-1 [148 kB] 265s Get:88 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-owned-ttf-parser-dev armhf 0.24.0-1 [129 kB] 265s Get:89 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ab-glyph-dev armhf 0.2.28-1 [20.7 kB] 265s Get:90 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-cfg-if-dev armhf 1.0.0-1 [10.5 kB] 265s Get:91 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-cpp-demangle-dev armhf 0.4.0-1 [66.1 kB] 265s Get:92 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-fallible-iterator-dev armhf 0.3.0-2 [20.3 kB] 266s Get:93 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-unicode-ident-dev armhf 1.0.13-1 [38.5 kB] 266s Get:94 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-proc-macro2-dev armhf 1.0.86-1 [44.8 kB] 266s Get:95 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-quote-dev armhf 1.0.37-1 [29.5 kB] 266s Get:96 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-syn-dev armhf 2.0.85-1 [219 kB] 266s Get:97 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-derive-arbitrary-dev armhf 1.3.2-1 [12.3 kB] 266s Get:98 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-arbitrary-dev armhf 1.3.2-1 [31.4 kB] 266s Get:99 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-equivalent-dev armhf 1.0.1-1 [8240 B] 266s Get:100 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-critical-section-dev armhf 1.1.3-1 [20.5 kB] 266s Get:101 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-serde-derive-dev armhf 1.0.210-1 [50.1 kB] 266s Get:102 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-serde-dev armhf 1.0.210-2 [66.4 kB] 266s Get:103 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-portable-atomic-dev armhf 1.9.0-4 [124 kB] 266s Get:104 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-libc-dev armhf 0.2.155-1 [367 kB] 266s Get:105 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-getrandom-dev armhf 0.2.12-1 [36.4 kB] 266s Get:106 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-smallvec-dev armhf 1.13.2-1 [35.5 kB] 266s Get:107 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-parking-lot-core-dev armhf 0.9.10-1 [32.6 kB] 266s Get:108 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-once-cell-dev armhf 1.20.2-1 [31.9 kB] 266s Get:109 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-crunchy-dev armhf 0.2.2-1 [5336 B] 266s Get:110 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-tiny-keccak-dev armhf 2.0.2-1 [20.9 kB] 266s Get:111 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-const-random-macro-dev armhf 0.1.16-2 [10.5 kB] 266s Get:112 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-const-random-dev armhf 0.1.17-2 [8588 B] 266s Get:113 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-version-check-dev armhf 0.9.5-1 [16.9 kB] 266s Get:114 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-byteorder-dev armhf 1.5.0-1 [22.4 kB] 266s Get:115 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-zerocopy-derive-dev armhf 0.7.32-2 [29.7 kB] 266s Get:116 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-zerocopy-dev armhf 0.7.32-1 [116 kB] 266s Get:117 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ahash-dev all 0.8.11-8 [37.9 kB] 266s Get:118 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-allocator-api2-dev armhf 0.2.16-1 [54.8 kB] 266s Get:119 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-compiler-builtins-dev armhf 0.1.101-1 [156 kB] 266s Get:120 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-either-dev armhf 1.13.0-1 [20.2 kB] 266s Get:121 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-crossbeam-utils-dev armhf 0.8.19-1 [41.1 kB] 266s Get:122 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-crossbeam-epoch-dev armhf 0.9.18-1 [42.3 kB] 266s Get:123 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-crossbeam-epoch+std-dev armhf 0.9.18-1 [1128 B] 266s Get:124 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-crossbeam-deque-dev armhf 0.8.5-1 [22.4 kB] 266s Get:125 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rayon-core-dev armhf 1.12.1-1 [63.7 kB] 266s Get:126 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rayon-dev armhf 1.10.0-1 [149 kB] 266s Get:127 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rustc-std-workspace-core-dev armhf 1.0.0-1 [3020 B] 266s Get:128 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-hashbrown-dev armhf 0.14.5-5 [110 kB] 266s Get:129 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-indexmap-dev armhf 2.2.6-1 [66.7 kB] 266s Get:130 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-stable-deref-trait-dev armhf 1.2.0-1 [9794 B] 266s Get:131 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-gimli-dev armhf 0.28.1-2 [209 kB] 266s Get:132 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-memmap2-dev armhf 0.9.3-1 [30.8 kB] 266s Get:133 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-crc32fast-dev armhf 1.4.2-1 [39.8 kB] 266s Get:134 http://ftpmaster.internal/ubuntu plucky/main armhf pkg-config armhf 1.8.1-4 [7362 B] 266s Get:135 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-pkg-config-dev armhf 0.3.27-1 [21.5 kB] 266s Get:136 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-libz-sys-dev armhf 1.1.20-1 [19.8 kB] 266s Get:137 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-adler-dev armhf 1.0.2-2 [15.3 kB] 266s Get:138 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-miniz-oxide-dev armhf 0.7.1-1 [51.5 kB] 266s Get:139 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-flate2-dev armhf 1.0.34-1 [94.5 kB] 267s Get:140 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-sval-derive-dev armhf 2.6.1-2 [11.0 kB] 267s Get:141 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-sval-dev armhf 2.6.1-2 [28.0 kB] 267s Get:142 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-sval-ref-dev armhf 2.6.1-1 [8936 B] 267s Get:143 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-erased-serde-dev armhf 0.3.31-1 [22.7 kB] 267s Get:144 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-serde-fmt-dev all 1.0.3-3 [6956 B] 267s Get:145 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-syn-1-dev armhf 1.0.109-2 [188 kB] 267s Get:146 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-no-panic-dev armhf 0.1.13-1 [11.3 kB] 267s Get:147 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-itoa-dev armhf 1.0.9-1 [13.1 kB] 267s Get:148 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ryu-dev armhf 1.0.15-1 [41.7 kB] 267s Get:149 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-serde-json-dev armhf 1.0.128-1 [128 kB] 267s Get:150 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-serde-test-dev armhf 1.0.171-1 [20.6 kB] 267s Get:151 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-value-bag-serde1-dev armhf 1.9.0-1 [7820 B] 267s Get:152 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-sval-buffer-dev armhf 2.6.1-1 [16.8 kB] 267s Get:153 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-sval-dynamic-dev armhf 2.6.1-1 [9542 B] 267s Get:154 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-sval-fmt-dev armhf 2.6.1-1 [12.0 kB] 267s Get:155 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-sval-serde-dev armhf 2.6.1-1 [13.2 kB] 267s Get:156 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-value-bag-sval2-dev armhf 1.9.0-1 [7862 B] 267s Get:157 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-value-bag-dev armhf 1.9.0-1 [37.6 kB] 267s Get:158 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-log-dev armhf 0.4.22-1 [43.0 kB] 267s Get:159 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-memchr-dev armhf 2.7.4-1 [71.8 kB] 267s Get:160 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ppv-lite86-dev armhf 0.2.16-1 [21.9 kB] 267s Get:161 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rand-core-dev armhf 0.6.4-2 [23.8 kB] 267s Get:162 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rand-chacha-dev armhf 0.3.1-2 [16.9 kB] 267s Get:163 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rand-core+getrandom-dev armhf 0.6.4-2 [1052 B] 267s Get:164 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rand-core+serde-dev armhf 0.6.4-2 [1108 B] 267s Get:165 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rand-core+std-dev armhf 0.6.4-2 [1052 B] 267s Get:166 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rand-dev armhf 0.8.5-1 [77.5 kB] 267s Get:167 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-unicode-segmentation-dev armhf 1.11.0-1 [74.2 kB] 267s Get:168 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-convert-case-dev armhf 0.6.0-2 [19.4 kB] 267s Get:169 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-semver-dev armhf 1.0.23-1 [30.6 kB] 267s Get:170 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rustc-version-dev armhf 0.4.0-1 [13.8 kB] 267s Get:171 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-derive-more-0.99-dev armhf 0.99.18-1 [49.9 kB] 267s Get:172 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-cfg-if-0.1-dev armhf 0.1.10-2 [10.2 kB] 267s Get:173 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-blobby-dev armhf 0.3.1-1 [11.3 kB] 267s Get:174 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-typenum-dev armhf 1.17.0-2 [41.2 kB] 267s Get:175 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-zeroize-derive-dev armhf 1.4.2-1 [12.7 kB] 267s Get:176 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-zeroize-dev armhf 1.8.1-1 [21.6 kB] 267s Get:177 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-generic-array-dev armhf 0.14.7-1 [16.9 kB] 267s Get:178 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-block-buffer-dev armhf 0.10.2-2 [12.2 kB] 267s Get:179 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-const-oid-dev armhf 0.9.3-1 [40.9 kB] 267s Get:180 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-crypto-common-dev armhf 0.1.6-1 [10.5 kB] 267s Get:181 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-subtle-dev armhf 2.6.1-1 [16.1 kB] 267s Get:182 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-digest-dev armhf 0.10.7-2 [20.9 kB] 267s Get:183 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-static-assertions-dev armhf 1.1.0-1 [19.0 kB] 267s Get:184 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-twox-hash-dev armhf 1.6.3-1 [21.6 kB] 267s Get:185 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ruzstd-dev armhf 0.5.0-1 [44.6 kB] 267s Get:186 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-object-dev armhf 0.32.2-1 [228 kB] 267s Get:187 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rustc-demangle-dev armhf 0.1.21-1 [27.7 kB] 267s Get:188 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-addr2line-dev armhf 0.21.0-2 [36.4 kB] 267s Get:189 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-aho-corasick-dev armhf 1.1.3-1 [146 kB] 267s Get:190 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-bitflags-1-dev armhf 1.3.2-5 [25.3 kB] 267s Get:191 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-anes-dev armhf 0.1.6-1 [21.1 kB] 267s Get:192 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-anstyle-dev armhf 1.0.8-1 [16.7 kB] 267s Get:193 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-arrayvec-dev armhf 0.7.4-2 [29.9 kB] 267s Get:194 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-utf8parse-dev armhf 0.2.1-1 [15.0 kB] 267s Get:195 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-anstyle-parse-dev armhf 0.2.1-1 [17.1 kB] 267s Get:196 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-anstyle-query-dev armhf 1.0.0-1 [9768 B] 267s Get:197 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-colorchoice-dev armhf 1.0.0-1 [8336 B] 267s Get:198 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-anstream-dev armhf 0.6.15-1 [25.7 kB] 267s Get:199 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-jobserver-dev armhf 0.1.32-1 [29.1 kB] 267s Get:200 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-shlex-dev armhf 1.3.0-1 [20.1 kB] 267s Get:201 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-cc-dev armhf 1.1.14-1 [73.6 kB] 267s Get:202 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-backtrace-dev armhf 0.3.69-2 [69.9 kB] 267s Get:203 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-anyhow-dev armhf 1.0.86-1 [44.3 kB] 268s Get:204 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-bytecheck-derive-dev armhf 0.6.12-1 [7086 B] 268s Get:205 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ptr-meta-derive-dev armhf 0.1.4-1 [3964 B] 268s Get:206 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ptr-meta-dev armhf 0.1.4-1 [7342 B] 268s Get:207 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-simdutf8-dev armhf 0.1.4-4 [27.2 kB] 268s Get:208 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-bytemuck-derive-dev armhf 1.5.0-2 [18.7 kB] 268s Get:209 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-bytemuck-dev armhf 1.14.0-1 [42.7 kB] 268s Get:210 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-atomic-dev armhf 0.6.0-1 [15.5 kB] 268s Get:211 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-md5-asm-dev armhf 0.5.0-2 [7512 B] 268s Get:212 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-md-5-dev armhf 0.10.6-1 [17.5 kB] 268s Get:213 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-cpufeatures-dev armhf 0.2.11-1 [14.9 kB] 268s Get:214 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-sha1-asm-dev armhf 0.5.1-2 [8058 B] 268s Get:215 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-sha1-dev armhf 0.10.6-1 [16.0 kB] 268s Get:216 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-slog-dev armhf 2.7.0-1 [44.0 kB] 268s Get:217 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-uuid-dev armhf 1.10.0-1 [44.2 kB] 268s Get:218 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-bytecheck-dev armhf 0.6.12-1 [10.2 kB] 268s Get:219 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-autocfg-dev armhf 1.1.0-1 [15.1 kB] 268s Get:220 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-num-traits-dev armhf 0.2.19-2 [46.2 kB] 268s Get:221 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-funty-dev armhf 2.0.0-1 [13.8 kB] 268s Get:222 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-radium-dev armhf 1.1.0-1 [14.9 kB] 268s Get:223 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-tap-dev armhf 1.0.1-1 [12.7 kB] 268s Get:224 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-traitobject-dev armhf 0.1.0-1 [4540 B] 268s Get:225 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-unsafe-any-dev armhf 0.4.2-2 [4622 B] 268s Get:226 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-typemap-dev armhf 0.3.3-2 [6724 B] 268s Get:227 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-wyz-dev armhf 0.5.1-1 [19.7 kB] 268s Get:228 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-bitvec-dev armhf 1.0.1-1 [179 kB] 268s Get:229 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-bytes-dev armhf 1.8.0-1 [56.9 kB] 268s Get:230 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rend-dev armhf 0.4.0-1 [10.3 kB] 268s Get:231 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rkyv-derive-dev armhf 0.7.44-1 [17.5 kB] 268s Get:232 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-seahash-dev armhf 4.1.0-1 [25.1 kB] 268s Get:233 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-smol-str-dev armhf 0.2.0-1 [15.2 kB] 268s Get:234 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-tinyvec-dev armhf 1.6.0-2 [37.7 kB] 268s Get:235 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-tinyvec-macros-dev armhf 0.1.0-1 [3852 B] 268s Get:236 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-tinyvec+tinyvec-macros-dev armhf 1.6.0-2 [1124 B] 268s Get:237 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rkyv-dev armhf 0.7.44-1 [94.4 kB] 268s Get:238 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-num-complex-dev armhf 0.4.6-2 [30.8 kB] 268s Get:239 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-approx-dev armhf 0.5.1-1 [16.0 kB] 268s Get:240 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-array-init-dev armhf 2.0.1-1 [12.3 kB] 268s Get:241 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-async-attributes-dev all 1.1.2-6 [6756 B] 268s Get:242 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-concurrent-queue-dev armhf 2.5.0-4 [23.9 kB] 268s Get:243 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-parking-dev armhf 2.2.0-1 [11.6 kB] 268s Get:244 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-pin-project-lite-dev armhf 0.2.13-1 [30.2 kB] 268s Get:245 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-event-listener-dev all 5.3.1-8 [29.6 kB] 268s Get:246 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-event-listener-strategy-dev armhf 0.5.2-3 [12.6 kB] 268s Get:247 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-futures-core-dev armhf 0.3.30-1 [16.7 kB] 268s Get:248 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-async-channel-dev all 2.3.1-8 [13.1 kB] 268s Get:249 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-async-task-dev all 4.7.1-3 [29.4 kB] 268s Get:250 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-fastrand-dev armhf 2.1.1-1 [17.8 kB] 268s Get:251 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-futures-io-dev armhf 0.3.31-1 [11.2 kB] 268s Get:252 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-futures-lite-dev armhf 2.3.0-2 [38.6 kB] 268s Get:253 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-slab-dev armhf 0.4.9-1 [21.2 kB] 268s Get:254 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-async-executor-dev all 1.13.1-1 [18.7 kB] 268s Get:255 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-async-lock-dev all 3.4.0-4 [29.3 kB] 268s Get:256 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-atomic-waker-dev armhf 1.1.2-1 [14.3 kB] 268s Get:257 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-tracing-attributes-dev armhf 0.1.27-1 [33.3 kB] 268s Get:258 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-valuable-derive-dev armhf 0.1.0-1 [5942 B] 268s Get:259 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-valuable-dev armhf 0.1.0-4 [23.5 kB] 268s Get:260 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-tracing-core-dev armhf 0.1.32-1 [53.8 kB] 268s Get:261 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-tracing-dev armhf 0.1.40-1 [69.5 kB] 268s Get:262 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-blocking-dev all 1.6.1-5 [17.5 kB] 268s Get:263 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-async-fs-dev all 2.1.2-4 [15.3 kB] 268s Get:264 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-bitflags-dev armhf 2.6.0-1 [41.1 kB] 268s Get:265 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-compiler-builtins+core-dev armhf 0.1.101-1 [1090 B] 268s Get:266 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-compiler-builtins+rustc-dep-of-std-dev armhf 0.1.101-1 [1104 B] 269s Get:267 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-errno-dev armhf 0.3.8-1 [13.0 kB] 269s Get:268 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-linux-raw-sys-dev armhf 0.4.14-1 [138 kB] 269s Get:269 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rustix-dev armhf 0.38.32-1 [274 kB] 269s Get:270 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-polling-dev armhf 3.4.0-1 [47.8 kB] 269s Get:271 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-async-io-dev armhf 2.3.3-4 [41.0 kB] 269s Get:272 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-mio-dev armhf 1.0.2-2 [87.6 kB] 269s Get:273 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-owning-ref-dev armhf 0.4.1-1 [13.7 kB] 269s Get:274 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-scopeguard-dev armhf 1.2.0-1 [13.3 kB] 269s Get:275 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-lock-api-dev armhf 0.4.12-1 [22.9 kB] 269s Get:276 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-parking-lot-dev armhf 0.12.3-1 [38.7 kB] 269s Get:277 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-signal-hook-registry-dev armhf 1.4.0-1 [19.2 kB] 269s Get:278 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-socket2-dev armhf 0.5.7-1 [48.3 kB] 269s Get:279 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-tokio-macros-dev armhf 2.4.0-2 [14.0 kB] 269s Get:280 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-tokio-dev armhf 1.39.3-3 [561 kB] 269s Get:281 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-async-global-executor-dev armhf 2.4.1-5 [14.6 kB] 269s Get:282 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-async-net-dev all 2.0.0-4 [14.6 kB] 269s Get:283 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-async-signal-dev armhf 0.2.10-1 [16.0 kB] 269s Get:284 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-async-process-dev all 2.3.0-1 [21.2 kB] 269s Get:285 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-kv-log-macro-dev all 1.0.8-4 [7290 B] 269s Get:286 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-pin-utils-dev armhf 0.1.0-1 [9340 B] 269s Get:287 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-async-std-dev all 1.13.0-1 [170 kB] 269s Get:288 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-base64-dev armhf 0.21.7-1 [65.1 kB] 269s Get:289 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-bit-vec-dev armhf 0.6.3-1 [21.1 kB] 269s Get:290 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-bit-set-dev armhf 0.5.2-1 [15.7 kB] 269s Get:291 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-bit-set+std-dev armhf 0.5.2-1 [1084 B] 269s Get:292 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-regex-syntax-dev armhf 0.8.2-1 [200 kB] 269s Get:293 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-regex-automata-dev armhf 0.4.7-1 [424 kB] 269s Get:294 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-bstr-dev armhf 1.7.0-2build1 [271 kB] 269s Get:295 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-bumpalo-dev armhf 3.16.0-1 [75.7 kB] 269s Get:296 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-cast-dev armhf 0.3.0-1 [13.1 kB] 269s Get:297 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-iana-time-zone-dev armhf 0.1.60-1 [25.1 kB] 269s Get:298 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-wasm-bindgen-shared-dev armhf 0.2.87-1 [9090 B] 269s Get:299 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-wasm-bindgen-backend-dev armhf 0.2.87-1 [27.0 kB] 269s Get:300 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-wasm-bindgen-macro-support-dev armhf 0.2.87-1 [21.2 kB] 269s Get:301 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-wasm-bindgen-macro-dev armhf 0.2.87-1 [16.6 kB] 269s Get:302 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-wasm-bindgen-dev armhf 0.2.87-1 [157 kB] 269s Get:303 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-wasm-bindgen-macro-support+spans-dev armhf 0.2.87-1 [1074 B] 269s Get:304 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-wasm-bindgen-macro+spans-dev armhf 0.2.87-1 [1058 B] 269s Get:305 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-wasm-bindgen+spans-dev armhf 0.2.87-1 [1038 B] 269s Get:306 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-wasm-bindgen+default-dev armhf 0.2.87-1 [1046 B] 269s Get:307 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-js-sys-dev armhf 0.3.64-1 [71.9 kB] 269s Get:308 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-pure-rust-locales-dev armhf 0.8.1-1 [112 kB] 269s Get:309 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-chrono-dev armhf 0.4.38-2 [172 kB] 270s Get:310 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-regex-dev armhf 1.10.6-1 [199 kB] 270s Get:311 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-parse-zoneinfo-dev armhf 0.3.0-1 [71.0 kB] 270s Get:312 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-siphasher-dev armhf 0.3.10-1 [12.0 kB] 270s Get:313 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-phf-shared-dev armhf 0.11.2-1 [15.6 kB] 270s Get:314 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-phf-dev armhf 0.11.2-1 [21.6 kB] 270s Get:315 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-uncased-dev armhf 0.9.6-2 [12.2 kB] 270s Get:316 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-phf-shared+uncased-dev armhf 0.11.2-1 [1028 B] 270s Get:317 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-phf+uncased-dev armhf 0.11.2-1 [1028 B] 270s Get:318 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ciborium-io-dev armhf 0.2.2-1 [8178 B] 270s Get:319 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-half-dev armhf 1.8.2-4 [34.8 kB] 270s Get:320 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ciborium-ll-dev armhf 0.2.2-1 [15.8 kB] 270s Get:321 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ciborium-dev armhf 0.2.2-2 [32.6 kB] 270s Get:322 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-clap-lex-dev armhf 0.7.2-2 [14.3 kB] 270s Get:323 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-strsim-dev armhf 0.11.1-1 [15.9 kB] 270s Get:324 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-terminal-size-dev armhf 0.3.0-2 [12.6 kB] 270s Get:325 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-unicase-dev armhf 2.7.0-1 [19.4 kB] 270s Get:326 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-unicode-width-dev armhf 0.1.14-1 [196 kB] 270s Get:327 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-clap-builder-dev armhf 4.5.15-2 [135 kB] 270s Get:328 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-heck-dev armhf 0.4.1-1 [13.3 kB] 270s Get:329 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-clap-derive-dev armhf 4.5.13-2 [29.3 kB] 270s Get:330 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-clap-dev armhf 4.5.16-1 [52.3 kB] 270s Get:331 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-csv-core-dev armhf 0.1.11-1 [25.9 kB] 270s Get:332 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-csv-dev armhf 1.3.0-1 [729 kB] 270s Get:333 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-futures-sink-dev armhf 0.3.31-1 [10.1 kB] 270s Get:334 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-futures-channel-dev armhf 0.3.30-1 [31.8 kB] 270s Get:335 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-futures-task-dev armhf 0.3.30-1 [13.5 kB] 270s Get:336 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-futures-macro-dev armhf 0.3.30-1 [13.3 kB] 270s Get:337 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-futures-util-dev armhf 0.3.30-2 [127 kB] 270s Get:338 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-num-cpus-dev armhf 1.16.0-1 [18.1 kB] 270s Get:339 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-futures-executor-dev armhf 0.3.30-1 [19.8 kB] 270s Get:340 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-futures-dev armhf 0.3.30-2 [53.2 kB] 270s Get:341 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-is-terminal-dev armhf 0.4.13-1 [8264 B] 270s Get:342 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-itertools-dev armhf 0.10.5-1 [101 kB] 271s Get:343 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-oorandom-dev armhf 11.1.3-1 [11.3 kB] 271s Get:344 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-winapi-i686-pc-windows-gnu-dev armhf 0.4.0-1 [3652 B] 271s Get:345 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-winapi-x86-64-pc-windows-gnu-dev armhf 0.4.0-1 [3660 B] 271s Get:346 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-winapi-dev armhf 0.3.9-1 [953 kB] 271s Get:347 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-dirs-sys-next-dev armhf 0.1.1-1 [12.1 kB] 271s Get:348 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-dirs-next-dev armhf 2.0.0-1 [13.1 kB] 271s Get:349 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-float-ord-dev armhf 0.3.2-1 [9400 B] 271s Get:350 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-cmake-dev armhf 0.1.45-1 [16.0 kB] 271s Get:351 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-freetype-sys-dev armhf 0.13.1-1 [11.8 kB] 271s Get:352 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-freetype-dev armhf 0.7.0-4 [20.4 kB] 271s Get:353 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-spin-dev armhf 0.9.8-4 [33.4 kB] 271s Get:354 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-lazy-static-dev armhf 1.5.0-1 [14.2 kB] 271s Get:355 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-pathfinder-simd-dev armhf 0.5.2-1 [20.1 kB] 271s Get:356 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-pathfinder-geometry-dev armhf 0.5.1-1 [13.2 kB] 271s Get:357 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-winapi-util-dev armhf 0.1.6-1 [14.0 kB] 271s Get:358 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-same-file-dev armhf 1.0.6-1 [11.5 kB] 271s Get:359 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-walkdir-dev armhf 2.5.0-1 [24.5 kB] 271s Get:360 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-const-cstr-dev armhf 0.3.0-1 [9070 B] 271s Get:361 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-libloading-dev armhf 0.8.5-1 [29.2 kB] 271s Get:362 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-dlib-dev armhf 0.5.2-2 [7970 B] 271s Get:363 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-yeslogic-fontconfig-sys-dev armhf 3.0.1-1 [8110 B] 271s Get:364 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-font-kit-dev armhf 0.11.0-2 [56.2 kB] 271s Get:365 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-color-quant-dev armhf 1.1.0-1 [8462 B] 271s Get:366 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-weezl-dev armhf 0.1.5-1 [30.3 kB] 271s Get:367 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-gif-dev armhf 0.11.3-1 [31.9 kB] 271s Get:368 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-jpeg-decoder-dev armhf 0.3.0-1 [717 kB] 271s Get:369 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-num-integer-dev armhf 0.1.46-1 [22.6 kB] 271s Get:370 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-humantime-dev armhf 2.1.0-1 [18.2 kB] 271s Get:371 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-termcolor-dev armhf 1.4.1-1 [19.7 kB] 271s Get:372 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-env-logger-dev armhf 0.10.2-2 [34.4 kB] 271s Get:373 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-quickcheck-dev armhf 1.0.3-3 [27.9 kB] 271s Get:374 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-num-bigint-dev armhf 0.4.6-1 [84.9 kB] 271s Get:375 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-num-rational-dev armhf 0.4.2-1 [28.7 kB] 271s Get:376 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-png-dev armhf 0.17.7-3 [63.4 kB] 271s Get:377 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-qoi-dev armhf 0.4.1-2 [56.7 kB] 271s Get:378 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-tiff-dev armhf 0.9.0-1 [1413 kB] 272s Get:379 http://ftpmaster.internal/ubuntu plucky/main armhf libsharpyuv0 armhf 1.4.0-0.1 [16.3 kB] 272s Get:380 http://ftpmaster.internal/ubuntu plucky/main armhf libwebp7 armhf 1.4.0-0.1 [184 kB] 272s Get:381 http://ftpmaster.internal/ubuntu plucky/main armhf libwebpdemux2 armhf 1.4.0-0.1 [11.8 kB] 272s Get:382 http://ftpmaster.internal/ubuntu plucky/main armhf libwebpmux3 armhf 1.4.0-0.1 [22.5 kB] 272s Get:383 http://ftpmaster.internal/ubuntu plucky/main armhf libwebpdecoder3 armhf 1.4.0-0.1 [93.8 kB] 272s Get:384 http://ftpmaster.internal/ubuntu plucky/main armhf libsharpyuv-dev armhf 1.4.0-0.1 [16.8 kB] 272s Get:385 http://ftpmaster.internal/ubuntu plucky/main armhf libwebp-dev armhf 1.4.0-0.1 [316 kB] 272s Get:386 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-libwebp-sys-dev armhf 0.9.5-1build1 [1357 kB] 272s Get:387 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-webp-dev armhf 0.2.6-1 [1846 kB] 272s Get:388 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-image-dev armhf 0.24.7-2 [229 kB] 272s Get:389 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-plotters-backend-dev armhf 0.3.7-1 [15.7 kB] 272s Get:390 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-plotters-bitmap-dev armhf 0.3.3-3 [17.1 kB] 272s Get:391 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-plotters-svg-dev armhf 0.3.5-1 [9258 B] 272s Get:392 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-web-sys-dev armhf 0.3.64-2 [581 kB] 272s Get:393 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-plotters-dev armhf 0.3.5-4 [118 kB] 272s Get:394 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-smol-dev all 2.0.2-1 [205 kB] 272s Get:395 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-tinytemplate-dev armhf 1.2.1-1 [26.8 kB] 272s Get:396 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-criterion-dev all 0.5.1-6 [104 kB] 273s Get:397 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-phf-generator-dev armhf 0.11.2-2 [12.3 kB] 273s Get:398 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-phf-codegen-dev armhf 0.11.2-1 [14.3 kB] 273s Get:399 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-chrono-tz-build-dev armhf 0.2.1-1 [12.1 kB] 273s Get:400 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-chrono-tz-dev armhf 0.8.6-2 [513 kB] 273s Get:401 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ctor-dev armhf 0.1.26-1 [12.0 kB] 273s Get:402 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-powerfmt-macros-dev armhf 0.1.0-1 [10.5 kB] 273s Get:403 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-powerfmt-dev armhf 0.2.0-1 [16.5 kB] 273s Get:404 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-deranged-dev armhf 0.3.11-1 [18.4 kB] 273s Get:405 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-eui48-dev armhf 1.1.0-2 [16.1 kB] 273s Get:406 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-indenter-dev armhf 0.3.3-1 [8646 B] 273s Get:407 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-eyre-dev armhf 0.6.12-1 [38.0 kB] 273s Get:408 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-eyre+default-dev armhf 0.6.12-1 [1050 B] 273s Get:409 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-fancy-regex-dev armhf 0.11.0-2 [54.7 kB] 273s Get:410 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-fnv-dev armhf 1.0.7-1 [12.8 kB] 273s Get:411 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-geo-types-dev armhf 0.7.11-2 [32.8 kB] 273s Get:412 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-ghost-dev armhf 0.1.5-1 [16.1 kB] 273s Get:413 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-hmac-dev armhf 0.12.1-1 [43.9 kB] 273s Get:414 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-indoc-dev armhf 2.0.5-1 [16.7 kB] 273s Get:415 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-inventory-dev armhf 0.3.2-1 [13.5 kB] 273s Get:416 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-memoffset-dev armhf 0.8.0-1 [10.9 kB] 273s Get:417 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-num-conv-dev armhf 0.1.0-1 [8990 B] 273s Get:418 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-num-threads-dev armhf 0.1.7-1 [9152 B] 273s Get:419 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-postgres-derive-dev armhf 0.4.5-1 [13.4 kB] 273s Get:420 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-sha2-asm-dev armhf 0.6.2-2 [14.4 kB] 273s Get:421 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-sha2-dev armhf 0.10.8-1 [25.6 kB] 273s Get:422 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-unicode-bidi-dev armhf 0.3.13-1 [39.8 kB] 273s Get:423 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-unicode-normalization-dev armhf 0.1.22-1 [104 kB] 273s Get:424 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-stringprep-dev armhf 0.1.2-1 [16.5 kB] 273s Get:425 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-postgres-protocol-dev armhf 0.6.6-2 [25.9 kB] 273s Get:426 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-time-core-dev armhf 0.1.2-1 [9134 B] 273s Get:427 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-time-macros-dev armhf 0.2.16-1 [25.1 kB] 273s Get:428 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-time-dev armhf 0.3.36-2 [99.4 kB] 273s Get:429 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-postgres-types-dev armhf 0.2.6-2 [30.1 kB] 273s Get:430 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rand-xorshift-dev armhf 0.3.0-2 [10.9 kB] 273s Get:431 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-quick-error-dev armhf 2.0.1-1 [15.6 kB] 273s Get:432 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-tempfile-dev armhf 3.10.1-1 [33.7 kB] 273s Get:433 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rusty-fork-dev armhf 0.3.0-1 [20.4 kB] 273s Get:434 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-wait-timeout-dev armhf 0.2.0-1 [14.2 kB] 273s Get:435 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rusty-fork+wait-timeout-dev armhf 0.3.0-1 [1132 B] 273s Get:436 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-unarray-dev armhf 0.1.4-1 [14.6 kB] 273s Get:437 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-proptest-dev armhf 1.5.0-2 [171 kB] 273s Get:438 http://ftpmaster.internal/ubuntu plucky/universe armhf llvm-19-runtime armhf 1:19.1.2-1ubuntu1 [530 kB] 273s Get:439 http://ftpmaster.internal/ubuntu plucky/universe armhf llvm-runtime armhf 1:19.0-60~exp1 [5608 B] 273s Get:440 http://ftpmaster.internal/ubuntu plucky/universe armhf llvm-19-linker-tools armhf 1:19.1.2-1ubuntu1 [1160 kB] 274s Get:441 http://ftpmaster.internal/ubuntu plucky/universe armhf libpfm4 armhf 4.13.0+git83-g91970fe-1 [62.8 kB] 274s Get:442 http://ftpmaster.internal/ubuntu plucky/universe armhf llvm-19 armhf 1:19.1.2-1ubuntu1 [17.3 MB] 275s Get:443 http://ftpmaster.internal/ubuntu plucky/universe armhf llvm armhf 1:19.0-60~exp1 [4146 B] 275s Get:444 http://ftpmaster.internal/ubuntu plucky/universe armhf binutils-mingw-w64-x86-64 armhf 2.43.1-4ubuntu1+12 [2771 kB] 275s Get:445 http://ftpmaster.internal/ubuntu plucky/universe armhf binutils-mingw-w64-i686 armhf 2.43.1-4ubuntu1+12 [2446 kB] 275s Get:446 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-python3-dll-a-dev armhf 0.2.10-1 [31.6 kB] 275s Get:447 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-target-lexicon-dev armhf 0.12.14-1 [25.1 kB] 275s Get:448 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-pyo3-build-config-dev armhf 0.22.6-1 [30.8 kB] 275s Get:449 http://ftpmaster.internal/ubuntu plucky/main armhf python3.12-dev armhf 3.12.7-3 [505 kB] 275s Get:450 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-pyo3-ffi-dev armhf 0.22.6-1build1 [62.6 kB] 275s Get:451 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-pyo3-macros-backend-dev armhf 0.22.6-1 [58.5 kB] 275s Get:452 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-pyo3-macros-dev armhf 0.22.6-1 [10.4 kB] 275s Get:453 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rust-decimal-dev armhf 1.36.0-1 [114 kB] 275s Get:454 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-unindent-dev armhf 0.2.3-1 [9188 B] 275s Get:455 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-pyo3-dev armhf 0.22.6-1 [415 kB] 275s Get:456 http://ftpmaster.internal/ubuntu plucky/universe armhf librust-rustc-hash-dev armhf 1.1.0-1 [10.8 kB] 275s Get:457 http://ftpmaster.internal/ubuntu plucky/universe armhf pybuild-plugin-autopkgtest all 6.20241024 [1746 B] 275s Get:458 http://ftpmaster.internal/ubuntu plucky/main armhf python3-packaging all 24.2-1 [51.5 kB] 275s Get:459 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-pyproject-hooks all 1.2.0-1 [10.2 kB] 276s Get:460 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-toml all 0.10.2-1 [16.5 kB] 276s Get:461 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-wheel all 0.45.0-1 [57.7 kB] 276s Get:462 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-build all 1.2.2-1 [31.0 kB] 276s Get:463 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-installer all 0.7.0+dfsg1-3 [17.4 kB] 276s Get:464 http://ftpmaster.internal/ubuntu plucky/universe armhf pybuild-plugin-pyproject all 6.20241024 [1728 B] 276s Get:465 http://ftpmaster.internal/ubuntu plucky/main armhf python3.13 armhf 3.13.0-2 [719 kB] 276s Get:466 http://ftpmaster.internal/ubuntu plucky-proposed/main armhf python3-all armhf 3.12.7-1 [890 B] 276s Get:467 http://ftpmaster.internal/ubuntu plucky/main armhf python3-dateutil all 2.9.0-3 [80.2 kB] 276s Get:468 http://ftpmaster.internal/ubuntu plucky/main armhf python3-sortedcontainers all 2.4.0-2 [27.6 kB] 276s Get:469 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-hypothesis all 6.119.3-1 [329 kB] 276s Get:470 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-iniconfig all 1.1.1-2 [6024 B] 276s Get:471 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-pluggy all 1.5.0-1 [21.0 kB] 276s Get:472 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-pytest all 8.3.3-1 [251 kB] 276s Get:473 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-regex armhf 0.1.20240724-1build1 [274 kB] 276s Get:474 http://ftpmaster.internal/ubuntu plucky/main armhf python3-semantic-version all 2.10.0-2 [15.1 kB] 276s Get:475 http://ftpmaster.internal/ubuntu plucky/main armhf rustc armhf 1.80.1ubuntu2 [2754 B] 276s Get:476 http://ftpmaster.internal/ubuntu plucky/main armhf cargo armhf 1.80.1ubuntu2 [2242 B] 276s Get:477 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-setuptools-rust all 1.9.0+dfsg-2 [23.1 kB] 276s Get:478 http://ftpmaster.internal/ubuntu plucky-proposed/universe armhf python3-tiktoken armhf 0.8.0-1build1 [706 kB] 277s Fetched 259 MB in 17s (15.5 MB/s) 277s Selecting previously unselected package libpython3.13-minimal:armhf. 277s (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 ... 59616 files and directories currently installed.) 277s Preparing to unpack .../000-libpython3.13-minimal_3.13.0-2_armhf.deb ... 277s Unpacking libpython3.13-minimal:armhf (3.13.0-2) ... 277s Selecting previously unselected package python3.13-minimal. 277s Preparing to unpack .../001-python3.13-minimal_3.13.0-2_armhf.deb ... 277s Unpacking python3.13-minimal (3.13.0-2) ... 277s Selecting previously unselected package m4. 277s Preparing to unpack .../002-m4_1.4.19-4build1_armhf.deb ... 277s Unpacking m4 (1.4.19-4build1) ... 277s Selecting previously unselected package autoconf. 277s Preparing to unpack .../003-autoconf_2.72-3_all.deb ... 277s Unpacking autoconf (2.72-3) ... 277s Selecting previously unselected package autotools-dev. 277s Preparing to unpack .../004-autotools-dev_20220109.1_all.deb ... 277s Unpacking autotools-dev (20220109.1) ... 277s Selecting previously unselected package automake. 277s Preparing to unpack .../005-automake_1%3a1.16.5-1.3ubuntu1_all.deb ... 277s Unpacking automake (1:1.16.5-1.3ubuntu1) ... 277s Selecting previously unselected package autopoint. 277s Preparing to unpack .../006-autopoint_0.22.5-2_all.deb ... 277s Unpacking autopoint (0.22.5-2) ... 277s Selecting previously unselected package libc-dev-bin. 277s Preparing to unpack .../007-libc-dev-bin_2.40-1ubuntu3_armhf.deb ... 277s Unpacking libc-dev-bin (2.40-1ubuntu3) ... 277s Selecting previously unselected package linux-libc-dev:armhf. 277s Preparing to unpack .../008-linux-libc-dev_6.11.0-8.8_armhf.deb ... 277s Unpacking linux-libc-dev:armhf (6.11.0-8.8) ... 277s Selecting previously unselected package libcrypt-dev:armhf. 278s Preparing to unpack .../009-libcrypt-dev_1%3a4.4.36-5_armhf.deb ... 278s Unpacking libcrypt-dev:armhf (1:4.4.36-5) ... 278s Selecting previously unselected package rpcsvc-proto. 278s Preparing to unpack .../010-rpcsvc-proto_1.4.2-0ubuntu7_armhf.deb ... 278s Unpacking rpcsvc-proto (1.4.2-0ubuntu7) ... 278s Selecting previously unselected package libc6-dev:armhf. 278s Preparing to unpack .../011-libc6-dev_2.40-1ubuntu3_armhf.deb ... 278s Unpacking libc6-dev:armhf (2.40-1ubuntu3) ... 278s Selecting previously unselected package libisl23:armhf. 278s Preparing to unpack .../012-libisl23_0.27-1_armhf.deb ... 278s Unpacking libisl23:armhf (0.27-1) ... 278s Selecting previously unselected package libmpc3:armhf. 278s Preparing to unpack .../013-libmpc3_1.3.1-1build2_armhf.deb ... 278s Unpacking libmpc3:armhf (1.3.1-1build2) ... 278s Selecting previously unselected package cpp-14-arm-linux-gnueabihf. 278s Preparing to unpack .../014-cpp-14-arm-linux-gnueabihf_14.2.0-8ubuntu1_armhf.deb ... 278s Unpacking cpp-14-arm-linux-gnueabihf (14.2.0-8ubuntu1) ... 278s Selecting previously unselected package cpp-14. 278s Preparing to unpack .../015-cpp-14_14.2.0-8ubuntu1_armhf.deb ... 278s Unpacking cpp-14 (14.2.0-8ubuntu1) ... 278s Selecting previously unselected package cpp-arm-linux-gnueabihf. 278s Preparing to unpack .../016-cpp-arm-linux-gnueabihf_4%3a14.1.0-2ubuntu1_armhf.deb ... 278s Unpacking cpp-arm-linux-gnueabihf (4:14.1.0-2ubuntu1) ... 278s Selecting previously unselected package cpp. 278s Preparing to unpack .../017-cpp_4%3a14.1.0-2ubuntu1_armhf.deb ... 278s Unpacking cpp (4:14.1.0-2ubuntu1) ... 278s Selecting previously unselected package libcc1-0:armhf. 278s Preparing to unpack .../018-libcc1-0_14.2.0-8ubuntu1_armhf.deb ... 278s Unpacking libcc1-0:armhf (14.2.0-8ubuntu1) ... 278s Selecting previously unselected package libgomp1:armhf. 278s Preparing to unpack .../019-libgomp1_14.2.0-8ubuntu1_armhf.deb ... 278s Unpacking libgomp1:armhf (14.2.0-8ubuntu1) ... 278s Selecting previously unselected package libasan8:armhf. 278s Preparing to unpack .../020-libasan8_14.2.0-8ubuntu1_armhf.deb ... 278s Unpacking libasan8:armhf (14.2.0-8ubuntu1) ... 278s Selecting previously unselected package libubsan1:armhf. 278s Preparing to unpack .../021-libubsan1_14.2.0-8ubuntu1_armhf.deb ... 278s Unpacking libubsan1:armhf (14.2.0-8ubuntu1) ... 278s Selecting previously unselected package libgcc-14-dev:armhf. 278s Preparing to unpack .../022-libgcc-14-dev_14.2.0-8ubuntu1_armhf.deb ... 278s Unpacking libgcc-14-dev:armhf (14.2.0-8ubuntu1) ... 278s Selecting previously unselected package gcc-14-arm-linux-gnueabihf. 278s Preparing to unpack .../023-gcc-14-arm-linux-gnueabihf_14.2.0-8ubuntu1_armhf.deb ... 278s Unpacking gcc-14-arm-linux-gnueabihf (14.2.0-8ubuntu1) ... 279s Selecting previously unselected package gcc-14. 279s Preparing to unpack .../024-gcc-14_14.2.0-8ubuntu1_armhf.deb ... 279s Unpacking gcc-14 (14.2.0-8ubuntu1) ... 279s Selecting previously unselected package gcc-arm-linux-gnueabihf. 279s Preparing to unpack .../025-gcc-arm-linux-gnueabihf_4%3a14.1.0-2ubuntu1_armhf.deb ... 279s Unpacking gcc-arm-linux-gnueabihf (4:14.1.0-2ubuntu1) ... 279s Selecting previously unselected package gcc. 279s Preparing to unpack .../026-gcc_4%3a14.1.0-2ubuntu1_armhf.deb ... 279s Unpacking gcc (4:14.1.0-2ubuntu1) ... 279s Selecting previously unselected package libstdc++-14-dev:armhf. 279s Preparing to unpack .../027-libstdc++-14-dev_14.2.0-8ubuntu1_armhf.deb ... 279s Unpacking libstdc++-14-dev:armhf (14.2.0-8ubuntu1) ... 279s Selecting previously unselected package g++-14-arm-linux-gnueabihf. 279s Preparing to unpack .../028-g++-14-arm-linux-gnueabihf_14.2.0-8ubuntu1_armhf.deb ... 279s Unpacking g++-14-arm-linux-gnueabihf (14.2.0-8ubuntu1) ... 279s Selecting previously unselected package g++-14. 279s Preparing to unpack .../029-g++-14_14.2.0-8ubuntu1_armhf.deb ... 279s Unpacking g++-14 (14.2.0-8ubuntu1) ... 279s Selecting previously unselected package g++-arm-linux-gnueabihf. 279s Preparing to unpack .../030-g++-arm-linux-gnueabihf_4%3a14.1.0-2ubuntu1_armhf.deb ... 279s Unpacking g++-arm-linux-gnueabihf (4:14.1.0-2ubuntu1) ... 279s Selecting previously unselected package g++. 279s Preparing to unpack .../031-g++_4%3a14.1.0-2ubuntu1_armhf.deb ... 279s Unpacking g++ (4:14.1.0-2ubuntu1) ... 279s Selecting previously unselected package build-essential. 279s Preparing to unpack .../032-build-essential_12.10ubuntu1_armhf.deb ... 279s Unpacking build-essential (12.10ubuntu1) ... 279s Selecting previously unselected package libhttp-parser2.9:armhf. 280s Preparing to unpack .../033-libhttp-parser2.9_2.9.4-6build1_armhf.deb ... 280s Unpacking libhttp-parser2.9:armhf (2.9.4-6build1) ... 280s Selecting previously unselected package libgit2-1.7:armhf. 280s Preparing to unpack .../034-libgit2-1.7_1.7.2+ds-1ubuntu3_armhf.deb ... 280s Unpacking libgit2-1.7:armhf (1.7.2+ds-1ubuntu3) ... 280s Selecting previously unselected package libllvm18:armhf. 280s Preparing to unpack .../035-libllvm18_1%3a18.1.8-12_armhf.deb ... 280s Unpacking libllvm18:armhf (1:18.1.8-12) ... 280s Selecting previously unselected package libstd-rust-1.80:armhf. 280s Preparing to unpack .../036-libstd-rust-1.80_1.80.1+dfsg0ubuntu1-0ubuntu1_armhf.deb ... 280s Unpacking libstd-rust-1.80:armhf (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 281s Selecting previously unselected package libstd-rust-1.80-dev:armhf. 281s Preparing to unpack .../037-libstd-rust-1.80-dev_1.80.1+dfsg0ubuntu1-0ubuntu1_armhf.deb ... 281s Unpacking libstd-rust-1.80-dev:armhf (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 282s Selecting previously unselected package rustc-1.80. 282s Preparing to unpack .../038-rustc-1.80_1.80.1+dfsg0ubuntu1-0ubuntu1_armhf.deb ... 282s Unpacking rustc-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 282s Selecting previously unselected package cargo-1.80. 282s Preparing to unpack .../039-cargo-1.80_1.80.1+dfsg0ubuntu1-0ubuntu1_armhf.deb ... 282s Unpacking cargo-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 282s Selecting previously unselected package libjsoncpp25:armhf. 282s Preparing to unpack .../040-libjsoncpp25_1.9.5-6build1_armhf.deb ... 282s Unpacking libjsoncpp25:armhf (1.9.5-6build1) ... 282s Selecting previously unselected package librhash0:armhf. 282s Preparing to unpack .../041-librhash0_1.4.3-3build1_armhf.deb ... 282s Unpacking librhash0:armhf (1.4.3-3build1) ... 282s Selecting previously unselected package cmake-data. 282s Preparing to unpack .../042-cmake-data_3.30.3-1_all.deb ... 282s Unpacking cmake-data (3.30.3-1) ... 283s Selecting previously unselected package cmake. 283s Preparing to unpack .../043-cmake_3.30.3-1_armhf.deb ... 283s Unpacking cmake (3.30.3-1) ... 283s Selecting previously unselected package libdebhelper-perl. 283s Preparing to unpack .../044-libdebhelper-perl_13.20ubuntu1_all.deb ... 283s Unpacking libdebhelper-perl (13.20ubuntu1) ... 283s Selecting previously unselected package libtool. 283s Preparing to unpack .../045-libtool_2.4.7-8_all.deb ... 283s Unpacking libtool (2.4.7-8) ... 283s Selecting previously unselected package dh-autoreconf. 283s Preparing to unpack .../046-dh-autoreconf_20_all.deb ... 283s Unpacking dh-autoreconf (20) ... 283s Selecting previously unselected package libarchive-zip-perl. 283s Preparing to unpack .../047-libarchive-zip-perl_1.68-1_all.deb ... 283s Unpacking libarchive-zip-perl (1.68-1) ... 283s Selecting previously unselected package libfile-stripnondeterminism-perl. 283s Preparing to unpack .../048-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... 283s Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... 283s Selecting previously unselected package dh-strip-nondeterminism. 283s Preparing to unpack .../049-dh-strip-nondeterminism_1.14.0-1_all.deb ... 283s Unpacking dh-strip-nondeterminism (1.14.0-1) ... 283s Selecting previously unselected package debugedit. 283s Preparing to unpack .../050-debugedit_1%3a5.1-1_armhf.deb ... 283s Unpacking debugedit (1:5.1-1) ... 283s Selecting previously unselected package dwz. 283s Preparing to unpack .../051-dwz_0.15-1build6_armhf.deb ... 283s Unpacking dwz (0.15-1build6) ... 283s Selecting previously unselected package gettext. 283s Preparing to unpack .../052-gettext_0.22.5-2_armhf.deb ... 283s Unpacking gettext (0.22.5-2) ... 283s Selecting previously unselected package intltool-debian. 283s Preparing to unpack .../053-intltool-debian_0.35.0+20060710.6_all.deb ... 283s Unpacking intltool-debian (0.35.0+20060710.6) ... 283s Selecting previously unselected package po-debconf. 283s Preparing to unpack .../054-po-debconf_1.0.21+nmu1_all.deb ... 283s Unpacking po-debconf (1.0.21+nmu1) ... 283s Selecting previously unselected package debhelper. 283s Preparing to unpack .../055-debhelper_13.20ubuntu1_all.deb ... 283s Unpacking debhelper (13.20ubuntu1) ... 283s Selecting previously unselected package dh-python. 283s Preparing to unpack .../056-dh-python_6.20241024_all.deb ... 283s Unpacking dh-python (6.20241024) ... 283s Selecting previously unselected package fonts-dejavu-mono. 283s Preparing to unpack .../057-fonts-dejavu-mono_2.37-8_all.deb ... 283s Unpacking fonts-dejavu-mono (2.37-8) ... 283s Selecting previously unselected package fonts-dejavu-core. 284s Preparing to unpack .../058-fonts-dejavu-core_2.37-8_all.deb ... 284s Unpacking fonts-dejavu-core (2.37-8) ... 284s Selecting previously unselected package fontconfig-config. 284s Preparing to unpack .../059-fontconfig-config_2.15.0-1.1ubuntu2_armhf.deb ... 284s Unpacking fontconfig-config (2.15.0-1.1ubuntu2) ... 284s Selecting previously unselected package libbrotli-dev:armhf. 284s Preparing to unpack .../060-libbrotli-dev_1.1.0-2build3_armhf.deb ... 284s Unpacking libbrotli-dev:armhf (1.1.0-2build3) ... 284s Selecting previously unselected package libbz2-dev:armhf. 284s Preparing to unpack .../061-libbz2-dev_1.0.8-6_armhf.deb ... 284s Unpacking libbz2-dev:armhf (1.0.8-6) ... 284s Selecting previously unselected package libexpat1-dev:armhf. 284s Preparing to unpack .../062-libexpat1-dev_2.6.4-1_armhf.deb ... 284s Unpacking libexpat1-dev:armhf (2.6.4-1) ... 284s Selecting previously unselected package libfreetype6:armhf. 284s Preparing to unpack .../063-libfreetype6_2.13.3+dfsg-1_armhf.deb ... 284s Unpacking libfreetype6:armhf (2.13.3+dfsg-1) ... 284s Selecting previously unselected package libfontconfig1:armhf. 284s Preparing to unpack .../064-libfontconfig1_2.15.0-1.1ubuntu2_armhf.deb ... 284s Unpacking libfontconfig1:armhf (2.15.0-1.1ubuntu2) ... 284s Selecting previously unselected package zlib1g-dev:armhf. 284s Preparing to unpack .../065-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1ubuntu1_armhf.deb ... 284s Unpacking zlib1g-dev:armhf (1:1.3.dfsg+really1.3.1-1ubuntu1) ... 284s Selecting previously unselected package libpng-dev:armhf. 284s Preparing to unpack .../066-libpng-dev_1.6.44-2_armhf.deb ... 284s Unpacking libpng-dev:armhf (1.6.44-2) ... 284s Selecting previously unselected package libfreetype-dev:armhf. 284s Preparing to unpack .../067-libfreetype-dev_2.13.3+dfsg-1_armhf.deb ... 284s Unpacking libfreetype-dev:armhf (2.13.3+dfsg-1) ... 284s Selecting previously unselected package uuid-dev:armhf. 284s Preparing to unpack .../068-uuid-dev_2.40.2-1ubuntu1_armhf.deb ... 284s Unpacking uuid-dev:armhf (2.40.2-1ubuntu1) ... 284s Selecting previously unselected package libpkgconf3:armhf. 284s Preparing to unpack .../069-libpkgconf3_1.8.1-4_armhf.deb ... 284s Unpacking libpkgconf3:armhf (1.8.1-4) ... 284s Selecting previously unselected package pkgconf-bin. 284s Preparing to unpack .../070-pkgconf-bin_1.8.1-4_armhf.deb ... 284s Unpacking pkgconf-bin (1.8.1-4) ... 284s Selecting previously unselected package pkgconf:armhf. 284s Preparing to unpack .../071-pkgconf_1.8.1-4_armhf.deb ... 284s Unpacking pkgconf:armhf (1.8.1-4) ... 284s Selecting previously unselected package libfontconfig-dev:armhf. 284s Preparing to unpack .../072-libfontconfig-dev_2.15.0-1.1ubuntu2_armhf.deb ... 284s Unpacking libfontconfig-dev:armhf (2.15.0-1.1ubuntu2) ... 284s Selecting previously unselected package libllvm19:armhf. 284s Preparing to unpack .../073-libllvm19_1%3a19.1.2-1ubuntu1_armhf.deb ... 284s Unpacking libllvm19:armhf (1:19.1.2-1ubuntu1) ... 285s Selecting previously unselected package libpython3.12t64:armhf. 285s Preparing to unpack .../074-libpython3.12t64_3.12.7-3_armhf.deb ... 285s Unpacking libpython3.12t64:armhf (3.12.7-3) ... 285s Selecting previously unselected package libpython3.12-dev:armhf. 285s Preparing to unpack .../075-libpython3.12-dev_3.12.7-3_armhf.deb ... 285s Unpacking libpython3.12-dev:armhf (3.12.7-3) ... 285s Selecting previously unselected package libpython3-dev:armhf. 285s Preparing to unpack .../076-libpython3-dev_3.12.7-1_armhf.deb ... 285s Unpacking libpython3-dev:armhf (3.12.7-1) ... 285s Selecting previously unselected package libpython3.13-stdlib:armhf. 285s Preparing to unpack .../077-libpython3.13-stdlib_3.13.0-2_armhf.deb ... 285s Unpacking libpython3.13-stdlib:armhf (3.13.0-2) ... 286s Selecting previously unselected package libpython3.13:armhf. 286s Preparing to unpack .../078-libpython3.13_3.13.0-2_armhf.deb ... 286s Unpacking libpython3.13:armhf (3.13.0-2) ... 286s Selecting previously unselected package libpython3.13-dev:armhf. 286s Preparing to unpack .../079-libpython3.13-dev_3.13.0-2_armhf.deb ... 286s Unpacking libpython3.13-dev:armhf (3.13.0-2) ... 286s Selecting previously unselected package libpython3-all-dev:armhf. 286s Preparing to unpack .../080-libpython3-all-dev_3.12.7-1_armhf.deb ... 286s Unpacking libpython3-all-dev:armhf (3.12.7-1) ... 286s Selecting previously unselected package librust-ab-glyph-rasterizer-dev:armhf. 286s Preparing to unpack .../081-librust-ab-glyph-rasterizer-dev_0.1.7-1_armhf.deb ... 286s Unpacking librust-ab-glyph-rasterizer-dev:armhf (0.1.7-1) ... 286s Selecting previously unselected package librust-libm-dev:armhf. 286s Preparing to unpack .../082-librust-libm-dev_0.2.8-1_armhf.deb ... 286s Unpacking librust-libm-dev:armhf (0.2.8-1) ... 286s Selecting previously unselected package librust-ab-glyph-rasterizer+libm-dev:armhf. 286s Preparing to unpack .../083-librust-ab-glyph-rasterizer+libm-dev_0.1.7-1_armhf.deb ... 286s Unpacking librust-ab-glyph-rasterizer+libm-dev:armhf (0.1.7-1) ... 286s Selecting previously unselected package librust-core-maths-dev:armhf. 286s Preparing to unpack .../084-librust-core-maths-dev_0.1.0-2_armhf.deb ... 286s Unpacking librust-core-maths-dev:armhf (0.1.0-2) ... 286s Selecting previously unselected package librust-ttf-parser-dev:armhf. 286s Preparing to unpack .../085-librust-ttf-parser-dev_0.24.1-1_armhf.deb ... 286s Unpacking librust-ttf-parser-dev:armhf (0.24.1-1) ... 286s Selecting previously unselected package librust-owned-ttf-parser-dev:armhf. 286s Preparing to unpack .../086-librust-owned-ttf-parser-dev_0.24.0-1_armhf.deb ... 286s Unpacking librust-owned-ttf-parser-dev:armhf (0.24.0-1) ... 286s Selecting previously unselected package librust-ab-glyph-dev:armhf. 286s Preparing to unpack .../087-librust-ab-glyph-dev_0.2.28-1_armhf.deb ... 286s Unpacking librust-ab-glyph-dev:armhf (0.2.28-1) ... 286s Selecting previously unselected package librust-cfg-if-dev:armhf. 286s Preparing to unpack .../088-librust-cfg-if-dev_1.0.0-1_armhf.deb ... 286s Unpacking librust-cfg-if-dev:armhf (1.0.0-1) ... 286s Selecting previously unselected package librust-cpp-demangle-dev:armhf. 286s Preparing to unpack .../089-librust-cpp-demangle-dev_0.4.0-1_armhf.deb ... 286s Unpacking librust-cpp-demangle-dev:armhf (0.4.0-1) ... 286s Selecting previously unselected package librust-fallible-iterator-dev:armhf. 286s Preparing to unpack .../090-librust-fallible-iterator-dev_0.3.0-2_armhf.deb ... 286s Unpacking librust-fallible-iterator-dev:armhf (0.3.0-2) ... 286s Selecting previously unselected package librust-unicode-ident-dev:armhf. 286s Preparing to unpack .../091-librust-unicode-ident-dev_1.0.13-1_armhf.deb ... 286s Unpacking librust-unicode-ident-dev:armhf (1.0.13-1) ... 286s Selecting previously unselected package librust-proc-macro2-dev:armhf. 286s Preparing to unpack .../092-librust-proc-macro2-dev_1.0.86-1_armhf.deb ... 286s Unpacking librust-proc-macro2-dev:armhf (1.0.86-1) ... 286s Selecting previously unselected package librust-quote-dev:armhf. 286s Preparing to unpack .../093-librust-quote-dev_1.0.37-1_armhf.deb ... 286s Unpacking librust-quote-dev:armhf (1.0.37-1) ... 286s Selecting previously unselected package librust-syn-dev:armhf. 286s Preparing to unpack .../094-librust-syn-dev_2.0.85-1_armhf.deb ... 286s Unpacking librust-syn-dev:armhf (2.0.85-1) ... 286s Selecting previously unselected package librust-derive-arbitrary-dev:armhf. 286s Preparing to unpack .../095-librust-derive-arbitrary-dev_1.3.2-1_armhf.deb ... 286s Unpacking librust-derive-arbitrary-dev:armhf (1.3.2-1) ... 286s Selecting previously unselected package librust-arbitrary-dev:armhf. 286s Preparing to unpack .../096-librust-arbitrary-dev_1.3.2-1_armhf.deb ... 286s Unpacking librust-arbitrary-dev:armhf (1.3.2-1) ... 287s Selecting previously unselected package librust-equivalent-dev:armhf. 287s Preparing to unpack .../097-librust-equivalent-dev_1.0.1-1_armhf.deb ... 287s Unpacking librust-equivalent-dev:armhf (1.0.1-1) ... 287s Selecting previously unselected package librust-critical-section-dev:armhf. 287s Preparing to unpack .../098-librust-critical-section-dev_1.1.3-1_armhf.deb ... 287s Unpacking librust-critical-section-dev:armhf (1.1.3-1) ... 287s Selecting previously unselected package librust-serde-derive-dev:armhf. 287s Preparing to unpack .../099-librust-serde-derive-dev_1.0.210-1_armhf.deb ... 287s Unpacking librust-serde-derive-dev:armhf (1.0.210-1) ... 287s Selecting previously unselected package librust-serde-dev:armhf. 287s Preparing to unpack .../100-librust-serde-dev_1.0.210-2_armhf.deb ... 287s Unpacking librust-serde-dev:armhf (1.0.210-2) ... 287s Selecting previously unselected package librust-portable-atomic-dev:armhf. 287s Preparing to unpack .../101-librust-portable-atomic-dev_1.9.0-4_armhf.deb ... 287s Unpacking librust-portable-atomic-dev:armhf (1.9.0-4) ... 287s Selecting previously unselected package librust-libc-dev:armhf. 287s Preparing to unpack .../102-librust-libc-dev_0.2.155-1_armhf.deb ... 287s Unpacking librust-libc-dev:armhf (0.2.155-1) ... 287s Selecting previously unselected package librust-getrandom-dev:armhf. 287s Preparing to unpack .../103-librust-getrandom-dev_0.2.12-1_armhf.deb ... 287s Unpacking librust-getrandom-dev:armhf (0.2.12-1) ... 287s Selecting previously unselected package librust-smallvec-dev:armhf. 287s Preparing to unpack .../104-librust-smallvec-dev_1.13.2-1_armhf.deb ... 287s Unpacking librust-smallvec-dev:armhf (1.13.2-1) ... 287s Selecting previously unselected package librust-parking-lot-core-dev:armhf. 287s Preparing to unpack .../105-librust-parking-lot-core-dev_0.9.10-1_armhf.deb ... 287s Unpacking librust-parking-lot-core-dev:armhf (0.9.10-1) ... 287s Selecting previously unselected package librust-once-cell-dev:armhf. 287s Preparing to unpack .../106-librust-once-cell-dev_1.20.2-1_armhf.deb ... 287s Unpacking librust-once-cell-dev:armhf (1.20.2-1) ... 287s Selecting previously unselected package librust-crunchy-dev:armhf. 287s Preparing to unpack .../107-librust-crunchy-dev_0.2.2-1_armhf.deb ... 287s Unpacking librust-crunchy-dev:armhf (0.2.2-1) ... 287s Selecting previously unselected package librust-tiny-keccak-dev:armhf. 287s Preparing to unpack .../108-librust-tiny-keccak-dev_2.0.2-1_armhf.deb ... 287s Unpacking librust-tiny-keccak-dev:armhf (2.0.2-1) ... 287s Selecting previously unselected package librust-const-random-macro-dev:armhf. 287s Preparing to unpack .../109-librust-const-random-macro-dev_0.1.16-2_armhf.deb ... 287s Unpacking librust-const-random-macro-dev:armhf (0.1.16-2) ... 287s Selecting previously unselected package librust-const-random-dev:armhf. 287s Preparing to unpack .../110-librust-const-random-dev_0.1.17-2_armhf.deb ... 287s Unpacking librust-const-random-dev:armhf (0.1.17-2) ... 287s Selecting previously unselected package librust-version-check-dev:armhf. 287s Preparing to unpack .../111-librust-version-check-dev_0.9.5-1_armhf.deb ... 287s Unpacking librust-version-check-dev:armhf (0.9.5-1) ... 287s Selecting previously unselected package librust-byteorder-dev:armhf. 287s Preparing to unpack .../112-librust-byteorder-dev_1.5.0-1_armhf.deb ... 287s Unpacking librust-byteorder-dev:armhf (1.5.0-1) ... 287s Selecting previously unselected package librust-zerocopy-derive-dev:armhf. 287s Preparing to unpack .../113-librust-zerocopy-derive-dev_0.7.32-2_armhf.deb ... 287s Unpacking librust-zerocopy-derive-dev:armhf (0.7.32-2) ... 287s Selecting previously unselected package librust-zerocopy-dev:armhf. 287s Preparing to unpack .../114-librust-zerocopy-dev_0.7.32-1_armhf.deb ... 287s Unpacking librust-zerocopy-dev:armhf (0.7.32-1) ... 287s Selecting previously unselected package librust-ahash-dev. 287s Preparing to unpack .../115-librust-ahash-dev_0.8.11-8_all.deb ... 287s Unpacking librust-ahash-dev (0.8.11-8) ... 287s Selecting previously unselected package librust-allocator-api2-dev:armhf. 287s Preparing to unpack .../116-librust-allocator-api2-dev_0.2.16-1_armhf.deb ... 287s Unpacking librust-allocator-api2-dev:armhf (0.2.16-1) ... 287s Selecting previously unselected package librust-compiler-builtins-dev:armhf. 287s Preparing to unpack .../117-librust-compiler-builtins-dev_0.1.101-1_armhf.deb ... 287s Unpacking librust-compiler-builtins-dev:armhf (0.1.101-1) ... 287s Selecting previously unselected package librust-either-dev:armhf. 287s Preparing to unpack .../118-librust-either-dev_1.13.0-1_armhf.deb ... 287s Unpacking librust-either-dev:armhf (1.13.0-1) ... 287s Selecting previously unselected package librust-crossbeam-utils-dev:armhf. 287s Preparing to unpack .../119-librust-crossbeam-utils-dev_0.8.19-1_armhf.deb ... 287s Unpacking librust-crossbeam-utils-dev:armhf (0.8.19-1) ... 288s Selecting previously unselected package librust-crossbeam-epoch-dev:armhf. 288s Preparing to unpack .../120-librust-crossbeam-epoch-dev_0.9.18-1_armhf.deb ... 288s Unpacking librust-crossbeam-epoch-dev:armhf (0.9.18-1) ... 288s Selecting previously unselected package librust-crossbeam-epoch+std-dev:armhf. 288s Preparing to unpack .../121-librust-crossbeam-epoch+std-dev_0.9.18-1_armhf.deb ... 288s Unpacking librust-crossbeam-epoch+std-dev:armhf (0.9.18-1) ... 288s Selecting previously unselected package librust-crossbeam-deque-dev:armhf. 288s Preparing to unpack .../122-librust-crossbeam-deque-dev_0.8.5-1_armhf.deb ... 288s Unpacking librust-crossbeam-deque-dev:armhf (0.8.5-1) ... 288s Selecting previously unselected package librust-rayon-core-dev:armhf. 288s Preparing to unpack .../123-librust-rayon-core-dev_1.12.1-1_armhf.deb ... 288s Unpacking librust-rayon-core-dev:armhf (1.12.1-1) ... 288s Selecting previously unselected package librust-rayon-dev:armhf. 288s Preparing to unpack .../124-librust-rayon-dev_1.10.0-1_armhf.deb ... 288s Unpacking librust-rayon-dev:armhf (1.10.0-1) ... 288s Selecting previously unselected package librust-rustc-std-workspace-core-dev:armhf. 288s Preparing to unpack .../125-librust-rustc-std-workspace-core-dev_1.0.0-1_armhf.deb ... 288s Unpacking librust-rustc-std-workspace-core-dev:armhf (1.0.0-1) ... 288s Selecting previously unselected package librust-hashbrown-dev:armhf. 288s Preparing to unpack .../126-librust-hashbrown-dev_0.14.5-5_armhf.deb ... 288s Unpacking librust-hashbrown-dev:armhf (0.14.5-5) ... 288s Selecting previously unselected package librust-indexmap-dev:armhf. 288s Preparing to unpack .../127-librust-indexmap-dev_2.2.6-1_armhf.deb ... 288s Unpacking librust-indexmap-dev:armhf (2.2.6-1) ... 288s Selecting previously unselected package librust-stable-deref-trait-dev:armhf. 288s Preparing to unpack .../128-librust-stable-deref-trait-dev_1.2.0-1_armhf.deb ... 288s Unpacking librust-stable-deref-trait-dev:armhf (1.2.0-1) ... 288s Selecting previously unselected package librust-gimli-dev:armhf. 288s Preparing to unpack .../129-librust-gimli-dev_0.28.1-2_armhf.deb ... 288s Unpacking librust-gimli-dev:armhf (0.28.1-2) ... 288s Selecting previously unselected package librust-memmap2-dev:armhf. 288s Preparing to unpack .../130-librust-memmap2-dev_0.9.3-1_armhf.deb ... 288s Unpacking librust-memmap2-dev:armhf (0.9.3-1) ... 288s Selecting previously unselected package librust-crc32fast-dev:armhf. 288s Preparing to unpack .../131-librust-crc32fast-dev_1.4.2-1_armhf.deb ... 288s Unpacking librust-crc32fast-dev:armhf (1.4.2-1) ... 288s Selecting previously unselected package pkg-config:armhf. 288s Preparing to unpack .../132-pkg-config_1.8.1-4_armhf.deb ... 288s Unpacking pkg-config:armhf (1.8.1-4) ... 288s Selecting previously unselected package librust-pkg-config-dev:armhf. 288s Preparing to unpack .../133-librust-pkg-config-dev_0.3.27-1_armhf.deb ... 288s Unpacking librust-pkg-config-dev:armhf (0.3.27-1) ... 288s Selecting previously unselected package librust-libz-sys-dev:armhf. 288s Preparing to unpack .../134-librust-libz-sys-dev_1.1.20-1_armhf.deb ... 288s Unpacking librust-libz-sys-dev:armhf (1.1.20-1) ... 288s Selecting previously unselected package librust-adler-dev:armhf. 288s Preparing to unpack .../135-librust-adler-dev_1.0.2-2_armhf.deb ... 288s Unpacking librust-adler-dev:armhf (1.0.2-2) ... 288s Selecting previously unselected package librust-miniz-oxide-dev:armhf. 288s Preparing to unpack .../136-librust-miniz-oxide-dev_0.7.1-1_armhf.deb ... 288s Unpacking librust-miniz-oxide-dev:armhf (0.7.1-1) ... 288s Selecting previously unselected package librust-flate2-dev:armhf. 288s Preparing to unpack .../137-librust-flate2-dev_1.0.34-1_armhf.deb ... 288s Unpacking librust-flate2-dev:armhf (1.0.34-1) ... 288s Selecting previously unselected package librust-sval-derive-dev:armhf. 288s Preparing to unpack .../138-librust-sval-derive-dev_2.6.1-2_armhf.deb ... 288s Unpacking librust-sval-derive-dev:armhf (2.6.1-2) ... 288s Selecting previously unselected package librust-sval-dev:armhf. 288s Preparing to unpack .../139-librust-sval-dev_2.6.1-2_armhf.deb ... 288s Unpacking librust-sval-dev:armhf (2.6.1-2) ... 288s Selecting previously unselected package librust-sval-ref-dev:armhf. 288s Preparing to unpack .../140-librust-sval-ref-dev_2.6.1-1_armhf.deb ... 288s Unpacking librust-sval-ref-dev:armhf (2.6.1-1) ... 288s Selecting previously unselected package librust-erased-serde-dev:armhf. 288s Preparing to unpack .../141-librust-erased-serde-dev_0.3.31-1_armhf.deb ... 288s Unpacking librust-erased-serde-dev:armhf (0.3.31-1) ... 288s Selecting previously unselected package librust-serde-fmt-dev. 288s Preparing to unpack .../142-librust-serde-fmt-dev_1.0.3-3_all.deb ... 288s Unpacking librust-serde-fmt-dev (1.0.3-3) ... 288s Selecting previously unselected package librust-syn-1-dev:armhf. 288s Preparing to unpack .../143-librust-syn-1-dev_1.0.109-2_armhf.deb ... 288s Unpacking librust-syn-1-dev:armhf (1.0.109-2) ... 288s Selecting previously unselected package librust-no-panic-dev:armhf. 288s Preparing to unpack .../144-librust-no-panic-dev_0.1.13-1_armhf.deb ... 288s Unpacking librust-no-panic-dev:armhf (0.1.13-1) ... 288s Selecting previously unselected package librust-itoa-dev:armhf. 289s Preparing to unpack .../145-librust-itoa-dev_1.0.9-1_armhf.deb ... 289s Unpacking librust-itoa-dev:armhf (1.0.9-1) ... 289s Selecting previously unselected package librust-ryu-dev:armhf. 289s Preparing to unpack .../146-librust-ryu-dev_1.0.15-1_armhf.deb ... 289s Unpacking librust-ryu-dev:armhf (1.0.15-1) ... 289s Selecting previously unselected package librust-serde-json-dev:armhf. 289s Preparing to unpack .../147-librust-serde-json-dev_1.0.128-1_armhf.deb ... 289s Unpacking librust-serde-json-dev:armhf (1.0.128-1) ... 289s Selecting previously unselected package librust-serde-test-dev:armhf. 289s Preparing to unpack .../148-librust-serde-test-dev_1.0.171-1_armhf.deb ... 289s Unpacking librust-serde-test-dev:armhf (1.0.171-1) ... 289s Selecting previously unselected package librust-value-bag-serde1-dev:armhf. 289s Preparing to unpack .../149-librust-value-bag-serde1-dev_1.9.0-1_armhf.deb ... 289s Unpacking librust-value-bag-serde1-dev:armhf (1.9.0-1) ... 289s Selecting previously unselected package librust-sval-buffer-dev:armhf. 289s Preparing to unpack .../150-librust-sval-buffer-dev_2.6.1-1_armhf.deb ... 289s Unpacking librust-sval-buffer-dev:armhf (2.6.1-1) ... 289s Selecting previously unselected package librust-sval-dynamic-dev:armhf. 289s Preparing to unpack .../151-librust-sval-dynamic-dev_2.6.1-1_armhf.deb ... 289s Unpacking librust-sval-dynamic-dev:armhf (2.6.1-1) ... 289s Selecting previously unselected package librust-sval-fmt-dev:armhf. 289s Preparing to unpack .../152-librust-sval-fmt-dev_2.6.1-1_armhf.deb ... 289s Unpacking librust-sval-fmt-dev:armhf (2.6.1-1) ... 289s Selecting previously unselected package librust-sval-serde-dev:armhf. 289s Preparing to unpack .../153-librust-sval-serde-dev_2.6.1-1_armhf.deb ... 289s Unpacking librust-sval-serde-dev:armhf (2.6.1-1) ... 289s Selecting previously unselected package librust-value-bag-sval2-dev:armhf. 289s Preparing to unpack .../154-librust-value-bag-sval2-dev_1.9.0-1_armhf.deb ... 289s Unpacking librust-value-bag-sval2-dev:armhf (1.9.0-1) ... 289s Selecting previously unselected package librust-value-bag-dev:armhf. 289s Preparing to unpack .../155-librust-value-bag-dev_1.9.0-1_armhf.deb ... 289s Unpacking librust-value-bag-dev:armhf (1.9.0-1) ... 289s Selecting previously unselected package librust-log-dev:armhf. 289s Preparing to unpack .../156-librust-log-dev_0.4.22-1_armhf.deb ... 289s Unpacking librust-log-dev:armhf (0.4.22-1) ... 289s Selecting previously unselected package librust-memchr-dev:armhf. 289s Preparing to unpack .../157-librust-memchr-dev_2.7.4-1_armhf.deb ... 289s Unpacking librust-memchr-dev:armhf (2.7.4-1) ... 289s Selecting previously unselected package librust-ppv-lite86-dev:armhf. 289s Preparing to unpack .../158-librust-ppv-lite86-dev_0.2.16-1_armhf.deb ... 289s Unpacking librust-ppv-lite86-dev:armhf (0.2.16-1) ... 289s Selecting previously unselected package librust-rand-core-dev:armhf. 289s Preparing to unpack .../159-librust-rand-core-dev_0.6.4-2_armhf.deb ... 289s Unpacking librust-rand-core-dev:armhf (0.6.4-2) ... 289s Selecting previously unselected package librust-rand-chacha-dev:armhf. 289s Preparing to unpack .../160-librust-rand-chacha-dev_0.3.1-2_armhf.deb ... 289s Unpacking librust-rand-chacha-dev:armhf (0.3.1-2) ... 289s Selecting previously unselected package librust-rand-core+getrandom-dev:armhf. 289s Preparing to unpack .../161-librust-rand-core+getrandom-dev_0.6.4-2_armhf.deb ... 289s Unpacking librust-rand-core+getrandom-dev:armhf (0.6.4-2) ... 289s Selecting previously unselected package librust-rand-core+serde-dev:armhf. 289s Preparing to unpack .../162-librust-rand-core+serde-dev_0.6.4-2_armhf.deb ... 289s Unpacking librust-rand-core+serde-dev:armhf (0.6.4-2) ... 289s Selecting previously unselected package librust-rand-core+std-dev:armhf. 289s Preparing to unpack .../163-librust-rand-core+std-dev_0.6.4-2_armhf.deb ... 289s Unpacking librust-rand-core+std-dev:armhf (0.6.4-2) ... 289s Selecting previously unselected package librust-rand-dev:armhf. 289s Preparing to unpack .../164-librust-rand-dev_0.8.5-1_armhf.deb ... 289s Unpacking librust-rand-dev:armhf (0.8.5-1) ... 289s Selecting previously unselected package librust-unicode-segmentation-dev:armhf. 289s Preparing to unpack .../165-librust-unicode-segmentation-dev_1.11.0-1_armhf.deb ... 289s Unpacking librust-unicode-segmentation-dev:armhf (1.11.0-1) ... 289s Selecting previously unselected package librust-convert-case-dev:armhf. 289s Preparing to unpack .../166-librust-convert-case-dev_0.6.0-2_armhf.deb ... 289s Unpacking librust-convert-case-dev:armhf (0.6.0-2) ... 289s Selecting previously unselected package librust-semver-dev:armhf. 289s Preparing to unpack .../167-librust-semver-dev_1.0.23-1_armhf.deb ... 289s Unpacking librust-semver-dev:armhf (1.0.23-1) ... 289s Selecting previously unselected package librust-rustc-version-dev:armhf. 289s Preparing to unpack .../168-librust-rustc-version-dev_0.4.0-1_armhf.deb ... 289s Unpacking librust-rustc-version-dev:armhf (0.4.0-1) ... 289s Selecting previously unselected package librust-derive-more-0.99-dev:armhf. 290s Preparing to unpack .../169-librust-derive-more-0.99-dev_0.99.18-1_armhf.deb ... 290s Unpacking librust-derive-more-0.99-dev:armhf (0.99.18-1) ... 290s Selecting previously unselected package librust-cfg-if-0.1-dev:armhf. 290s Preparing to unpack .../170-librust-cfg-if-0.1-dev_0.1.10-2_armhf.deb ... 290s Unpacking librust-cfg-if-0.1-dev:armhf (0.1.10-2) ... 290s Selecting previously unselected package librust-blobby-dev:armhf. 290s Preparing to unpack .../171-librust-blobby-dev_0.3.1-1_armhf.deb ... 290s Unpacking librust-blobby-dev:armhf (0.3.1-1) ... 290s Selecting previously unselected package librust-typenum-dev:armhf. 290s Preparing to unpack .../172-librust-typenum-dev_1.17.0-2_armhf.deb ... 290s Unpacking librust-typenum-dev:armhf (1.17.0-2) ... 290s Selecting previously unselected package librust-zeroize-derive-dev:armhf. 290s Preparing to unpack .../173-librust-zeroize-derive-dev_1.4.2-1_armhf.deb ... 290s Unpacking librust-zeroize-derive-dev:armhf (1.4.2-1) ... 290s Selecting previously unselected package librust-zeroize-dev:armhf. 290s Preparing to unpack .../174-librust-zeroize-dev_1.8.1-1_armhf.deb ... 290s Unpacking librust-zeroize-dev:armhf (1.8.1-1) ... 290s Selecting previously unselected package librust-generic-array-dev:armhf. 290s Preparing to unpack .../175-librust-generic-array-dev_0.14.7-1_armhf.deb ... 290s Unpacking librust-generic-array-dev:armhf (0.14.7-1) ... 290s Selecting previously unselected package librust-block-buffer-dev:armhf. 290s Preparing to unpack .../176-librust-block-buffer-dev_0.10.2-2_armhf.deb ... 290s Unpacking librust-block-buffer-dev:armhf (0.10.2-2) ... 290s Selecting previously unselected package librust-const-oid-dev:armhf. 290s Preparing to unpack .../177-librust-const-oid-dev_0.9.3-1_armhf.deb ... 290s Unpacking librust-const-oid-dev:armhf (0.9.3-1) ... 290s Selecting previously unselected package librust-crypto-common-dev:armhf. 290s Preparing to unpack .../178-librust-crypto-common-dev_0.1.6-1_armhf.deb ... 290s Unpacking librust-crypto-common-dev:armhf (0.1.6-1) ... 290s Selecting previously unselected package librust-subtle-dev:armhf. 290s Preparing to unpack .../179-librust-subtle-dev_2.6.1-1_armhf.deb ... 290s Unpacking librust-subtle-dev:armhf (2.6.1-1) ... 290s Selecting previously unselected package librust-digest-dev:armhf. 290s Preparing to unpack .../180-librust-digest-dev_0.10.7-2_armhf.deb ... 290s Unpacking librust-digest-dev:armhf (0.10.7-2) ... 290s Selecting previously unselected package librust-static-assertions-dev:armhf. 290s Preparing to unpack .../181-librust-static-assertions-dev_1.1.0-1_armhf.deb ... 290s Unpacking librust-static-assertions-dev:armhf (1.1.0-1) ... 290s Selecting previously unselected package librust-twox-hash-dev:armhf. 290s Preparing to unpack .../182-librust-twox-hash-dev_1.6.3-1_armhf.deb ... 290s Unpacking librust-twox-hash-dev:armhf (1.6.3-1) ... 290s Selecting previously unselected package librust-ruzstd-dev:armhf. 290s Preparing to unpack .../183-librust-ruzstd-dev_0.5.0-1_armhf.deb ... 290s Unpacking librust-ruzstd-dev:armhf (0.5.0-1) ... 290s Selecting previously unselected package librust-object-dev:armhf. 290s Preparing to unpack .../184-librust-object-dev_0.32.2-1_armhf.deb ... 290s Unpacking librust-object-dev:armhf (0.32.2-1) ... 290s Selecting previously unselected package librust-rustc-demangle-dev:armhf. 290s Preparing to unpack .../185-librust-rustc-demangle-dev_0.1.21-1_armhf.deb ... 290s Unpacking librust-rustc-demangle-dev:armhf (0.1.21-1) ... 290s Selecting previously unselected package librust-addr2line-dev:armhf. 290s Preparing to unpack .../186-librust-addr2line-dev_0.21.0-2_armhf.deb ... 290s Unpacking librust-addr2line-dev:armhf (0.21.0-2) ... 290s Selecting previously unselected package librust-aho-corasick-dev:armhf. 290s Preparing to unpack .../187-librust-aho-corasick-dev_1.1.3-1_armhf.deb ... 290s Unpacking librust-aho-corasick-dev:armhf (1.1.3-1) ... 290s Selecting previously unselected package librust-bitflags-1-dev:armhf. 290s Preparing to unpack .../188-librust-bitflags-1-dev_1.3.2-5_armhf.deb ... 290s Unpacking librust-bitflags-1-dev:armhf (1.3.2-5) ... 290s Selecting previously unselected package librust-anes-dev:armhf. 290s Preparing to unpack .../189-librust-anes-dev_0.1.6-1_armhf.deb ... 290s Unpacking librust-anes-dev:armhf (0.1.6-1) ... 291s Selecting previously unselected package librust-anstyle-dev:armhf. 291s Preparing to unpack .../190-librust-anstyle-dev_1.0.8-1_armhf.deb ... 291s Unpacking librust-anstyle-dev:armhf (1.0.8-1) ... 291s Selecting previously unselected package librust-arrayvec-dev:armhf. 291s Preparing to unpack .../191-librust-arrayvec-dev_0.7.4-2_armhf.deb ... 291s Unpacking librust-arrayvec-dev:armhf (0.7.4-2) ... 291s Selecting previously unselected package librust-utf8parse-dev:armhf. 291s Preparing to unpack .../192-librust-utf8parse-dev_0.2.1-1_armhf.deb ... 291s Unpacking librust-utf8parse-dev:armhf (0.2.1-1) ... 291s Selecting previously unselected package librust-anstyle-parse-dev:armhf. 291s Preparing to unpack .../193-librust-anstyle-parse-dev_0.2.1-1_armhf.deb ... 291s Unpacking librust-anstyle-parse-dev:armhf (0.2.1-1) ... 291s Selecting previously unselected package librust-anstyle-query-dev:armhf. 291s Preparing to unpack .../194-librust-anstyle-query-dev_1.0.0-1_armhf.deb ... 291s Unpacking librust-anstyle-query-dev:armhf (1.0.0-1) ... 291s Selecting previously unselected package librust-colorchoice-dev:armhf. 291s Preparing to unpack .../195-librust-colorchoice-dev_1.0.0-1_armhf.deb ... 291s Unpacking librust-colorchoice-dev:armhf (1.0.0-1) ... 291s Selecting previously unselected package librust-anstream-dev:armhf. 291s Preparing to unpack .../196-librust-anstream-dev_0.6.15-1_armhf.deb ... 291s Unpacking librust-anstream-dev:armhf (0.6.15-1) ... 291s Selecting previously unselected package librust-jobserver-dev:armhf. 291s Preparing to unpack .../197-librust-jobserver-dev_0.1.32-1_armhf.deb ... 291s Unpacking librust-jobserver-dev:armhf (0.1.32-1) ... 291s Selecting previously unselected package librust-shlex-dev:armhf. 291s Preparing to unpack .../198-librust-shlex-dev_1.3.0-1_armhf.deb ... 291s Unpacking librust-shlex-dev:armhf (1.3.0-1) ... 291s Selecting previously unselected package librust-cc-dev:armhf. 291s Preparing to unpack .../199-librust-cc-dev_1.1.14-1_armhf.deb ... 291s Unpacking librust-cc-dev:armhf (1.1.14-1) ... 291s Selecting previously unselected package librust-backtrace-dev:armhf. 291s Preparing to unpack .../200-librust-backtrace-dev_0.3.69-2_armhf.deb ... 291s Unpacking librust-backtrace-dev:armhf (0.3.69-2) ... 291s Selecting previously unselected package librust-anyhow-dev:armhf. 291s Preparing to unpack .../201-librust-anyhow-dev_1.0.86-1_armhf.deb ... 291s Unpacking librust-anyhow-dev:armhf (1.0.86-1) ... 291s Selecting previously unselected package librust-bytecheck-derive-dev:armhf. 291s Preparing to unpack .../202-librust-bytecheck-derive-dev_0.6.12-1_armhf.deb ... 291s Unpacking librust-bytecheck-derive-dev:armhf (0.6.12-1) ... 291s Selecting previously unselected package librust-ptr-meta-derive-dev:armhf. 291s Preparing to unpack .../203-librust-ptr-meta-derive-dev_0.1.4-1_armhf.deb ... 291s Unpacking librust-ptr-meta-derive-dev:armhf (0.1.4-1) ... 291s Selecting previously unselected package librust-ptr-meta-dev:armhf. 291s Preparing to unpack .../204-librust-ptr-meta-dev_0.1.4-1_armhf.deb ... 291s Unpacking librust-ptr-meta-dev:armhf (0.1.4-1) ... 291s Selecting previously unselected package librust-simdutf8-dev:armhf. 291s Preparing to unpack .../205-librust-simdutf8-dev_0.1.4-4_armhf.deb ... 291s Unpacking librust-simdutf8-dev:armhf (0.1.4-4) ... 291s Selecting previously unselected package librust-bytemuck-derive-dev:armhf. 291s Preparing to unpack .../206-librust-bytemuck-derive-dev_1.5.0-2_armhf.deb ... 291s Unpacking librust-bytemuck-derive-dev:armhf (1.5.0-2) ... 291s Selecting previously unselected package librust-bytemuck-dev:armhf. 291s Preparing to unpack .../207-librust-bytemuck-dev_1.14.0-1_armhf.deb ... 291s Unpacking librust-bytemuck-dev:armhf (1.14.0-1) ... 291s Selecting previously unselected package librust-atomic-dev:armhf. 291s Preparing to unpack .../208-librust-atomic-dev_0.6.0-1_armhf.deb ... 291s Unpacking librust-atomic-dev:armhf (0.6.0-1) ... 291s Selecting previously unselected package librust-md5-asm-dev:armhf. 291s Preparing to unpack .../209-librust-md5-asm-dev_0.5.0-2_armhf.deb ... 291s Unpacking librust-md5-asm-dev:armhf (0.5.0-2) ... 291s Selecting previously unselected package librust-md-5-dev:armhf. 291s Preparing to unpack .../210-librust-md-5-dev_0.10.6-1_armhf.deb ... 291s Unpacking librust-md-5-dev:armhf (0.10.6-1) ... 291s Selecting previously unselected package librust-cpufeatures-dev:armhf. 291s Preparing to unpack .../211-librust-cpufeatures-dev_0.2.11-1_armhf.deb ... 291s Unpacking librust-cpufeatures-dev:armhf (0.2.11-1) ... 291s Selecting previously unselected package librust-sha1-asm-dev:armhf. 291s Preparing to unpack .../212-librust-sha1-asm-dev_0.5.1-2_armhf.deb ... 291s Unpacking librust-sha1-asm-dev:armhf (0.5.1-2) ... 291s Selecting previously unselected package librust-sha1-dev:armhf. 292s Preparing to unpack .../213-librust-sha1-dev_0.10.6-1_armhf.deb ... 292s Unpacking librust-sha1-dev:armhf (0.10.6-1) ... 292s Selecting previously unselected package librust-slog-dev:armhf. 292s Preparing to unpack .../214-librust-slog-dev_2.7.0-1_armhf.deb ... 292s Unpacking librust-slog-dev:armhf (2.7.0-1) ... 292s Selecting previously unselected package librust-uuid-dev:armhf. 292s Preparing to unpack .../215-librust-uuid-dev_1.10.0-1_armhf.deb ... 292s Unpacking librust-uuid-dev:armhf (1.10.0-1) ... 292s Selecting previously unselected package librust-bytecheck-dev:armhf. 292s Preparing to unpack .../216-librust-bytecheck-dev_0.6.12-1_armhf.deb ... 292s Unpacking librust-bytecheck-dev:armhf (0.6.12-1) ... 292s Selecting previously unselected package librust-autocfg-dev:armhf. 292s Preparing to unpack .../217-librust-autocfg-dev_1.1.0-1_armhf.deb ... 292s Unpacking librust-autocfg-dev:armhf (1.1.0-1) ... 292s Selecting previously unselected package librust-num-traits-dev:armhf. 292s Preparing to unpack .../218-librust-num-traits-dev_0.2.19-2_armhf.deb ... 292s Unpacking librust-num-traits-dev:armhf (0.2.19-2) ... 292s Selecting previously unselected package librust-funty-dev:armhf. 292s Preparing to unpack .../219-librust-funty-dev_2.0.0-1_armhf.deb ... 292s Unpacking librust-funty-dev:armhf (2.0.0-1) ... 292s Selecting previously unselected package librust-radium-dev:armhf. 292s Preparing to unpack .../220-librust-radium-dev_1.1.0-1_armhf.deb ... 292s Unpacking librust-radium-dev:armhf (1.1.0-1) ... 292s Selecting previously unselected package librust-tap-dev:armhf. 292s Preparing to unpack .../221-librust-tap-dev_1.0.1-1_armhf.deb ... 292s Unpacking librust-tap-dev:armhf (1.0.1-1) ... 292s Selecting previously unselected package librust-traitobject-dev:armhf. 292s Preparing to unpack .../222-librust-traitobject-dev_0.1.0-1_armhf.deb ... 292s Unpacking librust-traitobject-dev:armhf (0.1.0-1) ... 292s Selecting previously unselected package librust-unsafe-any-dev:armhf. 292s Preparing to unpack .../223-librust-unsafe-any-dev_0.4.2-2_armhf.deb ... 292s Unpacking librust-unsafe-any-dev:armhf (0.4.2-2) ... 292s Selecting previously unselected package librust-typemap-dev:armhf. 292s Preparing to unpack .../224-librust-typemap-dev_0.3.3-2_armhf.deb ... 292s Unpacking librust-typemap-dev:armhf (0.3.3-2) ... 292s Selecting previously unselected package librust-wyz-dev:armhf. 292s Preparing to unpack .../225-librust-wyz-dev_0.5.1-1_armhf.deb ... 292s Unpacking librust-wyz-dev:armhf (0.5.1-1) ... 292s Selecting previously unselected package librust-bitvec-dev:armhf. 292s Preparing to unpack .../226-librust-bitvec-dev_1.0.1-1_armhf.deb ... 292s Unpacking librust-bitvec-dev:armhf (1.0.1-1) ... 292s Selecting previously unselected package librust-bytes-dev:armhf. 292s Preparing to unpack .../227-librust-bytes-dev_1.8.0-1_armhf.deb ... 292s Unpacking librust-bytes-dev:armhf (1.8.0-1) ... 292s Selecting previously unselected package librust-rend-dev:armhf. 292s Preparing to unpack .../228-librust-rend-dev_0.4.0-1_armhf.deb ... 292s Unpacking librust-rend-dev:armhf (0.4.0-1) ... 292s Selecting previously unselected package librust-rkyv-derive-dev:armhf. 292s Preparing to unpack .../229-librust-rkyv-derive-dev_0.7.44-1_armhf.deb ... 292s Unpacking librust-rkyv-derive-dev:armhf (0.7.44-1) ... 292s Selecting previously unselected package librust-seahash-dev:armhf. 292s Preparing to unpack .../230-librust-seahash-dev_4.1.0-1_armhf.deb ... 292s Unpacking librust-seahash-dev:armhf (4.1.0-1) ... 292s Selecting previously unselected package librust-smol-str-dev:armhf. 292s Preparing to unpack .../231-librust-smol-str-dev_0.2.0-1_armhf.deb ... 292s Unpacking librust-smol-str-dev:armhf (0.2.0-1) ... 292s Selecting previously unselected package librust-tinyvec-dev:armhf. 292s Preparing to unpack .../232-librust-tinyvec-dev_1.6.0-2_armhf.deb ... 292s Unpacking librust-tinyvec-dev:armhf (1.6.0-2) ... 292s Selecting previously unselected package librust-tinyvec-macros-dev:armhf. 292s Preparing to unpack .../233-librust-tinyvec-macros-dev_0.1.0-1_armhf.deb ... 292s Unpacking librust-tinyvec-macros-dev:armhf (0.1.0-1) ... 292s Selecting previously unselected package librust-tinyvec+tinyvec-macros-dev:armhf. 292s Preparing to unpack .../234-librust-tinyvec+tinyvec-macros-dev_1.6.0-2_armhf.deb ... 292s Unpacking librust-tinyvec+tinyvec-macros-dev:armhf (1.6.0-2) ... 292s Selecting previously unselected package librust-rkyv-dev:armhf. 292s Preparing to unpack .../235-librust-rkyv-dev_0.7.44-1_armhf.deb ... 292s Unpacking librust-rkyv-dev:armhf (0.7.44-1) ... 292s Selecting previously unselected package librust-num-complex-dev:armhf. 293s Preparing to unpack .../236-librust-num-complex-dev_0.4.6-2_armhf.deb ... 293s Unpacking librust-num-complex-dev:armhf (0.4.6-2) ... 293s Selecting previously unselected package librust-approx-dev:armhf. 293s Preparing to unpack .../237-librust-approx-dev_0.5.1-1_armhf.deb ... 293s Unpacking librust-approx-dev:armhf (0.5.1-1) ... 293s Selecting previously unselected package librust-array-init-dev:armhf. 293s Preparing to unpack .../238-librust-array-init-dev_2.0.1-1_armhf.deb ... 293s Unpacking librust-array-init-dev:armhf (2.0.1-1) ... 293s Selecting previously unselected package librust-async-attributes-dev. 293s Preparing to unpack .../239-librust-async-attributes-dev_1.1.2-6_all.deb ... 293s Unpacking librust-async-attributes-dev (1.1.2-6) ... 293s Selecting previously unselected package librust-concurrent-queue-dev:armhf. 293s Preparing to unpack .../240-librust-concurrent-queue-dev_2.5.0-4_armhf.deb ... 293s Unpacking librust-concurrent-queue-dev:armhf (2.5.0-4) ... 293s Selecting previously unselected package librust-parking-dev:armhf. 293s Preparing to unpack .../241-librust-parking-dev_2.2.0-1_armhf.deb ... 293s Unpacking librust-parking-dev:armhf (2.2.0-1) ... 293s Selecting previously unselected package librust-pin-project-lite-dev:armhf. 293s Preparing to unpack .../242-librust-pin-project-lite-dev_0.2.13-1_armhf.deb ... 293s Unpacking librust-pin-project-lite-dev:armhf (0.2.13-1) ... 293s Selecting previously unselected package librust-event-listener-dev. 293s Preparing to unpack .../243-librust-event-listener-dev_5.3.1-8_all.deb ... 293s Unpacking librust-event-listener-dev (5.3.1-8) ... 293s Selecting previously unselected package librust-event-listener-strategy-dev:armhf. 293s Preparing to unpack .../244-librust-event-listener-strategy-dev_0.5.2-3_armhf.deb ... 293s Unpacking librust-event-listener-strategy-dev:armhf (0.5.2-3) ... 293s Selecting previously unselected package librust-futures-core-dev:armhf. 293s Preparing to unpack .../245-librust-futures-core-dev_0.3.30-1_armhf.deb ... 293s Unpacking librust-futures-core-dev:armhf (0.3.30-1) ... 293s Selecting previously unselected package librust-async-channel-dev. 293s Preparing to unpack .../246-librust-async-channel-dev_2.3.1-8_all.deb ... 293s Unpacking librust-async-channel-dev (2.3.1-8) ... 293s Selecting previously unselected package librust-async-task-dev. 293s Preparing to unpack .../247-librust-async-task-dev_4.7.1-3_all.deb ... 293s Unpacking librust-async-task-dev (4.7.1-3) ... 293s Selecting previously unselected package librust-fastrand-dev:armhf. 293s Preparing to unpack .../248-librust-fastrand-dev_2.1.1-1_armhf.deb ... 293s Unpacking librust-fastrand-dev:armhf (2.1.1-1) ... 293s Selecting previously unselected package librust-futures-io-dev:armhf. 293s Preparing to unpack .../249-librust-futures-io-dev_0.3.31-1_armhf.deb ... 293s Unpacking librust-futures-io-dev:armhf (0.3.31-1) ... 293s Selecting previously unselected package librust-futures-lite-dev:armhf. 293s Preparing to unpack .../250-librust-futures-lite-dev_2.3.0-2_armhf.deb ... 293s Unpacking librust-futures-lite-dev:armhf (2.3.0-2) ... 293s Selecting previously unselected package librust-slab-dev:armhf. 293s Preparing to unpack .../251-librust-slab-dev_0.4.9-1_armhf.deb ... 293s Unpacking librust-slab-dev:armhf (0.4.9-1) ... 293s Selecting previously unselected package librust-async-executor-dev. 293s Preparing to unpack .../252-librust-async-executor-dev_1.13.1-1_all.deb ... 293s Unpacking librust-async-executor-dev (1.13.1-1) ... 293s Selecting previously unselected package librust-async-lock-dev. 293s Preparing to unpack .../253-librust-async-lock-dev_3.4.0-4_all.deb ... 293s Unpacking librust-async-lock-dev (3.4.0-4) ... 293s Selecting previously unselected package librust-atomic-waker-dev:armhf. 293s Preparing to unpack .../254-librust-atomic-waker-dev_1.1.2-1_armhf.deb ... 293s Unpacking librust-atomic-waker-dev:armhf (1.1.2-1) ... 293s Selecting previously unselected package librust-tracing-attributes-dev:armhf. 293s Preparing to unpack .../255-librust-tracing-attributes-dev_0.1.27-1_armhf.deb ... 293s Unpacking librust-tracing-attributes-dev:armhf (0.1.27-1) ... 293s Selecting previously unselected package librust-valuable-derive-dev:armhf. 293s Preparing to unpack .../256-librust-valuable-derive-dev_0.1.0-1_armhf.deb ... 293s Unpacking librust-valuable-derive-dev:armhf (0.1.0-1) ... 293s Selecting previously unselected package librust-valuable-dev:armhf. 293s Preparing to unpack .../257-librust-valuable-dev_0.1.0-4_armhf.deb ... 293s Unpacking librust-valuable-dev:armhf (0.1.0-4) ... 293s Selecting previously unselected package librust-tracing-core-dev:armhf. 294s Preparing to unpack .../258-librust-tracing-core-dev_0.1.32-1_armhf.deb ... 294s Unpacking librust-tracing-core-dev:armhf (0.1.32-1) ... 294s Selecting previously unselected package librust-tracing-dev:armhf. 294s Preparing to unpack .../259-librust-tracing-dev_0.1.40-1_armhf.deb ... 294s Unpacking librust-tracing-dev:armhf (0.1.40-1) ... 294s Selecting previously unselected package librust-blocking-dev. 294s Preparing to unpack .../260-librust-blocking-dev_1.6.1-5_all.deb ... 294s Unpacking librust-blocking-dev (1.6.1-5) ... 294s Selecting previously unselected package librust-async-fs-dev. 294s Preparing to unpack .../261-librust-async-fs-dev_2.1.2-4_all.deb ... 294s Unpacking librust-async-fs-dev (2.1.2-4) ... 294s Selecting previously unselected package librust-bitflags-dev:armhf. 294s Preparing to unpack .../262-librust-bitflags-dev_2.6.0-1_armhf.deb ... 294s Unpacking librust-bitflags-dev:armhf (2.6.0-1) ... 294s Selecting previously unselected package librust-compiler-builtins+core-dev:armhf. 294s Preparing to unpack .../263-librust-compiler-builtins+core-dev_0.1.101-1_armhf.deb ... 294s Unpacking librust-compiler-builtins+core-dev:armhf (0.1.101-1) ... 294s Selecting previously unselected package librust-compiler-builtins+rustc-dep-of-std-dev:armhf. 294s Preparing to unpack .../264-librust-compiler-builtins+rustc-dep-of-std-dev_0.1.101-1_armhf.deb ... 294s Unpacking librust-compiler-builtins+rustc-dep-of-std-dev:armhf (0.1.101-1) ... 294s Selecting previously unselected package librust-errno-dev:armhf. 294s Preparing to unpack .../265-librust-errno-dev_0.3.8-1_armhf.deb ... 294s Unpacking librust-errno-dev:armhf (0.3.8-1) ... 294s Selecting previously unselected package librust-linux-raw-sys-dev:armhf. 294s Preparing to unpack .../266-librust-linux-raw-sys-dev_0.4.14-1_armhf.deb ... 294s Unpacking librust-linux-raw-sys-dev:armhf (0.4.14-1) ... 294s Selecting previously unselected package librust-rustix-dev:armhf. 294s Preparing to unpack .../267-librust-rustix-dev_0.38.32-1_armhf.deb ... 294s Unpacking librust-rustix-dev:armhf (0.38.32-1) ... 294s Selecting previously unselected package librust-polling-dev:armhf. 294s Preparing to unpack .../268-librust-polling-dev_3.4.0-1_armhf.deb ... 294s Unpacking librust-polling-dev:armhf (3.4.0-1) ... 294s Selecting previously unselected package librust-async-io-dev:armhf. 294s Preparing to unpack .../269-librust-async-io-dev_2.3.3-4_armhf.deb ... 294s Unpacking librust-async-io-dev:armhf (2.3.3-4) ... 294s Selecting previously unselected package librust-mio-dev:armhf. 294s Preparing to unpack .../270-librust-mio-dev_1.0.2-2_armhf.deb ... 294s Unpacking librust-mio-dev:armhf (1.0.2-2) ... 294s Selecting previously unselected package librust-owning-ref-dev:armhf. 294s Preparing to unpack .../271-librust-owning-ref-dev_0.4.1-1_armhf.deb ... 294s Unpacking librust-owning-ref-dev:armhf (0.4.1-1) ... 294s Selecting previously unselected package librust-scopeguard-dev:armhf. 294s Preparing to unpack .../272-librust-scopeguard-dev_1.2.0-1_armhf.deb ... 294s Unpacking librust-scopeguard-dev:armhf (1.2.0-1) ... 294s Selecting previously unselected package librust-lock-api-dev:armhf. 294s Preparing to unpack .../273-librust-lock-api-dev_0.4.12-1_armhf.deb ... 294s Unpacking librust-lock-api-dev:armhf (0.4.12-1) ... 294s Selecting previously unselected package librust-parking-lot-dev:armhf. 294s Preparing to unpack .../274-librust-parking-lot-dev_0.12.3-1_armhf.deb ... 294s Unpacking librust-parking-lot-dev:armhf (0.12.3-1) ... 294s Selecting previously unselected package librust-signal-hook-registry-dev:armhf. 294s Preparing to unpack .../275-librust-signal-hook-registry-dev_1.4.0-1_armhf.deb ... 294s Unpacking librust-signal-hook-registry-dev:armhf (1.4.0-1) ... 294s Selecting previously unselected package librust-socket2-dev:armhf. 294s Preparing to unpack .../276-librust-socket2-dev_0.5.7-1_armhf.deb ... 294s Unpacking librust-socket2-dev:armhf (0.5.7-1) ... 294s Selecting previously unselected package librust-tokio-macros-dev:armhf. 294s Preparing to unpack .../277-librust-tokio-macros-dev_2.4.0-2_armhf.deb ... 294s Unpacking librust-tokio-macros-dev:armhf (2.4.0-2) ... 295s Selecting previously unselected package librust-tokio-dev:armhf. 295s Preparing to unpack .../278-librust-tokio-dev_1.39.3-3_armhf.deb ... 295s Unpacking librust-tokio-dev:armhf (1.39.3-3) ... 295s Selecting previously unselected package librust-async-global-executor-dev:armhf. 295s Preparing to unpack .../279-librust-async-global-executor-dev_2.4.1-5_armhf.deb ... 295s Unpacking librust-async-global-executor-dev:armhf (2.4.1-5) ... 295s Selecting previously unselected package librust-async-net-dev. 295s Preparing to unpack .../280-librust-async-net-dev_2.0.0-4_all.deb ... 295s Unpacking librust-async-net-dev (2.0.0-4) ... 295s Selecting previously unselected package librust-async-signal-dev:armhf. 295s Preparing to unpack .../281-librust-async-signal-dev_0.2.10-1_armhf.deb ... 295s Unpacking librust-async-signal-dev:armhf (0.2.10-1) ... 295s Selecting previously unselected package librust-async-process-dev. 295s Preparing to unpack .../282-librust-async-process-dev_2.3.0-1_all.deb ... 295s Unpacking librust-async-process-dev (2.3.0-1) ... 295s Selecting previously unselected package librust-kv-log-macro-dev. 295s Preparing to unpack .../283-librust-kv-log-macro-dev_1.0.8-4_all.deb ... 295s Unpacking librust-kv-log-macro-dev (1.0.8-4) ... 295s Selecting previously unselected package librust-pin-utils-dev:armhf. 295s Preparing to unpack .../284-librust-pin-utils-dev_0.1.0-1_armhf.deb ... 295s Unpacking librust-pin-utils-dev:armhf (0.1.0-1) ... 295s Selecting previously unselected package librust-async-std-dev. 295s Preparing to unpack .../285-librust-async-std-dev_1.13.0-1_all.deb ... 295s Unpacking librust-async-std-dev (1.13.0-1) ... 295s Selecting previously unselected package librust-base64-dev:armhf. 295s Preparing to unpack .../286-librust-base64-dev_0.21.7-1_armhf.deb ... 295s Unpacking librust-base64-dev:armhf (0.21.7-1) ... 295s Selecting previously unselected package librust-bit-vec-dev:armhf. 295s Preparing to unpack .../287-librust-bit-vec-dev_0.6.3-1_armhf.deb ... 295s Unpacking librust-bit-vec-dev:armhf (0.6.3-1) ... 295s Selecting previously unselected package librust-bit-set-dev:armhf. 295s Preparing to unpack .../288-librust-bit-set-dev_0.5.2-1_armhf.deb ... 295s Unpacking librust-bit-set-dev:armhf (0.5.2-1) ... 295s Selecting previously unselected package librust-bit-set+std-dev:armhf. 295s Preparing to unpack .../289-librust-bit-set+std-dev_0.5.2-1_armhf.deb ... 295s Unpacking librust-bit-set+std-dev:armhf (0.5.2-1) ... 295s Selecting previously unselected package librust-regex-syntax-dev:armhf. 295s Preparing to unpack .../290-librust-regex-syntax-dev_0.8.2-1_armhf.deb ... 295s Unpacking librust-regex-syntax-dev:armhf (0.8.2-1) ... 295s Selecting previously unselected package librust-regex-automata-dev:armhf. 295s Preparing to unpack .../291-librust-regex-automata-dev_0.4.7-1_armhf.deb ... 295s Unpacking librust-regex-automata-dev:armhf (0.4.7-1) ... 295s Selecting previously unselected package librust-bstr-dev:armhf. 295s Preparing to unpack .../292-librust-bstr-dev_1.7.0-2build1_armhf.deb ... 295s Unpacking librust-bstr-dev:armhf (1.7.0-2build1) ... 295s Selecting previously unselected package librust-bumpalo-dev:armhf. 295s Preparing to unpack .../293-librust-bumpalo-dev_3.16.0-1_armhf.deb ... 295s Unpacking librust-bumpalo-dev:armhf (3.16.0-1) ... 295s Selecting previously unselected package librust-cast-dev:armhf. 295s Preparing to unpack .../294-librust-cast-dev_0.3.0-1_armhf.deb ... 295s Unpacking librust-cast-dev:armhf (0.3.0-1) ... 296s Selecting previously unselected package librust-iana-time-zone-dev:armhf. 296s Preparing to unpack .../295-librust-iana-time-zone-dev_0.1.60-1_armhf.deb ... 296s Unpacking librust-iana-time-zone-dev:armhf (0.1.60-1) ... 296s Selecting previously unselected package librust-wasm-bindgen-shared-dev:armhf. 296s Preparing to unpack .../296-librust-wasm-bindgen-shared-dev_0.2.87-1_armhf.deb ... 296s Unpacking librust-wasm-bindgen-shared-dev:armhf (0.2.87-1) ... 296s Selecting previously unselected package librust-wasm-bindgen-backend-dev:armhf. 296s Preparing to unpack .../297-librust-wasm-bindgen-backend-dev_0.2.87-1_armhf.deb ... 296s Unpacking librust-wasm-bindgen-backend-dev:armhf (0.2.87-1) ... 296s Selecting previously unselected package librust-wasm-bindgen-macro-support-dev:armhf. 296s Preparing to unpack .../298-librust-wasm-bindgen-macro-support-dev_0.2.87-1_armhf.deb ... 296s Unpacking librust-wasm-bindgen-macro-support-dev:armhf (0.2.87-1) ... 296s Selecting previously unselected package librust-wasm-bindgen-macro-dev:armhf. 296s Preparing to unpack .../299-librust-wasm-bindgen-macro-dev_0.2.87-1_armhf.deb ... 296s Unpacking librust-wasm-bindgen-macro-dev:armhf (0.2.87-1) ... 296s Selecting previously unselected package librust-wasm-bindgen-dev:armhf. 296s Preparing to unpack .../300-librust-wasm-bindgen-dev_0.2.87-1_armhf.deb ... 296s Unpacking librust-wasm-bindgen-dev:armhf (0.2.87-1) ... 296s Selecting previously unselected package librust-wasm-bindgen-macro-support+spans-dev:armhf. 296s Preparing to unpack .../301-librust-wasm-bindgen-macro-support+spans-dev_0.2.87-1_armhf.deb ... 296s Unpacking librust-wasm-bindgen-macro-support+spans-dev:armhf (0.2.87-1) ... 296s Selecting previously unselected package librust-wasm-bindgen-macro+spans-dev:armhf. 296s Preparing to unpack .../302-librust-wasm-bindgen-macro+spans-dev_0.2.87-1_armhf.deb ... 296s Unpacking librust-wasm-bindgen-macro+spans-dev:armhf (0.2.87-1) ... 296s Selecting previously unselected package librust-wasm-bindgen+spans-dev:armhf. 296s Preparing to unpack .../303-librust-wasm-bindgen+spans-dev_0.2.87-1_armhf.deb ... 296s Unpacking librust-wasm-bindgen+spans-dev:armhf (0.2.87-1) ... 296s Selecting previously unselected package librust-wasm-bindgen+default-dev:armhf. 296s Preparing to unpack .../304-librust-wasm-bindgen+default-dev_0.2.87-1_armhf.deb ... 296s Unpacking librust-wasm-bindgen+default-dev:armhf (0.2.87-1) ... 296s Selecting previously unselected package librust-js-sys-dev:armhf. 296s Preparing to unpack .../305-librust-js-sys-dev_0.3.64-1_armhf.deb ... 296s Unpacking librust-js-sys-dev:armhf (0.3.64-1) ... 296s Selecting previously unselected package librust-pure-rust-locales-dev:armhf. 296s Preparing to unpack .../306-librust-pure-rust-locales-dev_0.8.1-1_armhf.deb ... 296s Unpacking librust-pure-rust-locales-dev:armhf (0.8.1-1) ... 296s Selecting previously unselected package librust-chrono-dev:armhf. 296s Preparing to unpack .../307-librust-chrono-dev_0.4.38-2_armhf.deb ... 296s Unpacking librust-chrono-dev:armhf (0.4.38-2) ... 296s Selecting previously unselected package librust-regex-dev:armhf. 296s Preparing to unpack .../308-librust-regex-dev_1.10.6-1_armhf.deb ... 296s Unpacking librust-regex-dev:armhf (1.10.6-1) ... 296s Selecting previously unselected package librust-parse-zoneinfo-dev:armhf. 296s Preparing to unpack .../309-librust-parse-zoneinfo-dev_0.3.0-1_armhf.deb ... 296s Unpacking librust-parse-zoneinfo-dev:armhf (0.3.0-1) ... 296s Selecting previously unselected package librust-siphasher-dev:armhf. 296s Preparing to unpack .../310-librust-siphasher-dev_0.3.10-1_armhf.deb ... 296s Unpacking librust-siphasher-dev:armhf (0.3.10-1) ... 296s Selecting previously unselected package librust-phf-shared-dev:armhf. 296s Preparing to unpack .../311-librust-phf-shared-dev_0.11.2-1_armhf.deb ... 296s Unpacking librust-phf-shared-dev:armhf (0.11.2-1) ... 296s Selecting previously unselected package librust-phf-dev:armhf. 296s Preparing to unpack .../312-librust-phf-dev_0.11.2-1_armhf.deb ... 296s Unpacking librust-phf-dev:armhf (0.11.2-1) ... 296s Selecting previously unselected package librust-uncased-dev:armhf. 296s Preparing to unpack .../313-librust-uncased-dev_0.9.6-2_armhf.deb ... 296s Unpacking librust-uncased-dev:armhf (0.9.6-2) ... 296s Selecting previously unselected package librust-phf-shared+uncased-dev:armhf. 296s Preparing to unpack .../314-librust-phf-shared+uncased-dev_0.11.2-1_armhf.deb ... 296s Unpacking librust-phf-shared+uncased-dev:armhf (0.11.2-1) ... 297s Selecting previously unselected package librust-phf+uncased-dev:armhf. 297s Preparing to unpack .../315-librust-phf+uncased-dev_0.11.2-1_armhf.deb ... 297s Unpacking librust-phf+uncased-dev:armhf (0.11.2-1) ... 297s Selecting previously unselected package librust-ciborium-io-dev:armhf. 297s Preparing to unpack .../316-librust-ciborium-io-dev_0.2.2-1_armhf.deb ... 297s Unpacking librust-ciborium-io-dev:armhf (0.2.2-1) ... 297s Selecting previously unselected package librust-half-dev:armhf. 297s Preparing to unpack .../317-librust-half-dev_1.8.2-4_armhf.deb ... 297s Unpacking librust-half-dev:armhf (1.8.2-4) ... 297s Selecting previously unselected package librust-ciborium-ll-dev:armhf. 297s Preparing to unpack .../318-librust-ciborium-ll-dev_0.2.2-1_armhf.deb ... 297s Unpacking librust-ciborium-ll-dev:armhf (0.2.2-1) ... 297s Selecting previously unselected package librust-ciborium-dev:armhf. 297s Preparing to unpack .../319-librust-ciborium-dev_0.2.2-2_armhf.deb ... 297s Unpacking librust-ciborium-dev:armhf (0.2.2-2) ... 297s Selecting previously unselected package librust-clap-lex-dev:armhf. 297s Preparing to unpack .../320-librust-clap-lex-dev_0.7.2-2_armhf.deb ... 297s Unpacking librust-clap-lex-dev:armhf (0.7.2-2) ... 297s Selecting previously unselected package librust-strsim-dev:armhf. 297s Preparing to unpack .../321-librust-strsim-dev_0.11.1-1_armhf.deb ... 297s Unpacking librust-strsim-dev:armhf (0.11.1-1) ... 297s Selecting previously unselected package librust-terminal-size-dev:armhf. 297s Preparing to unpack .../322-librust-terminal-size-dev_0.3.0-2_armhf.deb ... 297s Unpacking librust-terminal-size-dev:armhf (0.3.0-2) ... 297s Selecting previously unselected package librust-unicase-dev:armhf. 297s Preparing to unpack .../323-librust-unicase-dev_2.7.0-1_armhf.deb ... 297s Unpacking librust-unicase-dev:armhf (2.7.0-1) ... 297s Selecting previously unselected package librust-unicode-width-dev:armhf. 297s Preparing to unpack .../324-librust-unicode-width-dev_0.1.14-1_armhf.deb ... 297s Unpacking librust-unicode-width-dev:armhf (0.1.14-1) ... 297s Selecting previously unselected package librust-clap-builder-dev:armhf. 297s Preparing to unpack .../325-librust-clap-builder-dev_4.5.15-2_armhf.deb ... 297s Unpacking librust-clap-builder-dev:armhf (4.5.15-2) ... 297s Selecting previously unselected package librust-heck-dev:armhf. 297s Preparing to unpack .../326-librust-heck-dev_0.4.1-1_armhf.deb ... 297s Unpacking librust-heck-dev:armhf (0.4.1-1) ... 297s Selecting previously unselected package librust-clap-derive-dev:armhf. 297s Preparing to unpack .../327-librust-clap-derive-dev_4.5.13-2_armhf.deb ... 297s Unpacking librust-clap-derive-dev:armhf (4.5.13-2) ... 297s Selecting previously unselected package librust-clap-dev:armhf. 297s Preparing to unpack .../328-librust-clap-dev_4.5.16-1_armhf.deb ... 297s Unpacking librust-clap-dev:armhf (4.5.16-1) ... 297s Selecting previously unselected package librust-csv-core-dev:armhf. 297s Preparing to unpack .../329-librust-csv-core-dev_0.1.11-1_armhf.deb ... 297s Unpacking librust-csv-core-dev:armhf (0.1.11-1) ... 297s Selecting previously unselected package librust-csv-dev:armhf. 297s Preparing to unpack .../330-librust-csv-dev_1.3.0-1_armhf.deb ... 297s Unpacking librust-csv-dev:armhf (1.3.0-1) ... 297s Selecting previously unselected package librust-futures-sink-dev:armhf. 297s Preparing to unpack .../331-librust-futures-sink-dev_0.3.31-1_armhf.deb ... 297s Unpacking librust-futures-sink-dev:armhf (0.3.31-1) ... 297s Selecting previously unselected package librust-futures-channel-dev:armhf. 297s Preparing to unpack .../332-librust-futures-channel-dev_0.3.30-1_armhf.deb ... 297s Unpacking librust-futures-channel-dev:armhf (0.3.30-1) ... 297s Selecting previously unselected package librust-futures-task-dev:armhf. 297s Preparing to unpack .../333-librust-futures-task-dev_0.3.30-1_armhf.deb ... 297s Unpacking librust-futures-task-dev:armhf (0.3.30-1) ... 297s Selecting previously unselected package librust-futures-macro-dev:armhf. 297s Preparing to unpack .../334-librust-futures-macro-dev_0.3.30-1_armhf.deb ... 297s Unpacking librust-futures-macro-dev:armhf (0.3.30-1) ... 297s Selecting previously unselected package librust-futures-util-dev:armhf. 298s Preparing to unpack .../335-librust-futures-util-dev_0.3.30-2_armhf.deb ... 298s Unpacking librust-futures-util-dev:armhf (0.3.30-2) ... 298s Selecting previously unselected package librust-num-cpus-dev:armhf. 298s Preparing to unpack .../336-librust-num-cpus-dev_1.16.0-1_armhf.deb ... 298s Unpacking librust-num-cpus-dev:armhf (1.16.0-1) ... 298s Selecting previously unselected package librust-futures-executor-dev:armhf. 298s Preparing to unpack .../337-librust-futures-executor-dev_0.3.30-1_armhf.deb ... 298s Unpacking librust-futures-executor-dev:armhf (0.3.30-1) ... 298s Selecting previously unselected package librust-futures-dev:armhf. 298s Preparing to unpack .../338-librust-futures-dev_0.3.30-2_armhf.deb ... 298s Unpacking librust-futures-dev:armhf (0.3.30-2) ... 298s Selecting previously unselected package librust-is-terminal-dev:armhf. 298s Preparing to unpack .../339-librust-is-terminal-dev_0.4.13-1_armhf.deb ... 298s Unpacking librust-is-terminal-dev:armhf (0.4.13-1) ... 298s Selecting previously unselected package librust-itertools-dev:armhf. 298s Preparing to unpack .../340-librust-itertools-dev_0.10.5-1_armhf.deb ... 298s Unpacking librust-itertools-dev:armhf (0.10.5-1) ... 298s Selecting previously unselected package librust-oorandom-dev:armhf. 298s Preparing to unpack .../341-librust-oorandom-dev_11.1.3-1_armhf.deb ... 298s Unpacking librust-oorandom-dev:armhf (11.1.3-1) ... 298s Selecting previously unselected package librust-winapi-i686-pc-windows-gnu-dev:armhf. 298s Preparing to unpack .../342-librust-winapi-i686-pc-windows-gnu-dev_0.4.0-1_armhf.deb ... 298s Unpacking librust-winapi-i686-pc-windows-gnu-dev:armhf (0.4.0-1) ... 298s Selecting previously unselected package librust-winapi-x86-64-pc-windows-gnu-dev:armhf. 298s Preparing to unpack .../343-librust-winapi-x86-64-pc-windows-gnu-dev_0.4.0-1_armhf.deb ... 298s Unpacking librust-winapi-x86-64-pc-windows-gnu-dev:armhf (0.4.0-1) ... 298s Selecting previously unselected package librust-winapi-dev:armhf. 298s Preparing to unpack .../344-librust-winapi-dev_0.3.9-1_armhf.deb ... 298s Unpacking librust-winapi-dev:armhf (0.3.9-1) ... 298s Selecting previously unselected package librust-dirs-sys-next-dev:armhf. 298s Preparing to unpack .../345-librust-dirs-sys-next-dev_0.1.1-1_armhf.deb ... 298s Unpacking librust-dirs-sys-next-dev:armhf (0.1.1-1) ... 298s Selecting previously unselected package librust-dirs-next-dev:armhf. 298s Preparing to unpack .../346-librust-dirs-next-dev_2.0.0-1_armhf.deb ... 298s Unpacking librust-dirs-next-dev:armhf (2.0.0-1) ... 298s Selecting previously unselected package librust-float-ord-dev:armhf. 298s Preparing to unpack .../347-librust-float-ord-dev_0.3.2-1_armhf.deb ... 298s Unpacking librust-float-ord-dev:armhf (0.3.2-1) ... 298s Selecting previously unselected package librust-cmake-dev:armhf. 298s Preparing to unpack .../348-librust-cmake-dev_0.1.45-1_armhf.deb ... 298s Unpacking librust-cmake-dev:armhf (0.1.45-1) ... 298s Selecting previously unselected package librust-freetype-sys-dev:armhf. 298s Preparing to unpack .../349-librust-freetype-sys-dev_0.13.1-1_armhf.deb ... 298s Unpacking librust-freetype-sys-dev:armhf (0.13.1-1) ... 298s Selecting previously unselected package librust-freetype-dev:armhf. 298s Preparing to unpack .../350-librust-freetype-dev_0.7.0-4_armhf.deb ... 298s Unpacking librust-freetype-dev:armhf (0.7.0-4) ... 298s Selecting previously unselected package librust-spin-dev:armhf. 299s Preparing to unpack .../351-librust-spin-dev_0.9.8-4_armhf.deb ... 299s Unpacking librust-spin-dev:armhf (0.9.8-4) ... 299s Selecting previously unselected package librust-lazy-static-dev:armhf. 299s Preparing to unpack .../352-librust-lazy-static-dev_1.5.0-1_armhf.deb ... 299s Unpacking librust-lazy-static-dev:armhf (1.5.0-1) ... 299s Selecting previously unselected package librust-pathfinder-simd-dev:armhf. 299s Preparing to unpack .../353-librust-pathfinder-simd-dev_0.5.2-1_armhf.deb ... 299s Unpacking librust-pathfinder-simd-dev:armhf (0.5.2-1) ... 299s Selecting previously unselected package librust-pathfinder-geometry-dev:armhf. 299s Preparing to unpack .../354-librust-pathfinder-geometry-dev_0.5.1-1_armhf.deb ... 299s Unpacking librust-pathfinder-geometry-dev:armhf (0.5.1-1) ... 299s Selecting previously unselected package librust-winapi-util-dev:armhf. 299s Preparing to unpack .../355-librust-winapi-util-dev_0.1.6-1_armhf.deb ... 299s Unpacking librust-winapi-util-dev:armhf (0.1.6-1) ... 299s Selecting previously unselected package librust-same-file-dev:armhf. 299s Preparing to unpack .../356-librust-same-file-dev_1.0.6-1_armhf.deb ... 299s Unpacking librust-same-file-dev:armhf (1.0.6-1) ... 299s Selecting previously unselected package librust-walkdir-dev:armhf. 299s Preparing to unpack .../357-librust-walkdir-dev_2.5.0-1_armhf.deb ... 299s Unpacking librust-walkdir-dev:armhf (2.5.0-1) ... 299s Selecting previously unselected package librust-const-cstr-dev:armhf. 299s Preparing to unpack .../358-librust-const-cstr-dev_0.3.0-1_armhf.deb ... 299s Unpacking librust-const-cstr-dev:armhf (0.3.0-1) ... 299s Selecting previously unselected package librust-libloading-dev:armhf. 299s Preparing to unpack .../359-librust-libloading-dev_0.8.5-1_armhf.deb ... 299s Unpacking librust-libloading-dev:armhf (0.8.5-1) ... 299s Selecting previously unselected package librust-dlib-dev:armhf. 299s Preparing to unpack .../360-librust-dlib-dev_0.5.2-2_armhf.deb ... 299s Unpacking librust-dlib-dev:armhf (0.5.2-2) ... 299s Selecting previously unselected package librust-yeslogic-fontconfig-sys-dev:armhf. 299s Preparing to unpack .../361-librust-yeslogic-fontconfig-sys-dev_3.0.1-1_armhf.deb ... 299s Unpacking librust-yeslogic-fontconfig-sys-dev:armhf (3.0.1-1) ... 299s Selecting previously unselected package librust-font-kit-dev:armhf. 299s Preparing to unpack .../362-librust-font-kit-dev_0.11.0-2_armhf.deb ... 299s Unpacking librust-font-kit-dev:armhf (0.11.0-2) ... 299s Selecting previously unselected package librust-color-quant-dev:armhf. 299s Preparing to unpack .../363-librust-color-quant-dev_1.1.0-1_armhf.deb ... 299s Unpacking librust-color-quant-dev:armhf (1.1.0-1) ... 299s Selecting previously unselected package librust-weezl-dev:armhf. 299s Preparing to unpack .../364-librust-weezl-dev_0.1.5-1_armhf.deb ... 299s Unpacking librust-weezl-dev:armhf (0.1.5-1) ... 299s Selecting previously unselected package librust-gif-dev:armhf. 299s Preparing to unpack .../365-librust-gif-dev_0.11.3-1_armhf.deb ... 299s Unpacking librust-gif-dev:armhf (0.11.3-1) ... 299s Selecting previously unselected package librust-jpeg-decoder-dev:armhf. 299s Preparing to unpack .../366-librust-jpeg-decoder-dev_0.3.0-1_armhf.deb ... 299s Unpacking librust-jpeg-decoder-dev:armhf (0.3.0-1) ... 299s Selecting previously unselected package librust-num-integer-dev:armhf. 299s Preparing to unpack .../367-librust-num-integer-dev_0.1.46-1_armhf.deb ... 299s Unpacking librust-num-integer-dev:armhf (0.1.46-1) ... 299s Selecting previously unselected package librust-humantime-dev:armhf. 299s Preparing to unpack .../368-librust-humantime-dev_2.1.0-1_armhf.deb ... 299s Unpacking librust-humantime-dev:armhf (2.1.0-1) ... 299s Selecting previously unselected package librust-termcolor-dev:armhf. 299s Preparing to unpack .../369-librust-termcolor-dev_1.4.1-1_armhf.deb ... 299s Unpacking librust-termcolor-dev:armhf (1.4.1-1) ... 299s Selecting previously unselected package librust-env-logger-dev:armhf. 299s Preparing to unpack .../370-librust-env-logger-dev_0.10.2-2_armhf.deb ... 299s Unpacking librust-env-logger-dev:armhf (0.10.2-2) ... 299s Selecting previously unselected package librust-quickcheck-dev:armhf. 299s Preparing to unpack .../371-librust-quickcheck-dev_1.0.3-3_armhf.deb ... 299s Unpacking librust-quickcheck-dev:armhf (1.0.3-3) ... 299s Selecting previously unselected package librust-num-bigint-dev:armhf. 299s Preparing to unpack .../372-librust-num-bigint-dev_0.4.6-1_armhf.deb ... 299s Unpacking librust-num-bigint-dev:armhf (0.4.6-1) ... 299s Selecting previously unselected package librust-num-rational-dev:armhf. 300s Preparing to unpack .../373-librust-num-rational-dev_0.4.2-1_armhf.deb ... 300s Unpacking librust-num-rational-dev:armhf (0.4.2-1) ... 300s Selecting previously unselected package librust-png-dev:armhf. 300s Preparing to unpack .../374-librust-png-dev_0.17.7-3_armhf.deb ... 300s Unpacking librust-png-dev:armhf (0.17.7-3) ... 300s Selecting previously unselected package librust-qoi-dev:armhf. 300s Preparing to unpack .../375-librust-qoi-dev_0.4.1-2_armhf.deb ... 300s Unpacking librust-qoi-dev:armhf (0.4.1-2) ... 300s Selecting previously unselected package librust-tiff-dev:armhf. 300s Preparing to unpack .../376-librust-tiff-dev_0.9.0-1_armhf.deb ... 300s Unpacking librust-tiff-dev:armhf (0.9.0-1) ... 300s Selecting previously unselected package libsharpyuv0:armhf. 300s Preparing to unpack .../377-libsharpyuv0_1.4.0-0.1_armhf.deb ... 300s Unpacking libsharpyuv0:armhf (1.4.0-0.1) ... 300s Selecting previously unselected package libwebp7:armhf. 300s Preparing to unpack .../378-libwebp7_1.4.0-0.1_armhf.deb ... 300s Unpacking libwebp7:armhf (1.4.0-0.1) ... 300s Selecting previously unselected package libwebpdemux2:armhf. 300s Preparing to unpack .../379-libwebpdemux2_1.4.0-0.1_armhf.deb ... 300s Unpacking libwebpdemux2:armhf (1.4.0-0.1) ... 300s Selecting previously unselected package libwebpmux3:armhf. 300s Preparing to unpack .../380-libwebpmux3_1.4.0-0.1_armhf.deb ... 300s Unpacking libwebpmux3:armhf (1.4.0-0.1) ... 300s Selecting previously unselected package libwebpdecoder3:armhf. 300s Preparing to unpack .../381-libwebpdecoder3_1.4.0-0.1_armhf.deb ... 300s Unpacking libwebpdecoder3:armhf (1.4.0-0.1) ... 300s Selecting previously unselected package libsharpyuv-dev:armhf. 300s Preparing to unpack .../382-libsharpyuv-dev_1.4.0-0.1_armhf.deb ... 300s Unpacking libsharpyuv-dev:armhf (1.4.0-0.1) ... 300s Selecting previously unselected package libwebp-dev:armhf. 300s Preparing to unpack .../383-libwebp-dev_1.4.0-0.1_armhf.deb ... 300s Unpacking libwebp-dev:armhf (1.4.0-0.1) ... 300s Selecting previously unselected package librust-libwebp-sys-dev:armhf. 300s Preparing to unpack .../384-librust-libwebp-sys-dev_0.9.5-1build1_armhf.deb ... 300s Unpacking librust-libwebp-sys-dev:armhf (0.9.5-1build1) ... 300s Selecting previously unselected package librust-webp-dev:armhf. 300s Preparing to unpack .../385-librust-webp-dev_0.2.6-1_armhf.deb ... 300s Unpacking librust-webp-dev:armhf (0.2.6-1) ... 300s Selecting previously unselected package librust-image-dev:armhf. 300s Preparing to unpack .../386-librust-image-dev_0.24.7-2_armhf.deb ... 300s Unpacking librust-image-dev:armhf (0.24.7-2) ... 300s Selecting previously unselected package librust-plotters-backend-dev:armhf. 300s Preparing to unpack .../387-librust-plotters-backend-dev_0.3.7-1_armhf.deb ... 300s Unpacking librust-plotters-backend-dev:armhf (0.3.7-1) ... 300s Selecting previously unselected package librust-plotters-bitmap-dev:armhf. 300s Preparing to unpack .../388-librust-plotters-bitmap-dev_0.3.3-3_armhf.deb ... 300s Unpacking librust-plotters-bitmap-dev:armhf (0.3.3-3) ... 300s Selecting previously unselected package librust-plotters-svg-dev:armhf. 300s Preparing to unpack .../389-librust-plotters-svg-dev_0.3.5-1_armhf.deb ... 300s Unpacking librust-plotters-svg-dev:armhf (0.3.5-1) ... 300s Selecting previously unselected package librust-web-sys-dev:armhf. 300s Preparing to unpack .../390-librust-web-sys-dev_0.3.64-2_armhf.deb ... 300s Unpacking librust-web-sys-dev:armhf (0.3.64-2) ... 301s Selecting previously unselected package librust-plotters-dev:armhf. 301s Preparing to unpack .../391-librust-plotters-dev_0.3.5-4_armhf.deb ... 301s Unpacking librust-plotters-dev:armhf (0.3.5-4) ... 301s Selecting previously unselected package librust-smol-dev. 301s Preparing to unpack .../392-librust-smol-dev_2.0.2-1_all.deb ... 301s Unpacking librust-smol-dev (2.0.2-1) ... 301s Selecting previously unselected package librust-tinytemplate-dev:armhf. 301s Preparing to unpack .../393-librust-tinytemplate-dev_1.2.1-1_armhf.deb ... 301s Unpacking librust-tinytemplate-dev:armhf (1.2.1-1) ... 301s Selecting previously unselected package librust-criterion-dev. 301s Preparing to unpack .../394-librust-criterion-dev_0.5.1-6_all.deb ... 301s Unpacking librust-criterion-dev (0.5.1-6) ... 301s Selecting previously unselected package librust-phf-generator-dev:armhf. 301s Preparing to unpack .../395-librust-phf-generator-dev_0.11.2-2_armhf.deb ... 301s Unpacking librust-phf-generator-dev:armhf (0.11.2-2) ... 301s Selecting previously unselected package librust-phf-codegen-dev:armhf. 301s Preparing to unpack .../396-librust-phf-codegen-dev_0.11.2-1_armhf.deb ... 301s Unpacking librust-phf-codegen-dev:armhf (0.11.2-1) ... 301s Selecting previously unselected package librust-chrono-tz-build-dev:armhf. 301s Preparing to unpack .../397-librust-chrono-tz-build-dev_0.2.1-1_armhf.deb ... 301s Unpacking librust-chrono-tz-build-dev:armhf (0.2.1-1) ... 301s Selecting previously unselected package librust-chrono-tz-dev:armhf. 301s Preparing to unpack .../398-librust-chrono-tz-dev_0.8.6-2_armhf.deb ... 301s Unpacking librust-chrono-tz-dev:armhf (0.8.6-2) ... 301s Selecting previously unselected package librust-ctor-dev:armhf. 301s Preparing to unpack .../399-librust-ctor-dev_0.1.26-1_armhf.deb ... 301s Unpacking librust-ctor-dev:armhf (0.1.26-1) ... 301s Selecting previously unselected package librust-powerfmt-macros-dev:armhf. 301s Preparing to unpack .../400-librust-powerfmt-macros-dev_0.1.0-1_armhf.deb ... 301s Unpacking librust-powerfmt-macros-dev:armhf (0.1.0-1) ... 301s Selecting previously unselected package librust-powerfmt-dev:armhf. 301s Preparing to unpack .../401-librust-powerfmt-dev_0.2.0-1_armhf.deb ... 301s Unpacking librust-powerfmt-dev:armhf (0.2.0-1) ... 301s Selecting previously unselected package librust-deranged-dev:armhf. 301s Preparing to unpack .../402-librust-deranged-dev_0.3.11-1_armhf.deb ... 301s Unpacking librust-deranged-dev:armhf (0.3.11-1) ... 301s Selecting previously unselected package librust-eui48-dev:armhf. 301s Preparing to unpack .../403-librust-eui48-dev_1.1.0-2_armhf.deb ... 301s Unpacking librust-eui48-dev:armhf (1.1.0-2) ... 301s Selecting previously unselected package librust-indenter-dev:armhf. 302s Preparing to unpack .../404-librust-indenter-dev_0.3.3-1_armhf.deb ... 302s Unpacking librust-indenter-dev:armhf (0.3.3-1) ... 302s Selecting previously unselected package librust-eyre-dev:armhf. 302s Preparing to unpack .../405-librust-eyre-dev_0.6.12-1_armhf.deb ... 302s Unpacking librust-eyre-dev:armhf (0.6.12-1) ... 302s Selecting previously unselected package librust-eyre+default-dev:armhf. 302s Preparing to unpack .../406-librust-eyre+default-dev_0.6.12-1_armhf.deb ... 302s Unpacking librust-eyre+default-dev:armhf (0.6.12-1) ... 302s Selecting previously unselected package librust-fancy-regex-dev:armhf. 302s Preparing to unpack .../407-librust-fancy-regex-dev_0.11.0-2_armhf.deb ... 302s Unpacking librust-fancy-regex-dev:armhf (0.11.0-2) ... 302s Selecting previously unselected package librust-fnv-dev:armhf. 302s Preparing to unpack .../408-librust-fnv-dev_1.0.7-1_armhf.deb ... 302s Unpacking librust-fnv-dev:armhf (1.0.7-1) ... 302s Selecting previously unselected package librust-geo-types-dev:armhf. 302s Preparing to unpack .../409-librust-geo-types-dev_0.7.11-2_armhf.deb ... 302s Unpacking librust-geo-types-dev:armhf (0.7.11-2) ... 302s Selecting previously unselected package librust-ghost-dev:armhf. 302s Preparing to unpack .../410-librust-ghost-dev_0.1.5-1_armhf.deb ... 302s Unpacking librust-ghost-dev:armhf (0.1.5-1) ... 302s Selecting previously unselected package librust-hmac-dev:armhf. 302s Preparing to unpack .../411-librust-hmac-dev_0.12.1-1_armhf.deb ... 302s Unpacking librust-hmac-dev:armhf (0.12.1-1) ... 302s Selecting previously unselected package librust-indoc-dev:armhf. 302s Preparing to unpack .../412-librust-indoc-dev_2.0.5-1_armhf.deb ... 302s Unpacking librust-indoc-dev:armhf (2.0.5-1) ... 302s Selecting previously unselected package librust-inventory-dev:armhf. 302s Preparing to unpack .../413-librust-inventory-dev_0.3.2-1_armhf.deb ... 302s Unpacking librust-inventory-dev:armhf (0.3.2-1) ... 302s Selecting previously unselected package librust-memoffset-dev:armhf. 302s Preparing to unpack .../414-librust-memoffset-dev_0.8.0-1_armhf.deb ... 302s Unpacking librust-memoffset-dev:armhf (0.8.0-1) ... 302s Selecting previously unselected package librust-num-conv-dev:armhf. 302s Preparing to unpack .../415-librust-num-conv-dev_0.1.0-1_armhf.deb ... 302s Unpacking librust-num-conv-dev:armhf (0.1.0-1) ... 302s Selecting previously unselected package librust-num-threads-dev:armhf. 302s Preparing to unpack .../416-librust-num-threads-dev_0.1.7-1_armhf.deb ... 302s Unpacking librust-num-threads-dev:armhf (0.1.7-1) ... 302s Selecting previously unselected package librust-postgres-derive-dev:armhf. 302s Preparing to unpack .../417-librust-postgres-derive-dev_0.4.5-1_armhf.deb ... 302s Unpacking librust-postgres-derive-dev:armhf (0.4.5-1) ... 302s Selecting previously unselected package librust-sha2-asm-dev:armhf. 302s Preparing to unpack .../418-librust-sha2-asm-dev_0.6.2-2_armhf.deb ... 302s Unpacking librust-sha2-asm-dev:armhf (0.6.2-2) ... 302s Selecting previously unselected package librust-sha2-dev:armhf. 302s Preparing to unpack .../419-librust-sha2-dev_0.10.8-1_armhf.deb ... 302s Unpacking librust-sha2-dev:armhf (0.10.8-1) ... 302s Selecting previously unselected package librust-unicode-bidi-dev:armhf. 302s Preparing to unpack .../420-librust-unicode-bidi-dev_0.3.13-1_armhf.deb ... 302s Unpacking librust-unicode-bidi-dev:armhf (0.3.13-1) ... 302s Selecting previously unselected package librust-unicode-normalization-dev:armhf. 302s Preparing to unpack .../421-librust-unicode-normalization-dev_0.1.22-1_armhf.deb ... 302s Unpacking librust-unicode-normalization-dev:armhf (0.1.22-1) ... 302s Selecting previously unselected package librust-stringprep-dev:armhf. 302s Preparing to unpack .../422-librust-stringprep-dev_0.1.2-1_armhf.deb ... 302s Unpacking librust-stringprep-dev:armhf (0.1.2-1) ... 303s Selecting previously unselected package librust-postgres-protocol-dev:armhf. 303s Preparing to unpack .../423-librust-postgres-protocol-dev_0.6.6-2_armhf.deb ... 303s Unpacking librust-postgres-protocol-dev:armhf (0.6.6-2) ... 303s Selecting previously unselected package librust-time-core-dev:armhf. 303s Preparing to unpack .../424-librust-time-core-dev_0.1.2-1_armhf.deb ... 303s Unpacking librust-time-core-dev:armhf (0.1.2-1) ... 303s Selecting previously unselected package librust-time-macros-dev:armhf. 303s Preparing to unpack .../425-librust-time-macros-dev_0.2.16-1_armhf.deb ... 303s Unpacking librust-time-macros-dev:armhf (0.2.16-1) ... 303s Selecting previously unselected package librust-time-dev:armhf. 303s Preparing to unpack .../426-librust-time-dev_0.3.36-2_armhf.deb ... 303s Unpacking librust-time-dev:armhf (0.3.36-2) ... 303s Selecting previously unselected package librust-postgres-types-dev:armhf. 303s Preparing to unpack .../427-librust-postgres-types-dev_0.2.6-2_armhf.deb ... 303s Unpacking librust-postgres-types-dev:armhf (0.2.6-2) ... 303s Selecting previously unselected package librust-rand-xorshift-dev:armhf. 303s Preparing to unpack .../428-librust-rand-xorshift-dev_0.3.0-2_armhf.deb ... 303s Unpacking librust-rand-xorshift-dev:armhf (0.3.0-2) ... 303s Selecting previously unselected package librust-quick-error-dev:armhf. 303s Preparing to unpack .../429-librust-quick-error-dev_2.0.1-1_armhf.deb ... 303s Unpacking librust-quick-error-dev:armhf (2.0.1-1) ... 303s Selecting previously unselected package librust-tempfile-dev:armhf. 303s Preparing to unpack .../430-librust-tempfile-dev_3.10.1-1_armhf.deb ... 303s Unpacking librust-tempfile-dev:armhf (3.10.1-1) ... 303s Selecting previously unselected package librust-rusty-fork-dev:armhf. 303s Preparing to unpack .../431-librust-rusty-fork-dev_0.3.0-1_armhf.deb ... 303s Unpacking librust-rusty-fork-dev:armhf (0.3.0-1) ... 303s Selecting previously unselected package librust-wait-timeout-dev:armhf. 303s Preparing to unpack .../432-librust-wait-timeout-dev_0.2.0-1_armhf.deb ... 303s Unpacking librust-wait-timeout-dev:armhf (0.2.0-1) ... 303s Selecting previously unselected package librust-rusty-fork+wait-timeout-dev:armhf. 303s Preparing to unpack .../433-librust-rusty-fork+wait-timeout-dev_0.3.0-1_armhf.deb ... 303s Unpacking librust-rusty-fork+wait-timeout-dev:armhf (0.3.0-1) ... 303s Selecting previously unselected package librust-unarray-dev:armhf. 303s Preparing to unpack .../434-librust-unarray-dev_0.1.4-1_armhf.deb ... 303s Unpacking librust-unarray-dev:armhf (0.1.4-1) ... 303s Selecting previously unselected package librust-proptest-dev:armhf. 303s Preparing to unpack .../435-librust-proptest-dev_1.5.0-2_armhf.deb ... 303s Unpacking librust-proptest-dev:armhf (1.5.0-2) ... 303s Selecting previously unselected package llvm-19-runtime. 303s Preparing to unpack .../436-llvm-19-runtime_1%3a19.1.2-1ubuntu1_armhf.deb ... 303s Unpacking llvm-19-runtime (1:19.1.2-1ubuntu1) ... 303s Selecting previously unselected package llvm-runtime:armhf. 303s Preparing to unpack .../437-llvm-runtime_1%3a19.0-60~exp1_armhf.deb ... 303s Unpacking llvm-runtime:armhf (1:19.0-60~exp1) ... 303s Selecting previously unselected package llvm-19-linker-tools. 303s Preparing to unpack .../438-llvm-19-linker-tools_1%3a19.1.2-1ubuntu1_armhf.deb ... 303s Unpacking llvm-19-linker-tools (1:19.1.2-1ubuntu1) ... 303s Selecting previously unselected package libpfm4:armhf. 303s Preparing to unpack .../439-libpfm4_4.13.0+git83-g91970fe-1_armhf.deb ... 303s Unpacking libpfm4:armhf (4.13.0+git83-g91970fe-1) ... 303s Selecting previously unselected package llvm-19. 304s Preparing to unpack .../440-llvm-19_1%3a19.1.2-1ubuntu1_armhf.deb ... 304s Unpacking llvm-19 (1:19.1.2-1ubuntu1) ... 304s Selecting previously unselected package llvm. 304s Preparing to unpack .../441-llvm_1%3a19.0-60~exp1_armhf.deb ... 304s Unpacking llvm (1:19.0-60~exp1) ... 304s Selecting previously unselected package binutils-mingw-w64-x86-64. 304s Preparing to unpack .../442-binutils-mingw-w64-x86-64_2.43.1-4ubuntu1+12_armhf.deb ... 304s Unpacking binutils-mingw-w64-x86-64 (2.43.1-4ubuntu1+12) ... 304s Selecting previously unselected package binutils-mingw-w64-i686. 304s Preparing to unpack .../443-binutils-mingw-w64-i686_2.43.1-4ubuntu1+12_armhf.deb ... 304s Unpacking binutils-mingw-w64-i686 (2.43.1-4ubuntu1+12) ... 304s Selecting previously unselected package librust-python3-dll-a-dev:armhf. 304s Preparing to unpack .../444-librust-python3-dll-a-dev_0.2.10-1_armhf.deb ... 304s Unpacking librust-python3-dll-a-dev:armhf (0.2.10-1) ... 304s Selecting previously unselected package librust-target-lexicon-dev:armhf. 304s Preparing to unpack .../445-librust-target-lexicon-dev_0.12.14-1_armhf.deb ... 304s Unpacking librust-target-lexicon-dev:armhf (0.12.14-1) ... 304s Selecting previously unselected package librust-pyo3-build-config-dev:armhf. 304s Preparing to unpack .../446-librust-pyo3-build-config-dev_0.22.6-1_armhf.deb ... 304s Unpacking librust-pyo3-build-config-dev:armhf (0.22.6-1) ... 305s Selecting previously unselected package python3.12-dev. 305s Preparing to unpack .../447-python3.12-dev_3.12.7-3_armhf.deb ... 305s Unpacking python3.12-dev (3.12.7-3) ... 305s Selecting previously unselected package librust-pyo3-ffi-dev:armhf. 305s Preparing to unpack .../448-librust-pyo3-ffi-dev_0.22.6-1build1_armhf.deb ... 305s Unpacking librust-pyo3-ffi-dev:armhf (0.22.6-1build1) ... 305s Selecting previously unselected package librust-pyo3-macros-backend-dev:armhf. 305s Preparing to unpack .../449-librust-pyo3-macros-backend-dev_0.22.6-1_armhf.deb ... 305s Unpacking librust-pyo3-macros-backend-dev:armhf (0.22.6-1) ... 305s Selecting previously unselected package librust-pyo3-macros-dev:armhf. 305s Preparing to unpack .../450-librust-pyo3-macros-dev_0.22.6-1_armhf.deb ... 305s Unpacking librust-pyo3-macros-dev:armhf (0.22.6-1) ... 305s Selecting previously unselected package librust-rust-decimal-dev:armhf. 305s Preparing to unpack .../451-librust-rust-decimal-dev_1.36.0-1_armhf.deb ... 305s Unpacking librust-rust-decimal-dev:armhf (1.36.0-1) ... 305s Selecting previously unselected package librust-unindent-dev:armhf. 305s Preparing to unpack .../452-librust-unindent-dev_0.2.3-1_armhf.deb ... 305s Unpacking librust-unindent-dev:armhf (0.2.3-1) ... 305s Selecting previously unselected package librust-pyo3-dev:armhf. 305s Preparing to unpack .../453-librust-pyo3-dev_0.22.6-1_armhf.deb ... 305s Unpacking librust-pyo3-dev:armhf (0.22.6-1) ... 305s Selecting previously unselected package librust-rustc-hash-dev:armhf. 305s Preparing to unpack .../454-librust-rustc-hash-dev_1.1.0-1_armhf.deb ... 305s Unpacking librust-rustc-hash-dev:armhf (1.1.0-1) ... 305s Selecting previously unselected package pybuild-plugin-autopkgtest. 305s Preparing to unpack .../455-pybuild-plugin-autopkgtest_6.20241024_all.deb ... 305s Unpacking pybuild-plugin-autopkgtest (6.20241024) ... 305s Selecting previously unselected package python3-packaging. 305s Preparing to unpack .../456-python3-packaging_24.2-1_all.deb ... 305s Unpacking python3-packaging (24.2-1) ... 305s Selecting previously unselected package python3-pyproject-hooks. 305s Preparing to unpack .../457-python3-pyproject-hooks_1.2.0-1_all.deb ... 305s Unpacking python3-pyproject-hooks (1.2.0-1) ... 305s Selecting previously unselected package python3-toml. 305s Preparing to unpack .../458-python3-toml_0.10.2-1_all.deb ... 305s Unpacking python3-toml (0.10.2-1) ... 305s Selecting previously unselected package python3-wheel. 305s Preparing to unpack .../459-python3-wheel_0.45.0-1_all.deb ... 305s Unpacking python3-wheel (0.45.0-1) ... 305s Selecting previously unselected package python3-build. 305s Preparing to unpack .../460-python3-build_1.2.2-1_all.deb ... 305s Unpacking python3-build (1.2.2-1) ... 305s Selecting previously unselected package python3-installer. 305s Preparing to unpack .../461-python3-installer_0.7.0+dfsg1-3_all.deb ... 305s Unpacking python3-installer (0.7.0+dfsg1-3) ... 305s Selecting previously unselected package pybuild-plugin-pyproject. 305s Preparing to unpack .../462-pybuild-plugin-pyproject_6.20241024_all.deb ... 305s Unpacking pybuild-plugin-pyproject (6.20241024) ... 305s Selecting previously unselected package python3.13. 305s Preparing to unpack .../463-python3.13_3.13.0-2_armhf.deb ... 305s Unpacking python3.13 (3.13.0-2) ... 305s Selecting previously unselected package python3-all. 305s Preparing to unpack .../464-python3-all_3.12.7-1_armhf.deb ... 305s Unpacking python3-all (3.12.7-1) ... 305s Selecting previously unselected package python3-dateutil. 305s Preparing to unpack .../465-python3-dateutil_2.9.0-3_all.deb ... 305s Unpacking python3-dateutil (2.9.0-3) ... 306s Selecting previously unselected package python3-sortedcontainers. 306s Preparing to unpack .../466-python3-sortedcontainers_2.4.0-2_all.deb ... 306s Unpacking python3-sortedcontainers (2.4.0-2) ... 306s Selecting previously unselected package python3-hypothesis. 306s Preparing to unpack .../467-python3-hypothesis_6.119.3-1_all.deb ... 306s Unpacking python3-hypothesis (6.119.3-1) ... 306s Selecting previously unselected package python3-iniconfig. 306s Preparing to unpack .../468-python3-iniconfig_1.1.1-2_all.deb ... 306s Unpacking python3-iniconfig (1.1.1-2) ... 306s Selecting previously unselected package python3-pluggy. 306s Preparing to unpack .../469-python3-pluggy_1.5.0-1_all.deb ... 306s Unpacking python3-pluggy (1.5.0-1) ... 306s Selecting previously unselected package python3-pytest. 306s Preparing to unpack .../470-python3-pytest_8.3.3-1_all.deb ... 306s Unpacking python3-pytest (8.3.3-1) ... 306s Selecting previously unselected package python3-regex. 306s Preparing to unpack .../471-python3-regex_0.1.20240724-1build1_armhf.deb ... 306s Unpacking python3-regex (0.1.20240724-1build1) ... 306s Selecting previously unselected package python3-semantic-version. 306s Preparing to unpack .../472-python3-semantic-version_2.10.0-2_all.deb ... 306s Unpacking python3-semantic-version (2.10.0-2) ... 306s Selecting previously unselected package rustc. 306s Preparing to unpack .../473-rustc_1.80.1ubuntu2_armhf.deb ... 306s Unpacking rustc (1.80.1ubuntu2) ... 306s Selecting previously unselected package cargo. 306s Preparing to unpack .../474-cargo_1.80.1ubuntu2_armhf.deb ... 306s Unpacking cargo (1.80.1ubuntu2) ... 306s Selecting previously unselected package python3-setuptools-rust. 306s Preparing to unpack .../475-python3-setuptools-rust_1.9.0+dfsg-2_all.deb ... 306s Unpacking python3-setuptools-rust (1.9.0+dfsg-2) ... 306s Selecting previously unselected package python3-tiktoken. 306s Preparing to unpack .../476-python3-tiktoken_0.8.0-1build1_armhf.deb ... 306s Unpacking python3-tiktoken (0.8.0-1build1) ... 306s Selecting previously unselected package autopkgtest-satdep. 306s Preparing to unpack .../477-1-autopkgtest-satdep.deb ... 306s Unpacking autopkgtest-satdep (0) ... 306s Setting up dh-python (6.20241024) ... 306s Setting up librust-ciborium-io-dev:armhf (0.2.2-1) ... 306s Setting up librust-crossbeam-utils-dev:armhf (0.8.19-1) ... 306s Setting up librust-parking-dev:armhf (2.2.0-1) ... 306s Setting up librust-ppv-lite86-dev:armhf (0.2.16-1) ... 306s Setting up python3-iniconfig (1.1.1-2) ... 307s Setting up libllvm19:armhf (1:19.1.2-1ubuntu1) ... 307s Setting up libsharpyuv0:armhf (1.4.0-0.1) ... 307s Setting up librust-pin-utils-dev:armhf (0.1.0-1) ... 307s Setting up librust-fnv-dev:armhf (1.0.7-1) ... 307s Setting up librust-libc-dev:armhf (0.2.155-1) ... 307s Setting up librust-unindent-dev:armhf (0.2.3-1) ... 307s Setting up librust-quick-error-dev:armhf (2.0.1-1) ... 307s Setting up librust-is-terminal-dev:armhf (0.4.13-1) ... 307s Setting up librust-traitobject-dev:armhf (0.1.0-1) ... 307s Setting up librust-either-dev:armhf (1.13.0-1) ... 307s Setting up binutils-mingw-w64-x86-64 (2.43.1-4ubuntu1+12) ... 307s Setting up librust-adler-dev:armhf (1.0.2-2) ... 307s Setting up librust-version-check-dev:armhf (0.9.5-1) ... 307s Setting up librust-base64-dev:armhf (0.21.7-1) ... 307s Setting up librust-indoc-dev:armhf (2.0.5-1) ... 307s Setting up librust-anstyle-dev:armhf (1.0.8-1) ... 307s Setting up librust-winapi-i686-pc-windows-gnu-dev:armhf (0.4.0-1) ... 307s Setting up librust-futures-task-dev:armhf (0.3.30-1) ... 307s Setting up librust-rustc-hash-dev:armhf (1.1.0-1) ... 307s Setting up librust-wasm-bindgen-shared-dev:armhf (0.2.87-1) ... 307s Setting up libarchive-zip-perl (1.68-1) ... 307s Setting up librust-colorchoice-dev:armhf (1.0.0-1) ... 307s Setting up librust-fastrand-dev:armhf (2.1.1-1) ... 307s Setting up librust-socket2-dev:armhf (0.5.7-1) ... 307s Setting up libdebhelper-perl (13.20ubuntu1) ... 307s Setting up librust-unsafe-any-dev:armhf (0.4.2-2) ... 307s Setting up librust-tinyvec-macros-dev:armhf (0.1.0-1) ... 307s Setting up librust-num-cpus-dev:armhf (1.16.0-1) ... 307s Setting up librust-libm-dev:armhf (0.2.8-1) ... 307s Setting up librust-strsim-dev:armhf (0.11.1-1) ... 307s Setting up linux-libc-dev:armhf (6.11.0-8.8) ... 307s Setting up libwebpdecoder3:armhf (1.4.0-0.1) ... 307s Setting up m4 (1.4.19-4build1) ... 307s Setting up librust-rustc-demangle-dev:armhf (0.1.21-1) ... 307s Setting up librust-cpufeatures-dev:armhf (0.2.11-1) ... 307s Setting up librust-const-cstr-dev:armhf (0.3.0-1) ... 307s Setting up librust-fallible-iterator-dev:armhf (0.3.0-2) ... 307s Setting up librust-ryu-dev:armhf (1.0.15-1) ... 307s Setting up python3-sortedcontainers (2.4.0-2) ... 307s Setting up librust-humantime-dev:armhf (2.1.0-1) ... 307s Setting up librust-anstyle-query-dev:armhf (1.0.0-1) ... 307s Setting up librust-cast-dev:armhf (0.3.0-1) ... 307s Setting up libgomp1:armhf (14.2.0-8ubuntu1) ... 307s Setting up librust-subtle-dev:armhf (2.6.1-1) ... 307s Setting up librust-simdutf8-dev:armhf (0.1.4-4) ... 307s Setting up librust-atomic-waker-dev:armhf (1.1.2-1) ... 307s Setting up librust-miniz-oxide-dev:armhf (0.7.1-1) ... 307s Setting up librust-pin-project-lite-dev:armhf (0.2.13-1) ... 307s Setting up python3-wheel (0.45.0-1) ... 307s Setting up librust-unicode-segmentation-dev:armhf (1.11.0-1) ... 307s Setting up librust-typemap-dev:armhf (0.3.3-2) ... 307s Setting up libpython3.12t64:armhf (3.12.7-3) ... 307s Setting up libpython3.13-minimal:armhf (3.13.0-2) ... 307s Setting up librust-compiler-builtins-dev:armhf (0.1.101-1) ... 307s Setting up librust-weezl-dev:armhf (0.1.5-1) ... 307s Setting up librust-utf8parse-dev:armhf (0.2.1-1) ... 307s Setting up librust-signal-hook-registry-dev:armhf (1.4.0-1) ... 307s Setting up librust-crossbeam-epoch-dev:armhf (0.9.18-1) ... 307s Setting up autotools-dev (20220109.1) ... 307s Setting up librust-tap-dev:armhf (1.0.1-1) ... 307s Setting up librust-errno-dev:armhf (0.3.8-1) ... 307s Setting up python3-packaging (24.2-1) ... 307s Setting up librust-array-init-dev:armhf (2.0.1-1) ... 307s Setting up libpkgconf3:armhf (1.8.1-4) ... 307s Setting up libpfm4:armhf (4.13.0+git83-g91970fe-1) ... 307s Setting up rpcsvc-proto (1.4.2-0ubuntu7) ... 307s Setting up librust-oorandom-dev:armhf (11.1.3-1) ... 307s Setting up python3-pyproject-hooks (1.2.0-1) ... 308s Setting up libfreetype6:armhf (2.13.3+dfsg-1) ... 308s Setting up librust-rustc-std-workspace-core-dev:armhf (1.0.0-1) ... 308s Setting up librust-funty-dev:armhf (2.0.0-1) ... 308s Setting up librust-futures-io-dev:armhf (0.3.31-1) ... 308s Setting up librust-typenum-dev:armhf (1.17.0-2) ... 308s Setting up librust-core-maths-dev:armhf (0.1.0-2) ... 308s Setting up librust-stable-deref-trait-dev:armhf (1.2.0-1) ... 308s Setting up librust-critical-section-dev:armhf (1.1.3-1) ... 308s Setting up librust-scopeguard-dev:armhf (1.2.0-1) ... 308s Setting up librust-iana-time-zone-dev:armhf (0.1.60-1) ... 308s Setting up fonts-dejavu-mono (2.37-8) ... 308s Setting up libmpc3:armhf (1.3.1-1build2) ... 308s Setting up librust-rand-core-dev:armhf (0.6.4-2) ... 308s Setting up python3-semantic-version (2.10.0-2) ... 308s Setting up librust-jobserver-dev:armhf (0.1.32-1) ... 308s Setting up autopoint (0.22.5-2) ... 308s Setting up libjsoncpp25:armhf (1.9.5-6build1) ... 308s Setting up fonts-dejavu-core (2.37-8) ... 308s Setting up librust-seahash-dev:armhf (4.1.0-1) ... 308s Setting up pkgconf-bin (1.8.1-4) ... 308s Setting up librust-ab-glyph-rasterizer-dev:armhf (0.1.7-1) ... 308s Setting up binutils-mingw-w64-i686 (2.43.1-4ubuntu1+12) ... 308s Setting up librust-time-core-dev:armhf (0.1.2-1) ... 308s Setting up python3-regex (0.1.20240724-1build1) ... 308s Setting up librust-crunchy-dev:armhf (0.2.2-1) ... 308s Setting up python3-toml (0.10.2-1) ... 308s Setting up librust-unicase-dev:armhf (2.7.0-1) ... 308s Setting up librust-unicode-width-dev:armhf (0.1.14-1) ... 308s Setting up python3-installer (0.7.0+dfsg1-3) ... 309s Setting up autoconf (2.72-3) ... 309s Setting up python3-pluggy (1.5.0-1) ... 309s Setting up libwebp7:armhf (1.4.0-0.1) ... 309s Setting up libubsan1:armhf (14.2.0-8ubuntu1) ... 309s Setting up librust-unicode-ident-dev:armhf (1.0.13-1) ... 309s Setting up librust-equivalent-dev:armhf (1.0.1-1) ... 309s Setting up dwz (0.15-1build6) ... 309s Setting up librust-bitflags-1-dev:armhf (1.3.2-5) ... 309s Setting up librust-uncased-dev:armhf (0.9.6-2) ... 309s Setting up librust-slog-dev:armhf (2.7.0-1) ... 309s Setting up python3-tiktoken (0.8.0-1build1) ... 309s Setting up librust-pure-rust-locales-dev:armhf (0.8.1-1) ... 309s Setting up librhash0:armhf (1.4.3-3build1) ... 309s Setting up libcrypt-dev:armhf (1:4.4.36-5) ... 309s Setting up libasan8:armhf (14.2.0-8ubuntu1) ... 309s Setting up librust-wait-timeout-dev:armhf (0.2.0-1) ... 309s Setting up librust-ttf-parser-dev:armhf (0.24.1-1) ... 309s Setting up librust-cfg-if-dev:armhf (1.0.0-1) ... 309s Setting up debugedit (1:5.1-1) ... 309s Setting up librust-color-quant-dev:armhf (1.1.0-1) ... 309s Setting up python3.13-minimal (3.13.0-2) ... 310s Setting up python3-dateutil (2.9.0-3) ... 310s Setting up librust-blobby-dev:armhf (0.3.1-1) ... 310s Setting up cmake-data (3.30.3-1) ... 310s Setting up llvm-19-linker-tools (1:19.1.2-1ubuntu1) ... 310s Setting up librust-byteorder-dev:armhf (1.5.0-1) ... 310s Setting up librust-static-assertions-dev:armhf (1.1.0-1) ... 310s Setting up librust-compiler-builtins+core-dev:armhf (0.1.101-1) ... 310s Setting up librust-float-ord-dev:armhf (0.3.2-1) ... 310s Setting up librust-autocfg-dev:armhf (1.1.0-1) ... 310s Setting up libgcc-14-dev:armhf (14.2.0-8ubuntu1) ... 310s Setting up libisl23:armhf (0.27-1) ... 310s Setting up librust-time-macros-dev:armhf (0.2.16-1) ... 310s Setting up llvm-19-runtime (1:19.1.2-1ubuntu1) ... 310s Setting up librust-futures-sink-dev:armhf (0.3.31-1) ... 310s Setting up python3-build (1.2.2-1) ... 310s Setting up libsharpyuv-dev:armhf (1.4.0-0.1) ... 310s Setting up libc-dev-bin (2.40-1ubuntu3) ... 310s Setting up librust-cfg-if-0.1-dev:armhf (0.1.10-2) ... 310s Setting up librust-tinyvec-dev:armhf (1.6.0-2) ... 310s Setting up libwebpmux3:armhf (1.4.0-0.1) ... 310s Setting up librust-plotters-backend-dev:armhf (0.3.7-1) ... 310s Setting up librust-shlex-dev:armhf (1.3.0-1) ... 310s Setting up libpython3.13-stdlib:armhf (3.13.0-2) ... 310s Setting up librust-indenter-dev:armhf (0.3.3-1) ... 310s Setting up librust-cpp-demangle-dev:armhf (0.4.0-1) ... 310s Setting up librust-winapi-x86-64-pc-windows-gnu-dev:armhf (0.4.0-1) ... 310s Setting up libcc1-0:armhf (14.2.0-8ubuntu1) ... 310s Setting up libbrotli-dev:armhf (1.1.0-2build3) ... 310s Setting up librust-clap-lex-dev:armhf (0.7.2-2) ... 310s Setting up libhttp-parser2.9:armhf (2.9.4-6build1) ... 310s Setting up librust-unarray-dev:armhf (0.1.4-1) ... 310s Setting up cpp-14-arm-linux-gnueabihf (14.2.0-8ubuntu1) ... 310s Setting up libllvm18:armhf (1:18.1.8-12) ... 310s Setting up librust-itertools-dev:armhf (0.10.5-1) ... 310s Setting up librust-heck-dev:armhf (0.4.1-1) ... 310s Setting up librust-num-conv-dev:armhf (0.1.0-1) ... 310s Setting up libpython3.13:armhf (3.13.0-2) ... 310s Setting up automake (1:1.16.5-1.3ubuntu1) ... 310s update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode 310s Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... 310s Setting up librust-owned-ttf-parser-dev:armhf (0.24.0-1) ... 310s Setting up librust-num-threads-dev:armhf (0.1.7-1) ... 310s Setting up librust-crossbeam-epoch+std-dev:armhf (0.9.18-1) ... 310s Setting up gettext (0.22.5-2) ... 310s Setting up librust-gif-dev:armhf (0.11.3-1) ... 310s Setting up librust-crossbeam-deque-dev:armhf (0.8.5-1) ... 310s Setting up librust-tiny-keccak-dev:armhf (2.0.2-1) ... 310s Setting up python3.13 (3.13.0-2) ... 312s Setting up librust-linux-raw-sys-dev:armhf (0.4.14-1) ... 312s Setting up pybuild-plugin-pyproject (6.20241024) ... 312s Setting up fontconfig-config (2.15.0-1.1ubuntu2) ... 312s Setting up librust-getrandom-dev:armhf (0.2.12-1) ... 312s Setting up python3-pytest (8.3.3-1) ... 313s Setting up librust-libloading-dev:armhf (0.8.5-1) ... 313s Setting up librust-memmap2-dev:armhf (0.9.3-1) ... 313s Setting up libwebpdemux2:armhf (1.4.0-0.1) ... 313s Setting up python3-hypothesis (6.119.3-1) ... 313s Setting up librust-ab-glyph-rasterizer+libm-dev:armhf (0.1.7-1) ... 313s Setting up librust-tinyvec+tinyvec-macros-dev:armhf (1.6.0-2) ... 313s Setting up librust-owning-ref-dev:armhf (0.4.1-1) ... 313s Setting up librust-memoffset-dev:armhf (0.8.0-1) ... 313s Setting up gcc-14-arm-linux-gnueabihf (14.2.0-8ubuntu1) ... 313s Setting up python3-all (3.12.7-1) ... 313s Setting up librust-proc-macro2-dev:armhf (1.0.86-1) ... 313s Setting up librust-compiler-builtins+rustc-dep-of-std-dev:armhf (0.1.101-1) ... 313s Setting up librust-rayon-core-dev:armhf (1.12.1-1) ... 313s Setting up librust-winapi-dev:armhf (0.3.9-1) ... 313s Setting up pkgconf:armhf (1.8.1-4) ... 313s Setting up librust-ab-glyph-dev:armhf (0.2.28-1) ... 313s Setting up intltool-debian (0.35.0+20060710.6) ... 313s Setting up librust-rand-core+getrandom-dev:armhf (0.6.4-2) ... 313s Setting up librust-rand-xorshift-dev:armhf (0.3.0-2) ... 313s Setting up libwebp-dev:armhf (1.4.0-0.1) ... 313s Setting up librust-anes-dev:armhf (0.1.6-1) ... 313s Setting up llvm-runtime:armhf (1:19.0-60~exp1) ... 313s Setting up librust-cc-dev:armhf (1.1.14-1) ... 313s Setting up pkg-config:armhf (1.8.1-4) ... 313s Setting up cpp-14 (14.2.0-8ubuntu1) ... 313s Setting up dh-strip-nondeterminism (1.14.0-1) ... 313s Setting up librust-crc32fast-dev:armhf (1.4.2-1) ... 313s Setting up librust-num-traits-dev:armhf (0.2.19-2) ... 313s Setting up librust-winapi-util-dev:armhf (0.1.6-1) ... 313s Setting up cmake (3.30.3-1) ... 313s Setting up libgit2-1.7:armhf (1.7.2+ds-1ubuntu3) ... 313s Setting up libc6-dev:armhf (2.40-1ubuntu3) ... 313s Setting up llvm-19 (1:19.1.2-1ubuntu1) ... 313s Setting up libfontconfig1:armhf (2.15.0-1.1ubuntu2) ... 313s Setting up librust-sha1-asm-dev:armhf (0.5.1-2) ... 313s Setting up librust-same-file-dev:armhf (1.0.6-1) ... 313s Setting up librust-rayon-dev:armhf (1.10.0-1) ... 313s Setting up librust-termcolor-dev:armhf (1.4.1-1) ... 313s Setting up librust-pkg-config-dev:armhf (0.3.27-1) ... 313s Setting up libstdc++-14-dev:armhf (14.2.0-8ubuntu1) ... 313s Setting up cpp-arm-linux-gnueabihf (4:14.1.0-2ubuntu1) ... 313s Setting up libstd-rust-1.80:armhf (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 313s Setting up librust-jpeg-decoder-dev:armhf (0.3.0-1) ... 313s Setting up libbz2-dev:armhf (1.0.8-6) ... 313s Setting up librust-dirs-sys-next-dev:armhf (0.1.1-1) ... 313s Setting up gcc-arm-linux-gnueabihf (4:14.1.0-2ubuntu1) ... 313s Setting up librust-cmake-dev:armhf (0.1.45-1) ... 313s Setting up librust-num-integer-dev:armhf (0.1.46-1) ... 313s Setting up librust-dirs-next-dev:armhf (2.0.0-1) ... 313s Setting up g++-14-arm-linux-gnueabihf (14.2.0-8ubuntu1) ... 313s Setting up librust-dlib-dev:armhf (0.5.2-2) ... 313s Setting up librust-sha2-asm-dev:armhf (0.6.2-2) ... 313s Setting up librust-libwebp-sys-dev:armhf (0.9.5-1build1) ... 313s Setting up po-debconf (1.0.21+nmu1) ... 313s Setting up librust-quote-dev:armhf (1.0.37-1) ... 313s Setting up librust-syn-dev:armhf (2.0.85-1) ... 313s Setting up librust-rand-core+std-dev:armhf (0.6.4-2) ... 313s Setting up librust-powerfmt-macros-dev:armhf (0.1.0-1) ... 313s Setting up gcc-14 (14.2.0-8ubuntu1) ... 313s Setting up libstd-rust-1.80-dev:armhf (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 313s Setting up libexpat1-dev:armhf (2.6.4-1) ... 313s Setting up librust-powerfmt-dev:armhf (0.2.0-1) ... 313s Setting up librust-sval-derive-dev:armhf (2.6.1-2) ... 313s Setting up uuid-dev:armhf (2.40.2-1ubuntu1) ... 313s Setting up librust-md5-asm-dev:armhf (0.5.0-2) ... 313s Setting up librust-zeroize-derive-dev:armhf (1.4.2-1) ... 313s Setting up llvm (1:19.0-60~exp1) ... 313s Setting up librust-postgres-derive-dev:armhf (0.4.5-1) ... 313s Setting up librust-syn-1-dev:armhf (1.0.109-2) ... 313s Setting up librust-clap-derive-dev:armhf (4.5.13-2) ... 314s Setting up zlib1g-dev:armhf (1:1.3.dfsg+really1.3.1-1ubuntu1) ... 314s Setting up librust-bytecheck-derive-dev:armhf (0.6.12-1) ... 314s Setting up librust-no-panic-dev:armhf (0.1.13-1) ... 314s Setting up cpp (4:14.1.0-2ubuntu1) ... 314s Setting up librust-serde-derive-dev:armhf (1.0.210-1) ... 314s Setting up librust-walkdir-dev:armhf (2.5.0-1) ... 314s Setting up librust-zerocopy-derive-dev:armhf (0.7.32-2) ... 314s Setting up g++-14 (14.2.0-8ubuntu1) ... 314s Setting up librust-valuable-derive-dev:armhf (0.1.0-1) ... 314s Setting up librust-ghost-dev:armhf (0.1.5-1) ... 314s Setting up librust-serde-dev:armhf (1.0.210-2) ... 314s Setting up librust-bytemuck-derive-dev:armhf (1.5.0-2) ... 314s Setting up librust-derive-arbitrary-dev:armhf (1.3.2-1) ... 314s Setting up librust-allocator-api2-dev:armhf (0.2.16-1) ... 314s Setting up g++-arm-linux-gnueabihf (4:14.1.0-2ubuntu1) ... 314s Setting up librust-async-attributes-dev (1.1.2-6) ... 314s Setting up librust-rand-chacha-dev:armhf (0.3.1-2) ... 314s Setting up librust-futures-macro-dev:armhf (0.3.30-1) ... 314s Setting up librust-ctor-dev:armhf (0.1.26-1) ... 314s Setting up librust-unicode-bidi-dev:armhf (0.3.13-1) ... 314s Setting up librust-tracing-attributes-dev:armhf (0.1.27-1) ... 314s Setting up librust-ptr-meta-derive-dev:armhf (0.1.4-1) ... 314s Setting up librust-serde-fmt-dev (1.0.3-3) ... 314s Setting up libtool (2.4.7-8) ... 314s Setting up libpng-dev:armhf (1.6.44-2) ... 314s Setting up librust-portable-atomic-dev:armhf (1.9.0-4) ... 314s Setting up librust-tokio-macros-dev:armhf (2.4.0-2) ... 314s Setting up librust-lock-api-dev:armhf (0.4.12-1) ... 314s Setting up librust-libz-sys-dev:armhf (1.1.20-1) ... 314s Setting up libpython3.12-dev:armhf (3.12.7-3) ... 314s Setting up librust-ptr-meta-dev:armhf (0.1.4-1) ... 314s Setting up librust-inventory-dev:armhf (0.3.2-1) ... 314s Setting up librust-sval-dev:armhf (2.6.1-2) ... 314s Setting up librust-itoa-dev:armhf (1.0.9-1) ... 314s Setting up gcc (4:14.1.0-2ubuntu1) ... 314s Setting up librust-bytes-dev:armhf (1.8.0-1) ... 314s Setting up librust-bumpalo-dev:armhf (3.16.0-1) ... 314s Setting up librust-python3-dll-a-dev:armhf (0.2.10-1) ... 314s Setting up libfreetype-dev:armhf (2.13.3+dfsg-1) ... 314s Setting up librust-siphasher-dev:armhf (0.3.10-1) ... 314s Setting up rustc-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 314s Setting up dh-autoreconf (20) ... 314s Setting up librust-rand-core+serde-dev:armhf (0.6.4-2) ... 314s Setting up librust-sval-ref-dev:armhf (2.6.1-1) ... 314s Setting up librust-rkyv-derive-dev:armhf (0.7.44-1) ... 314s Setting up libpython3.13-dev:armhf (3.13.0-2) ... 314s Setting up librust-zerocopy-dev:armhf (0.7.32-1) ... 314s Setting up librust-semver-dev:armhf (1.0.23-1) ... 314s Setting up python3.12-dev (3.12.7-3) ... 314s Setting up librust-bytemuck-dev:armhf (1.14.0-1) ... 314s Setting up librust-bit-vec-dev:armhf (0.6.3-1) ... 314s Setting up librust-zeroize-dev:armhf (1.8.1-1) ... 314s Setting up librust-slab-dev:armhf (0.4.9-1) ... 314s Setting up g++ (4:14.1.0-2ubuntu1) ... 314s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 314s Setting up rustc (1.80.1ubuntu2) ... 314s Setting up librust-arbitrary-dev:armhf (1.3.2-1) ... 314s Setting up librust-valuable-dev:armhf (0.1.0-4) ... 314s Setting up librust-target-lexicon-dev:armhf (0.12.14-1) ... 314s Setting up librust-serde-test-dev:armhf (1.0.171-1) ... 314s Setting up librust-bit-set-dev:armhf (0.5.2-1) ... 314s Setting up build-essential (12.10ubuntu1) ... 314s Setting up librust-concurrent-queue-dev:armhf (2.5.0-4) ... 314s Setting up cargo-1.80 (1.80.1+dfsg0ubuntu1-0ubuntu1) ... 314s Setting up librust-erased-serde-dev:armhf (0.3.31-1) ... 314s Setting up librust-radium-dev:armhf (1.1.0-1) ... 314s Setting up librust-bit-set+std-dev:armhf (0.5.2-1) ... 314s Setting up librust-phf-shared-dev:armhf (0.11.2-1) ... 314s Setting up librust-smol-str-dev:armhf (0.2.0-1) ... 314s Setting up librust-atomic-dev:armhf (0.6.0-1) ... 314s Setting up librust-generic-array-dev:armhf (0.14.7-1) ... 314s Setting up librust-half-dev:armhf (1.8.2-4) ... 314s Setting up librust-phf-dev:armhf (0.11.2-1) ... 314s Setting up librust-spin-dev:armhf (0.9.8-4) ... 314s Setting up libpython3-dev:armhf (3.12.7-1) ... 314s Setting up librust-sval-dynamic-dev:armhf (2.6.1-1) ... 314s Setting up librust-qoi-dev:armhf (0.4.1-2) ... 314s Setting up librust-async-task-dev (4.7.1-3) ... 314s Setting up librust-crypto-common-dev:armhf (0.1.6-1) ... 314s Setting up librust-ciborium-ll-dev:armhf (0.2.2-1) ... 314s Setting up librust-futures-core-dev:armhf (0.3.30-1) ... 314s Setting up librust-lazy-static-dev:armhf (1.5.0-1) ... 314s Setting up libfontconfig-dev:armhf (2.15.0-1.1ubuntu2) ... 314s Setting up librust-sval-buffer-dev:armhf (2.6.1-1) ... 314s Setting up librust-arrayvec-dev:armhf (0.7.4-2) ... 314s Setting up librust-rustc-version-dev:armhf (0.4.0-1) ... 314s Setting up librust-event-listener-dev (5.3.1-8) ... 314s Setting up librust-flate2-dev:armhf (1.0.34-1) ... 314s Setting up librust-freetype-sys-dev:armhf (0.13.1-1) ... 314s Setting up debhelper (13.20ubuntu1) ... 314s Setting up librust-smallvec-dev:armhf (1.13.2-1) ... 314s Setting up librust-sval-fmt-dev:armhf (2.6.1-1) ... 314s Setting up librust-const-oid-dev:armhf (0.9.3-1) ... 314s Setting up librust-anstyle-parse-dev:armhf (0.2.1-1) ... 314s Setting up cargo (1.80.1ubuntu2) ... 314s Setting up librust-ciborium-dev:armhf (0.2.2-2) ... 314s Setting up librust-block-buffer-dev:armhf (0.10.2-2) ... 314s Setting up python3-setuptools-rust (1.9.0+dfsg-2) ... 314s Setting up libpython3-all-dev:armhf (3.12.7-1) ... 314s Setting up librust-pathfinder-simd-dev:armhf (0.5.2-1) ... 314s Setting up librust-freetype-dev:armhf (0.7.0-4) ... 314s Setting up librust-unicode-normalization-dev:armhf (0.1.22-1) ... 314s Setting up librust-anstream-dev:armhf (0.6.15-1) ... 314s Setting up librust-bitflags-dev:armhf (2.6.0-1) ... 314s Setting up librust-regex-syntax-dev:armhf (0.8.2-1) ... 314s Setting up librust-parking-lot-core-dev:armhf (0.9.10-1) ... 314s Setting up librust-futures-channel-dev:armhf (0.3.30-1) ... 314s Setting up librust-once-cell-dev:armhf (1.20.2-1) ... 314s Setting up librust-pyo3-build-config-dev:armhf (0.22.6-1) ... 314s Setting up librust-phf-shared+uncased-dev:armhf (0.11.2-1) ... 314s Setting up librust-tiff-dev:armhf (0.9.0-1) ... 314s Setting up librust-digest-dev:armhf (0.10.7-2) ... 314s Setting up librust-md-5-dev:armhf (0.10.6-1) ... 314s Setting up librust-sval-serde-dev:armhf (2.6.1-1) ... 314s Setting up librust-parking-lot-dev:armhf (0.12.3-1) ... 314s Setting up librust-event-listener-strategy-dev:armhf (0.5.2-3) ... 314s Setting up librust-pyo3-macros-backend-dev:armhf (0.22.6-1) ... 314s Setting up librust-pyo3-ffi-dev:armhf (0.22.6-1build1) ... 314s Setting up librust-png-dev:armhf (0.17.7-3) ... 314s Setting up pybuild-plugin-autopkgtest (6.20241024) ... 314s Setting up librust-const-random-macro-dev:armhf (0.1.16-2) ... 314s Setting up librust-const-random-dev:armhf (0.1.17-2) ... 314s Setting up librust-pyo3-macros-dev:armhf (0.22.6-1) ... 314s Setting up librust-sha1-dev:armhf (0.10.6-1) ... 314s Setting up librust-ahash-dev (0.8.11-8) ... 314s Setting up librust-async-channel-dev (2.3.1-8) ... 314s Setting up librust-stringprep-dev:armhf (0.1.2-1) ... 314s Setting up librust-tracing-core-dev:armhf (0.1.32-1) ... 314s Setting up librust-async-lock-dev (3.4.0-4) ... 314s Setting up librust-eyre-dev:armhf (0.6.12-1) ... 314s Setting up librust-yeslogic-fontconfig-sys-dev:armhf (3.0.1-1) ... 314s Setting up librust-sha2-dev:armhf (0.10.8-1) ... 314s Setting up librust-hmac-dev:armhf (0.12.1-1) ... 314s Setting up librust-rustix-dev:armhf (0.38.32-1) ... 314s Setting up librust-wyz-dev:armhf (0.5.1-1) ... 314s Setting up librust-bitvec-dev:armhf (1.0.1-1) ... 314s Setting up librust-phf+uncased-dev:armhf (0.11.2-1) ... 314s Setting up librust-value-bag-sval2-dev:armhf (1.9.0-1) ... 314s Setting up librust-tempfile-dev:armhf (3.10.1-1) ... 314s Setting up librust-eyre+default-dev:armhf (0.6.12-1) ... 314s Setting up librust-rusty-fork-dev:armhf (0.3.0-1) ... 314s Setting up librust-hashbrown-dev:armhf (0.14.5-5) ... 314s Setting up librust-rusty-fork+wait-timeout-dev:armhf (0.3.0-1) ... 314s Setting up librust-terminal-size-dev:armhf (0.3.0-2) ... 314s Setting up librust-indexmap-dev:armhf (2.2.6-1) ... 314s Setting up librust-gimli-dev:armhf (0.28.1-2) ... 314s Setting up librust-webp-dev:armhf (0.2.6-1) ... 314s Setting up librust-memchr-dev:armhf (2.7.4-1) ... 314s Setting up librust-futures-util-dev:armhf (0.3.30-2) ... 314s Setting up librust-csv-core-dev:armhf (0.1.11-1) ... 314s Setting up librust-futures-lite-dev:armhf (2.3.0-2) ... 314s Setting up librust-csv-dev:armhf (1.3.0-1) ... 314s Setting up librust-serde-json-dev:armhf (1.0.128-1) ... 314s Setting up librust-async-executor-dev (1.13.1-1) ... 314s Setting up librust-futures-executor-dev:armhf (0.3.30-1) ... 314s Setting up librust-value-bag-serde1-dev:armhf (1.9.0-1) ... 314s Setting up librust-tinytemplate-dev:armhf (1.2.1-1) ... 314s Setting up librust-futures-dev:armhf (0.3.30-2) ... 314s Setting up librust-value-bag-dev:armhf (1.9.0-1) ... 314s Setting up librust-log-dev:armhf (0.4.22-1) ... 314s Setting up librust-kv-log-macro-dev (1.0.8-4) ... 314s Setting up librust-pathfinder-geometry-dev:armhf (0.5.1-1) ... 314s Setting up librust-tracing-dev:armhf (0.1.40-1) ... 314s Setting up librust-polling-dev:armhf (3.4.0-1) ... 314s Setting up librust-aho-corasick-dev:armhf (1.1.3-1) ... 314s Setting up librust-font-kit-dev:armhf (0.11.0-2) ... 314s Setting up librust-async-io-dev:armhf (2.3.3-4) ... 314s Setting up librust-blocking-dev (1.6.1-5) ... 314s Setting up librust-async-net-dev (2.0.0-4) ... 314s Setting up librust-rand-dev:armhf (0.8.5-1) ... 314s Setting up librust-mio-dev:armhf (1.0.2-2) ... 314s Setting up librust-wasm-bindgen-backend-dev:armhf (0.2.87-1) ... 314s Setting up librust-twox-hash-dev:armhf (1.6.3-1) ... 314s Setting up librust-proptest-dev:armhf (1.5.0-2) ... 314s Setting up librust-wasm-bindgen-macro-support-dev:armhf (0.2.87-1) ... 314s Setting up librust-regex-automata-dev:armhf (0.4.7-1) ... 314s Setting up librust-wasm-bindgen-macro-support+spans-dev:armhf (0.2.87-1) ... 314s Setting up librust-wasm-bindgen-macro-dev:armhf (0.2.87-1) ... 314s Setting up librust-uuid-dev:armhf (1.10.0-1) ... 314s Setting up librust-bstr-dev:armhf (1.7.0-2build1) ... 314s Setting up librust-async-signal-dev:armhf (0.2.10-1) ... 314s Setting up librust-bytecheck-dev:armhf (0.6.12-1) ... 314s Setting up librust-postgres-protocol-dev:armhf (0.6.6-2) ... 314s Setting up librust-async-fs-dev (2.1.2-4) ... 314s Setting up librust-wasm-bindgen-dev:armhf (0.2.87-1) ... 314s Setting up librust-convert-case-dev:armhf (0.6.0-2) ... 314s Setting up librust-regex-dev:armhf (1.10.6-1) ... 314s Setting up librust-fancy-regex-dev:armhf (0.11.0-2) ... 314s Setting up librust-async-process-dev (2.3.0-1) ... 314s Setting up librust-wasm-bindgen-macro+spans-dev:armhf (0.2.87-1) ... 314s Setting up librust-rend-dev:armhf (0.4.0-1) ... 314s Setting up librust-derive-more-0.99-dev:armhf (0.99.18-1) ... 314s Setting up librust-env-logger-dev:armhf (0.10.2-2) ... 314s Setting up librust-wasm-bindgen+spans-dev:armhf (0.2.87-1) ... 314s Setting up librust-wasm-bindgen+default-dev:armhf (0.2.87-1) ... 314s Setting up librust-rkyv-dev:armhf (0.7.44-1) ... 314s Setting up librust-eui48-dev:armhf (1.1.0-2) ... 314s Setting up librust-parse-zoneinfo-dev:armhf (0.3.0-1) ... 314s Setting up librust-smol-dev (2.0.2-1) ... 314s Setting up librust-js-sys-dev:armhf (0.3.64-1) ... 314s Setting up librust-num-complex-dev:armhf (0.4.6-2) ... 314s Setting up librust-approx-dev:armhf (0.5.1-1) ... 314s Setting up librust-ruzstd-dev:armhf (0.5.0-1) ... 314s Setting up librust-web-sys-dev:armhf (0.3.64-2) ... 314s Setting up librust-quickcheck-dev:armhf (1.0.3-3) ... 314s Setting up librust-geo-types-dev:armhf (0.7.11-2) ... 314s Setting up librust-deranged-dev:armhf (0.3.11-1) ... 314s Setting up librust-num-bigint-dev:armhf (0.4.6-1) ... 314s Setting up librust-num-rational-dev:armhf (0.4.2-1) ... 314s Setting up librust-chrono-dev:armhf (0.4.38-2) ... 314s Setting up librust-object-dev:armhf (0.32.2-1) ... 314s Setting up librust-image-dev:armhf (0.24.7-2) ... 314s Setting up librust-time-dev:armhf (0.3.36-2) ... 314s Setting up librust-plotters-bitmap-dev:armhf (0.3.3-3) ... 314s Setting up librust-postgres-types-dev:armhf (0.2.6-2) ... 314s Setting up librust-addr2line-dev:armhf (0.21.0-2) ... 314s Setting up librust-plotters-svg-dev:armhf (0.3.5-1) ... 314s Setting up librust-rust-decimal-dev:armhf (1.36.0-1) ... 314s Setting up librust-plotters-dev:armhf (0.3.5-4) ... 314s Setting up librust-backtrace-dev:armhf (0.3.69-2) ... 314s Setting up librust-tokio-dev:armhf (1.39.3-3) ... 314s Setting up librust-async-global-executor-dev:armhf (2.4.1-5) ... 314s Setting up librust-clap-builder-dev:armhf (4.5.15-2) ... 314s Setting up librust-clap-dev:armhf (4.5.16-1) ... 314s Setting up librust-async-std-dev (1.13.0-1) ... 314s Setting up librust-anyhow-dev:armhf (1.0.86-1) ... 314s Setting up librust-criterion-dev (0.5.1-6) ... 314s Setting up librust-phf-generator-dev:armhf (0.11.2-2) ... 314s Setting up librust-phf-codegen-dev:armhf (0.11.2-1) ... 314s Setting up librust-chrono-tz-build-dev:armhf (0.2.1-1) ... 314s Setting up librust-chrono-tz-dev:armhf (0.8.6-2) ... 314s Setting up librust-pyo3-dev:armhf (0.22.6-1) ... 314s Setting up autopkgtest-satdep (0) ... 314s Processing triggers for libc-bin (2.40-1ubuntu3) ... 315s Processing triggers for systemd (256.5-2ubuntu4) ... 315s Processing triggers for man-db (2.13.0-1) ... 316s Processing triggers for install-info (7.1.1-1) ... 383s (Reading database ... 87876 files and directories currently installed.) 383s Removing autopkgtest-satdep (0) ... 389s autopkgtest [20:37:29]: test pybuild-autopkgtest: pybuild-autopkgtest 389s autopkgtest [20:37:29]: test pybuild-autopkgtest: [----------------------- 391s pybuild-autopkgtest 391s I: pybuild base:311: cd /tmp/autopkgtest.e6n6Yl/autopkgtest_tmp/build; python3.13 -m pytest tests 392s ============================= test session starts ============================== 392s platform linux -- Python 3.13.0, pytest-8.3.3, pluggy-1.5.0 392s rootdir: /tmp/autopkgtest.e6n6Yl/autopkgtest_tmp/build 392s configfile: pyproject.toml 392s plugins: typeguard-4.4.1, hypothesis-6.119.3 392s collected 30 items 392s 980s tests/test_encoding.py FFFFFFFFFFFFFFFFFFFFFF [ 73%] 980s tests/test_misc.py F. [ 80%] 982s tests/test_offsets.py FF [ 86%] 984s tests/test_pickle.py F [ 90%] 986s tests/test_simple_public.py FF. [100%] 986s 986s =================================== FAILURES =================================== 986s _________________________________ test_simple __________________________________ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s > sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 986s raise err 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 986s source_address = None, socket_options = [(6, 1, 1)] 986s 986s def create_connection( 986s address: tuple[str, int], 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s source_address: tuple[str, int] | None = None, 986s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 986s ) -> socket.socket: 986s """Connect to *address* and return the socket object. 986s 986s Convenience function. Connect to *address* (a 2-tuple ``(host, 986s port)``) and return the socket object. Passing the optional 986s *timeout* parameter will set the timeout on the socket instance 986s before attempting to connect. If no *timeout* is supplied, the 986s global default timeout setting returned by :func:`socket.getdefaulttimeout` 986s is used. If *source_address* is set it must be a tuple of (host, port) 986s for the socket to bind as a source address before making the connection. 986s An host of '' or port 0 tells the OS to use the default. 986s """ 986s 986s host, port = address 986s if host.startswith("["): 986s host = host.strip("[]") 986s err = None 986s 986s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 986s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 986s # The original create_connection function always returns all records. 986s family = allowed_gai_family() 986s 986s try: 986s host.encode("idna") 986s except UnicodeError: 986s raise LocationParseError(f"'{host}', label empty or too long") from None 986s 986s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 986s af, socktype, proto, canonname, sa = res 986s sock = None 986s try: 986s sock = socket.socket(af, socktype, proto) 986s 986s # If provided, set socket level options before connecting. 986s _set_socket_options(sock, socket_options) 986s 986s if timeout is not _DEFAULT_TIMEOUT: 986s sock.settimeout(timeout) 986s if source_address: 986s sock.bind(source_address) 986s > sock.connect(sa) 986s E ConnectionRefusedError: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 986s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 986s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s redirect = False, assert_same_host = False 986s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 986s release_conn = False, chunked = False, body_pos = None, preload_content = False 986s decode_content = False, response_kw = {} 986s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 986s destination_scheme = None, conn = None, release_this_conn = True 986s http_tunnel_required = False, err = None, clean_exit = False 986s 986s def urlopen( # type: ignore[override] 986s self, 986s method: str, 986s url: str, 986s body: _TYPE_BODY | None = None, 986s headers: typing.Mapping[str, str] | None = None, 986s retries: Retry | bool | int | None = None, 986s redirect: bool = True, 986s assert_same_host: bool = True, 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s pool_timeout: int | None = None, 986s release_conn: bool | None = None, 986s chunked: bool = False, 986s body_pos: _TYPE_BODY_POSITION | None = None, 986s preload_content: bool = True, 986s decode_content: bool = True, 986s **response_kw: typing.Any, 986s ) -> BaseHTTPResponse: 986s """ 986s Get a connection from the pool and perform an HTTP request. This is the 986s lowest level call for making a request, so you'll need to specify all 986s the raw details. 986s 986s .. note:: 986s 986s More commonly, it's appropriate to use a convenience method 986s such as :meth:`request`. 986s 986s .. note:: 986s 986s `release_conn` will only behave as expected if 986s `preload_content=False` because we want to make 986s `preload_content=False` the default behaviour someday soon without 986s breaking backwards compatibility. 986s 986s :param method: 986s HTTP request method (such as GET, POST, PUT, etc.) 986s 986s :param url: 986s The URL to perform the request on. 986s 986s :param body: 986s Data to send in the request body, either :class:`str`, :class:`bytes`, 986s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 986s 986s :param headers: 986s Dictionary of custom headers to send, such as User-Agent, 986s If-None-Match, etc. If None, pool headers are used. If provided, 986s these headers completely replace any pool-specific headers. 986s 986s :param retries: 986s Configure the number of retries to allow before raising a 986s :class:`~urllib3.exceptions.MaxRetryError` exception. 986s 986s Pass ``None`` to retry until you receive a response. Pass a 986s :class:`~urllib3.util.retry.Retry` object for fine-grained control 986s over different types of retries. 986s Pass an integer number to retry connection errors that many times, 986s but no other types of errors. Pass zero to never retry. 986s 986s If ``False``, then retries are disabled and any exception is raised 986s immediately. Also, instead of raising a MaxRetryError on redirects, 986s the redirect response will be returned. 986s 986s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 986s 986s :param redirect: 986s If True, automatically handle redirects (status codes 301, 302, 986s 303, 307, 308). Each redirect counts as a retry. Disabling retries 986s will disable redirect, too. 986s 986s :param assert_same_host: 986s If ``True``, will make sure that the host of the pool requests is 986s consistent else will raise HostChangedError. When ``False``, you can 986s use the pool on an HTTP proxy and request foreign hosts. 986s 986s :param timeout: 986s If specified, overrides the default timeout for this one 986s request. It may be a float (in seconds) or an instance of 986s :class:`urllib3.util.Timeout`. 986s 986s :param pool_timeout: 986s If set and the pool is set to block=True, then this method will 986s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 986s connection is available within the time period. 986s 986s :param bool preload_content: 986s If True, the response's body will be preloaded into memory. 986s 986s :param bool decode_content: 986s If True, will attempt to decode the body based on the 986s 'content-encoding' header. 986s 986s :param release_conn: 986s If False, then the urlopen call will not release the connection 986s back into the pool once a response is received (but will release if 986s you read the entire contents of the response such as when 986s `preload_content=True`). This is useful if you're not preloading 986s the response's content immediately. You will need to call 986s ``r.release_conn()`` on the response ``r`` to return the connection 986s back into the pool. If None, it takes the value of ``preload_content`` 986s which defaults to ``True``. 986s 986s :param bool chunked: 986s If True, urllib3 will send the body using chunked transfer 986s encoding. Otherwise, urllib3 will send the body using the standard 986s content-length form. Defaults to False. 986s 986s :param int body_pos: 986s Position to seek to in file-like body in the event of a retry or 986s redirect. Typically this won't need to be set because urllib3 will 986s auto-populate the value when needed. 986s """ 986s parsed_url = parse_url(url) 986s destination_scheme = parsed_url.scheme 986s 986s if headers is None: 986s headers = self.headers 986s 986s if not isinstance(retries, Retry): 986s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 986s 986s if release_conn is None: 986s release_conn = preload_content 986s 986s # Check host 986s if assert_same_host and not self.is_same_host(url): 986s raise HostChangedError(self, url, retries) 986s 986s # Ensure that the URL we're connecting to is properly encoded 986s if url.startswith("/"): 986s url = to_str(_encode_target(url)) 986s else: 986s url = to_str(parsed_url.url) 986s 986s conn = None 986s 986s # Track whether `conn` needs to be released before 986s # returning/raising/recursing. Update this variable if necessary, and 986s # leave `release_conn` constant throughout the function. That way, if 986s # the function recurses, the original value of `release_conn` will be 986s # passed down into the recursive call, and its value will be respected. 986s # 986s # See issue #651 [1] for details. 986s # 986s # [1] 986s release_this_conn = release_conn 986s 986s http_tunnel_required = connection_requires_http_tunnel( 986s self.proxy, self.proxy_config, destination_scheme 986s ) 986s 986s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 986s # have to copy the headers dict so we can safely change it without those 986s # changes being reflected in anyone else's copy. 986s if not http_tunnel_required: 986s headers = headers.copy() # type: ignore[attr-defined] 986s headers.update(self.proxy_headers) # type: ignore[union-attr] 986s 986s # Must keep the exception bound to a separate variable or else Python 3 986s # complains about UnboundLocalError. 986s err = None 986s 986s # Keep track of whether we cleanly exited the except block. This 986s # ensures we do proper cleanup in finally. 986s clean_exit = False 986s 986s # Rewind body position, if needed. Record current position 986s # for future rewinds in the event of a redirect/retry. 986s body_pos = set_file_position(body, body_pos) 986s 986s try: 986s # Request a connection from the queue. 986s timeout_obj = self._get_timeout(timeout) 986s conn = self._get_conn(timeout=pool_timeout) 986s 986s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 986s 986s # Is this a closed/new connection that requires CONNECT tunnelling? 986s if self.proxy is not None and http_tunnel_required and conn.is_closed: 986s try: 986s self._prepare_proxy(conn) 986s except (BaseSSLError, OSError, SocketTimeout) as e: 986s self._raise_timeout( 986s err=e, url=self.proxy.url, timeout_value=conn.timeout 986s ) 986s raise 986s 986s # If we're going to release the connection in ``finally:``, then 986s # the response doesn't need to know about the connection. Otherwise 986s # it will also try to release it and we'll have a double-release 986s # mess. 986s response_conn = conn if not release_conn else None 986s 986s # Make the request on the HTTPConnection object 986s > response = self._make_request( 986s conn, 986s method, 986s url, 986s timeout=timeout_obj, 986s body=body, 986s headers=headers, 986s chunked=chunked, 986s retries=retries, 986s response_conn=response_conn, 986s preload_content=preload_content, 986s decode_content=decode_content, 986s **response_kw, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 986s raise new_e 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 986s self._validate_conn(conn) 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 986s conn.connect() 986s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 986s self.sock = sock = self._new_conn() 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s except socket.gaierror as e: 986s raise NameResolutionError(self.host, self, e) from e 986s except SocketTimeout as e: 986s raise ConnectTimeoutError( 986s self, 986s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 986s ) from e 986s 986s except OSError as e: 986s > raise NewConnectionError( 986s self, f"Failed to establish a new connection: {e}" 986s ) from e 986s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s > resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:667: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 986s retries = retries.increment( 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 986s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 986s _pool = 986s _stacktrace = 986s 986s def increment( 986s self, 986s method: str | None = None, 986s url: str | None = None, 986s response: BaseHTTPResponse | None = None, 986s error: Exception | None = None, 986s _pool: ConnectionPool | None = None, 986s _stacktrace: TracebackType | None = None, 986s ) -> Retry: 986s """Return a new Retry object with incremented retry counters. 986s 986s :param response: A response object, or None, if the server did not 986s return a response. 986s :type response: :class:`~urllib3.response.BaseHTTPResponse` 986s :param Exception error: An error encountered during the request, or 986s None if the response was received successfully. 986s 986s :return: A new ``Retry`` object. 986s """ 986s if self.total is False and error: 986s # Disabled, indicate to re-raise the error. 986s raise reraise(type(error), error, _stacktrace) 986s 986s total = self.total 986s if total is not None: 986s total -= 1 986s 986s connect = self.connect 986s read = self.read 986s redirect = self.redirect 986s status_count = self.status 986s other = self.other 986s cause = "unknown" 986s status = None 986s redirect_location = None 986s 986s if error and self._is_connection_error(error): 986s # Connect retry? 986s if connect is False: 986s raise reraise(type(error), error, _stacktrace) 986s elif connect is not None: 986s connect -= 1 986s 986s elif error and self._is_read_error(error): 986s # Read retry? 986s if read is False or method is None or not self._is_method_retryable(method): 986s raise reraise(type(error), error, _stacktrace) 986s elif read is not None: 986s read -= 1 986s 986s elif error: 986s # Other retry? 986s if other is not None: 986s other -= 1 986s 986s elif response and response.get_redirect_location(): 986s # Redirect retry? 986s if redirect is not None: 986s redirect -= 1 986s cause = "too many redirects" 986s response_redirect_location = response.get_redirect_location() 986s if response_redirect_location: 986s redirect_location = response_redirect_location 986s status = response.status 986s 986s else: 986s # Incrementing because of a server error like a 500 in 986s # status_forcelist and the given method is in the allowed_methods 986s cause = ResponseError.GENERIC_ERROR 986s if response and response.status: 986s if status_count is not None: 986s status_count -= 1 986s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 986s status = response.status 986s 986s history = self.history + ( 986s RequestHistory(method, url, error, status, redirect_location), 986s ) 986s 986s new_retry = self.new( 986s total=total, 986s connect=connect, 986s read=read, 986s redirect=redirect, 986s status=status_count, 986s other=other, 986s history=history, 986s ) 986s 986s if new_retry.is_exhausted(): 986s reason = error or ResponseError(cause) 986s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 986s 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')) 986s 986s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 986s 986s During handling of the above exception, another exception occurred: 986s 986s def test_simple(): 986s > enc = tiktoken.get_encoding("gpt2") 986s 986s tests/test_encoding.py:15: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 986s enc = Encoding(**constructor()) 986s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 986s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 986s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 986s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 986s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 986s contents = read_file(blobpath) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 986s resp = requests.get(blobpath) 986s /usr/lib/python3/dist-packages/requests/api.py:73: in get 986s return request("get", url, params=params, **kwargs) 986s /usr/lib/python3/dist-packages/requests/api.py:59: in request 986s return session.request(method=method, url=url, **kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 986s resp = self.send(prep, **send_kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 986s r = adapter.send(request, **kwargs) 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s except (ProtocolError, OSError) as err: 986s raise ConnectionError(err, request=request) 986s 986s except MaxRetryError as e: 986s if isinstance(e.reason, ConnectTimeoutError): 986s # TODO: Remove this in 3.0.0: see #2811 986s if not isinstance(e.reason, NewConnectionError): 986s raise ConnectTimeout(e, request=request) 986s 986s if isinstance(e.reason, ResponseError): 986s raise RetryError(e, request=request) 986s 986s if isinstance(e.reason, _ProxyError): 986s raise ProxyError(e, request=request) 986s 986s if isinstance(e.reason, _SSLError): 986s # This branch is for urllib3 v1.22 and later. 986s raise SSLError(e, request=request) 986s 986s > raise ConnectionError(e, request=request) 986s 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')) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 986s _____________________________ test_simple_repeated _____________________________ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s > sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 986s raise err 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 986s source_address = None, socket_options = [(6, 1, 1)] 986s 986s def create_connection( 986s address: tuple[str, int], 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s source_address: tuple[str, int] | None = None, 986s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 986s ) -> socket.socket: 986s """Connect to *address* and return the socket object. 986s 986s Convenience function. Connect to *address* (a 2-tuple ``(host, 986s port)``) and return the socket object. Passing the optional 986s *timeout* parameter will set the timeout on the socket instance 986s before attempting to connect. If no *timeout* is supplied, the 986s global default timeout setting returned by :func:`socket.getdefaulttimeout` 986s is used. If *source_address* is set it must be a tuple of (host, port) 986s for the socket to bind as a source address before making the connection. 986s An host of '' or port 0 tells the OS to use the default. 986s """ 986s 986s host, port = address 986s if host.startswith("["): 986s host = host.strip("[]") 986s err = None 986s 986s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 986s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 986s # The original create_connection function always returns all records. 986s family = allowed_gai_family() 986s 986s try: 986s host.encode("idna") 986s except UnicodeError: 986s raise LocationParseError(f"'{host}', label empty or too long") from None 986s 986s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 986s af, socktype, proto, canonname, sa = res 986s sock = None 986s try: 986s sock = socket.socket(af, socktype, proto) 986s 986s # If provided, set socket level options before connecting. 986s _set_socket_options(sock, socket_options) 986s 986s if timeout is not _DEFAULT_TIMEOUT: 986s sock.settimeout(timeout) 986s if source_address: 986s sock.bind(source_address) 986s > sock.connect(sa) 986s E ConnectionRefusedError: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 986s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 986s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s redirect = False, assert_same_host = False 986s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 986s release_conn = False, chunked = False, body_pos = None, preload_content = False 986s decode_content = False, response_kw = {} 986s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 986s destination_scheme = None, conn = None, release_this_conn = True 986s http_tunnel_required = False, err = None, clean_exit = False 986s 986s def urlopen( # type: ignore[override] 986s self, 986s method: str, 986s url: str, 986s body: _TYPE_BODY | None = None, 986s headers: typing.Mapping[str, str] | None = None, 986s retries: Retry | bool | int | None = None, 986s redirect: bool = True, 986s assert_same_host: bool = True, 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s pool_timeout: int | None = None, 986s release_conn: bool | None = None, 986s chunked: bool = False, 986s body_pos: _TYPE_BODY_POSITION | None = None, 986s preload_content: bool = True, 986s decode_content: bool = True, 986s **response_kw: typing.Any, 986s ) -> BaseHTTPResponse: 986s """ 986s Get a connection from the pool and perform an HTTP request. This is the 986s lowest level call for making a request, so you'll need to specify all 986s the raw details. 986s 986s .. note:: 986s 986s More commonly, it's appropriate to use a convenience method 986s such as :meth:`request`. 986s 986s .. note:: 986s 986s `release_conn` will only behave as expected if 986s `preload_content=False` because we want to make 986s `preload_content=False` the default behaviour someday soon without 986s breaking backwards compatibility. 986s 986s :param method: 986s HTTP request method (such as GET, POST, PUT, etc.) 986s 986s :param url: 986s The URL to perform the request on. 986s 986s :param body: 986s Data to send in the request body, either :class:`str`, :class:`bytes`, 986s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 986s 986s :param headers: 986s Dictionary of custom headers to send, such as User-Agent, 986s If-None-Match, etc. If None, pool headers are used. If provided, 986s these headers completely replace any pool-specific headers. 986s 986s :param retries: 986s Configure the number of retries to allow before raising a 986s :class:`~urllib3.exceptions.MaxRetryError` exception. 986s 986s Pass ``None`` to retry until you receive a response. Pass a 986s :class:`~urllib3.util.retry.Retry` object for fine-grained control 986s over different types of retries. 986s Pass an integer number to retry connection errors that many times, 986s but no other types of errors. Pass zero to never retry. 986s 986s If ``False``, then retries are disabled and any exception is raised 986s immediately. Also, instead of raising a MaxRetryError on redirects, 986s the redirect response will be returned. 986s 986s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 986s 986s :param redirect: 986s If True, automatically handle redirects (status codes 301, 302, 986s 303, 307, 308). Each redirect counts as a retry. Disabling retries 986s will disable redirect, too. 986s 986s :param assert_same_host: 986s If ``True``, will make sure that the host of the pool requests is 986s consistent else will raise HostChangedError. When ``False``, you can 986s use the pool on an HTTP proxy and request foreign hosts. 986s 986s :param timeout: 986s If specified, overrides the default timeout for this one 986s request. It may be a float (in seconds) or an instance of 986s :class:`urllib3.util.Timeout`. 986s 986s :param pool_timeout: 986s If set and the pool is set to block=True, then this method will 986s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 986s connection is available within the time period. 986s 986s :param bool preload_content: 986s If True, the response's body will be preloaded into memory. 986s 986s :param bool decode_content: 986s If True, will attempt to decode the body based on the 986s 'content-encoding' header. 986s 986s :param release_conn: 986s If False, then the urlopen call will not release the connection 986s back into the pool once a response is received (but will release if 986s you read the entire contents of the response such as when 986s `preload_content=True`). This is useful if you're not preloading 986s the response's content immediately. You will need to call 986s ``r.release_conn()`` on the response ``r`` to return the connection 986s back into the pool. If None, it takes the value of ``preload_content`` 986s which defaults to ``True``. 986s 986s :param bool chunked: 986s If True, urllib3 will send the body using chunked transfer 986s encoding. Otherwise, urllib3 will send the body using the standard 986s content-length form. Defaults to False. 986s 986s :param int body_pos: 986s Position to seek to in file-like body in the event of a retry or 986s redirect. Typically this won't need to be set because urllib3 will 986s auto-populate the value when needed. 986s """ 986s parsed_url = parse_url(url) 986s destination_scheme = parsed_url.scheme 986s 986s if headers is None: 986s headers = self.headers 986s 986s if not isinstance(retries, Retry): 986s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 986s 986s if release_conn is None: 986s release_conn = preload_content 986s 986s # Check host 986s if assert_same_host and not self.is_same_host(url): 986s raise HostChangedError(self, url, retries) 986s 986s # Ensure that the URL we're connecting to is properly encoded 986s if url.startswith("/"): 986s url = to_str(_encode_target(url)) 986s else: 986s url = to_str(parsed_url.url) 986s 986s conn = None 986s 986s # Track whether `conn` needs to be released before 986s # returning/raising/recursing. Update this variable if necessary, and 986s # leave `release_conn` constant throughout the function. That way, if 986s # the function recurses, the original value of `release_conn` will be 986s # passed down into the recursive call, and its value will be respected. 986s # 986s # See issue #651 [1] for details. 986s # 986s # [1] 986s release_this_conn = release_conn 986s 986s http_tunnel_required = connection_requires_http_tunnel( 986s self.proxy, self.proxy_config, destination_scheme 986s ) 986s 986s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 986s # have to copy the headers dict so we can safely change it without those 986s # changes being reflected in anyone else's copy. 986s if not http_tunnel_required: 986s headers = headers.copy() # type: ignore[attr-defined] 986s headers.update(self.proxy_headers) # type: ignore[union-attr] 986s 986s # Must keep the exception bound to a separate variable or else Python 3 986s # complains about UnboundLocalError. 986s err = None 986s 986s # Keep track of whether we cleanly exited the except block. This 986s # ensures we do proper cleanup in finally. 986s clean_exit = False 986s 986s # Rewind body position, if needed. Record current position 986s # for future rewinds in the event of a redirect/retry. 986s body_pos = set_file_position(body, body_pos) 986s 986s try: 986s # Request a connection from the queue. 986s timeout_obj = self._get_timeout(timeout) 986s conn = self._get_conn(timeout=pool_timeout) 986s 986s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 986s 986s # Is this a closed/new connection that requires CONNECT tunnelling? 986s if self.proxy is not None and http_tunnel_required and conn.is_closed: 986s try: 986s self._prepare_proxy(conn) 986s except (BaseSSLError, OSError, SocketTimeout) as e: 986s self._raise_timeout( 986s err=e, url=self.proxy.url, timeout_value=conn.timeout 986s ) 986s raise 986s 986s # If we're going to release the connection in ``finally:``, then 986s # the response doesn't need to know about the connection. Otherwise 986s # it will also try to release it and we'll have a double-release 986s # mess. 986s response_conn = conn if not release_conn else None 986s 986s # Make the request on the HTTPConnection object 986s > response = self._make_request( 986s conn, 986s method, 986s url, 986s timeout=timeout_obj, 986s body=body, 986s headers=headers, 986s chunked=chunked, 986s retries=retries, 986s response_conn=response_conn, 986s preload_content=preload_content, 986s decode_content=decode_content, 986s **response_kw, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 986s raise new_e 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 986s self._validate_conn(conn) 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 986s conn.connect() 986s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 986s self.sock = sock = self._new_conn() 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s except socket.gaierror as e: 986s raise NameResolutionError(self.host, self, e) from e 986s except SocketTimeout as e: 986s raise ConnectTimeoutError( 986s self, 986s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 986s ) from e 986s 986s except OSError as e: 986s > raise NewConnectionError( 986s self, f"Failed to establish a new connection: {e}" 986s ) from e 986s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s > resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:667: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 986s retries = retries.increment( 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 986s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 986s _pool = 986s _stacktrace = 986s 986s def increment( 986s self, 986s method: str | None = None, 986s url: str | None = None, 986s response: BaseHTTPResponse | None = None, 986s error: Exception | None = None, 986s _pool: ConnectionPool | None = None, 986s _stacktrace: TracebackType | None = None, 986s ) -> Retry: 986s """Return a new Retry object with incremented retry counters. 986s 986s :param response: A response object, or None, if the server did not 986s return a response. 986s :type response: :class:`~urllib3.response.BaseHTTPResponse` 986s :param Exception error: An error encountered during the request, or 986s None if the response was received successfully. 986s 986s :return: A new ``Retry`` object. 986s """ 986s if self.total is False and error: 986s # Disabled, indicate to re-raise the error. 986s raise reraise(type(error), error, _stacktrace) 986s 986s total = self.total 986s if total is not None: 986s total -= 1 986s 986s connect = self.connect 986s read = self.read 986s redirect = self.redirect 986s status_count = self.status 986s other = self.other 986s cause = "unknown" 986s status = None 986s redirect_location = None 986s 986s if error and self._is_connection_error(error): 986s # Connect retry? 986s if connect is False: 986s raise reraise(type(error), error, _stacktrace) 986s elif connect is not None: 986s connect -= 1 986s 986s elif error and self._is_read_error(error): 986s # Read retry? 986s if read is False or method is None or not self._is_method_retryable(method): 986s raise reraise(type(error), error, _stacktrace) 986s elif read is not None: 986s read -= 1 986s 986s elif error: 986s # Other retry? 986s if other is not None: 986s other -= 1 986s 986s elif response and response.get_redirect_location(): 986s # Redirect retry? 986s if redirect is not None: 986s redirect -= 1 986s cause = "too many redirects" 986s response_redirect_location = response.get_redirect_location() 986s if response_redirect_location: 986s redirect_location = response_redirect_location 986s status = response.status 986s 986s else: 986s # Incrementing because of a server error like a 500 in 986s # status_forcelist and the given method is in the allowed_methods 986s cause = ResponseError.GENERIC_ERROR 986s if response and response.status: 986s if status_count is not None: 986s status_count -= 1 986s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 986s status = response.status 986s 986s history = self.history + ( 986s RequestHistory(method, url, error, status, redirect_location), 986s ) 986s 986s new_retry = self.new( 986s total=total, 986s connect=connect, 986s read=read, 986s redirect=redirect, 986s status=status_count, 986s other=other, 986s history=history, 986s ) 986s 986s if new_retry.is_exhausted(): 986s reason = error or ResponseError(cause) 986s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 986s 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')) 986s 986s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 986s 986s During handling of the above exception, another exception occurred: 986s 986s def test_simple_repeated(): 986s > enc = tiktoken.get_encoding("gpt2") 986s 986s tests/test_encoding.py:32: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 986s enc = Encoding(**constructor()) 986s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 986s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 986s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 986s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 986s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 986s contents = read_file(blobpath) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 986s resp = requests.get(blobpath) 986s /usr/lib/python3/dist-packages/requests/api.py:73: in get 986s return request("get", url, params=params, **kwargs) 986s /usr/lib/python3/dist-packages/requests/api.py:59: in request 986s return session.request(method=method, url=url, **kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 986s resp = self.send(prep, **send_kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 986s r = adapter.send(request, **kwargs) 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s except (ProtocolError, OSError) as err: 986s raise ConnectionError(err, request=request) 986s 986s except MaxRetryError as e: 986s if isinstance(e.reason, ConnectTimeoutError): 986s # TODO: Remove this in 3.0.0: see #2811 986s if not isinstance(e.reason, NewConnectionError): 986s raise ConnectTimeout(e, request=request) 986s 986s if isinstance(e.reason, ResponseError): 986s raise RetryError(e, request=request) 986s 986s if isinstance(e.reason, _ProxyError): 986s raise ProxyError(e, request=request) 986s 986s if isinstance(e.reason, _SSLError): 986s # This branch is for urllib3 v1.22 and later. 986s raise SSLError(e, request=request) 986s 986s > raise ConnectionError(e, request=request) 986s 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')) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 986s ______________________________ test_simple_regex _______________________________ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s > sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 986s raise err 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 986s source_address = None, socket_options = [(6, 1, 1)] 986s 986s def create_connection( 986s address: tuple[str, int], 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s source_address: tuple[str, int] | None = None, 986s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 986s ) -> socket.socket: 986s """Connect to *address* and return the socket object. 986s 986s Convenience function. Connect to *address* (a 2-tuple ``(host, 986s port)``) and return the socket object. Passing the optional 986s *timeout* parameter will set the timeout on the socket instance 986s before attempting to connect. If no *timeout* is supplied, the 986s global default timeout setting returned by :func:`socket.getdefaulttimeout` 986s is used. If *source_address* is set it must be a tuple of (host, port) 986s for the socket to bind as a source address before making the connection. 986s An host of '' or port 0 tells the OS to use the default. 986s """ 986s 986s host, port = address 986s if host.startswith("["): 986s host = host.strip("[]") 986s err = None 986s 986s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 986s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 986s # The original create_connection function always returns all records. 986s family = allowed_gai_family() 986s 986s try: 986s host.encode("idna") 986s except UnicodeError: 986s raise LocationParseError(f"'{host}', label empty or too long") from None 986s 986s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 986s af, socktype, proto, canonname, sa = res 986s sock = None 986s try: 986s sock = socket.socket(af, socktype, proto) 986s 986s # If provided, set socket level options before connecting. 986s _set_socket_options(sock, socket_options) 986s 986s if timeout is not _DEFAULT_TIMEOUT: 986s sock.settimeout(timeout) 986s if source_address: 986s sock.bind(source_address) 986s > sock.connect(sa) 986s E ConnectionRefusedError: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 986s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 986s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s redirect = False, assert_same_host = False 986s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 986s release_conn = False, chunked = False, body_pos = None, preload_content = False 986s decode_content = False, response_kw = {} 986s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 986s destination_scheme = None, conn = None, release_this_conn = True 986s http_tunnel_required = False, err = None, clean_exit = False 986s 986s def urlopen( # type: ignore[override] 986s self, 986s method: str, 986s url: str, 986s body: _TYPE_BODY | None = None, 986s headers: typing.Mapping[str, str] | None = None, 986s retries: Retry | bool | int | None = None, 986s redirect: bool = True, 986s assert_same_host: bool = True, 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s pool_timeout: int | None = None, 986s release_conn: bool | None = None, 986s chunked: bool = False, 986s body_pos: _TYPE_BODY_POSITION | None = None, 986s preload_content: bool = True, 986s decode_content: bool = True, 986s **response_kw: typing.Any, 986s ) -> BaseHTTPResponse: 986s """ 986s Get a connection from the pool and perform an HTTP request. This is the 986s lowest level call for making a request, so you'll need to specify all 986s the raw details. 986s 986s .. note:: 986s 986s More commonly, it's appropriate to use a convenience method 986s such as :meth:`request`. 986s 986s .. note:: 986s 986s `release_conn` will only behave as expected if 986s `preload_content=False` because we want to make 986s `preload_content=False` the default behaviour someday soon without 986s breaking backwards compatibility. 986s 986s :param method: 986s HTTP request method (such as GET, POST, PUT, etc.) 986s 986s :param url: 986s The URL to perform the request on. 986s 986s :param body: 986s Data to send in the request body, either :class:`str`, :class:`bytes`, 986s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 986s 986s :param headers: 986s Dictionary of custom headers to send, such as User-Agent, 986s If-None-Match, etc. If None, pool headers are used. If provided, 986s these headers completely replace any pool-specific headers. 986s 986s :param retries: 986s Configure the number of retries to allow before raising a 986s :class:`~urllib3.exceptions.MaxRetryError` exception. 986s 986s Pass ``None`` to retry until you receive a response. Pass a 986s :class:`~urllib3.util.retry.Retry` object for fine-grained control 986s over different types of retries. 986s Pass an integer number to retry connection errors that many times, 986s but no other types of errors. Pass zero to never retry. 986s 986s If ``False``, then retries are disabled and any exception is raised 986s immediately. Also, instead of raising a MaxRetryError on redirects, 986s the redirect response will be returned. 986s 986s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 986s 986s :param redirect: 986s If True, automatically handle redirects (status codes 301, 302, 986s 303, 307, 308). Each redirect counts as a retry. Disabling retries 986s will disable redirect, too. 986s 986s :param assert_same_host: 986s If ``True``, will make sure that the host of the pool requests is 986s consistent else will raise HostChangedError. When ``False``, you can 986s use the pool on an HTTP proxy and request foreign hosts. 986s 986s :param timeout: 986s If specified, overrides the default timeout for this one 986s request. It may be a float (in seconds) or an instance of 986s :class:`urllib3.util.Timeout`. 986s 986s :param pool_timeout: 986s If set and the pool is set to block=True, then this method will 986s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 986s connection is available within the time period. 986s 986s :param bool preload_content: 986s If True, the response's body will be preloaded into memory. 986s 986s :param bool decode_content: 986s If True, will attempt to decode the body based on the 986s 'content-encoding' header. 986s 986s :param release_conn: 986s If False, then the urlopen call will not release the connection 986s back into the pool once a response is received (but will release if 986s you read the entire contents of the response such as when 986s `preload_content=True`). This is useful if you're not preloading 986s the response's content immediately. You will need to call 986s ``r.release_conn()`` on the response ``r`` to return the connection 986s back into the pool. If None, it takes the value of ``preload_content`` 986s which defaults to ``True``. 986s 986s :param bool chunked: 986s If True, urllib3 will send the body using chunked transfer 986s encoding. Otherwise, urllib3 will send the body using the standard 986s content-length form. Defaults to False. 986s 986s :param int body_pos: 986s Position to seek to in file-like body in the event of a retry or 986s redirect. Typically this won't need to be set because urllib3 will 986s auto-populate the value when needed. 986s """ 986s parsed_url = parse_url(url) 986s destination_scheme = parsed_url.scheme 986s 986s if headers is None: 986s headers = self.headers 986s 986s if not isinstance(retries, Retry): 986s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 986s 986s if release_conn is None: 986s release_conn = preload_content 986s 986s # Check host 986s if assert_same_host and not self.is_same_host(url): 986s raise HostChangedError(self, url, retries) 986s 986s # Ensure that the URL we're connecting to is properly encoded 986s if url.startswith("/"): 986s url = to_str(_encode_target(url)) 986s else: 986s url = to_str(parsed_url.url) 986s 986s conn = None 986s 986s # Track whether `conn` needs to be released before 986s # returning/raising/recursing. Update this variable if necessary, and 986s # leave `release_conn` constant throughout the function. That way, if 986s # the function recurses, the original value of `release_conn` will be 986s # passed down into the recursive call, and its value will be respected. 986s # 986s # See issue #651 [1] for details. 986s # 986s # [1] 986s release_this_conn = release_conn 986s 986s http_tunnel_required = connection_requires_http_tunnel( 986s self.proxy, self.proxy_config, destination_scheme 986s ) 986s 986s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 986s # have to copy the headers dict so we can safely change it without those 986s # changes being reflected in anyone else's copy. 986s if not http_tunnel_required: 986s headers = headers.copy() # type: ignore[attr-defined] 986s headers.update(self.proxy_headers) # type: ignore[union-attr] 986s 986s # Must keep the exception bound to a separate variable or else Python 3 986s # complains about UnboundLocalError. 986s err = None 986s 986s # Keep track of whether we cleanly exited the except block. This 986s # ensures we do proper cleanup in finally. 986s clean_exit = False 986s 986s # Rewind body position, if needed. Record current position 986s # for future rewinds in the event of a redirect/retry. 986s body_pos = set_file_position(body, body_pos) 986s 986s try: 986s # Request a connection from the queue. 986s timeout_obj = self._get_timeout(timeout) 986s conn = self._get_conn(timeout=pool_timeout) 986s 986s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 986s 986s # Is this a closed/new connection that requires CONNECT tunnelling? 986s if self.proxy is not None and http_tunnel_required and conn.is_closed: 986s try: 986s self._prepare_proxy(conn) 986s except (BaseSSLError, OSError, SocketTimeout) as e: 986s self._raise_timeout( 986s err=e, url=self.proxy.url, timeout_value=conn.timeout 986s ) 986s raise 986s 986s # If we're going to release the connection in ``finally:``, then 986s # the response doesn't need to know about the connection. Otherwise 986s # it will also try to release it and we'll have a double-release 986s # mess. 986s response_conn = conn if not release_conn else None 986s 986s # Make the request on the HTTPConnection object 986s > response = self._make_request( 986s conn, 986s method, 986s url, 986s timeout=timeout_obj, 986s body=body, 986s headers=headers, 986s chunked=chunked, 986s retries=retries, 986s response_conn=response_conn, 986s preload_content=preload_content, 986s decode_content=decode_content, 986s **response_kw, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 986s raise new_e 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 986s self._validate_conn(conn) 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 986s conn.connect() 986s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 986s self.sock = sock = self._new_conn() 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s except socket.gaierror as e: 986s raise NameResolutionError(self.host, self, e) from e 986s except SocketTimeout as e: 986s raise ConnectTimeoutError( 986s self, 986s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 986s ) from e 986s 986s except OSError as e: 986s > raise NewConnectionError( 986s self, f"Failed to establish a new connection: {e}" 986s ) from e 986s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s > resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:667: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 986s retries = retries.increment( 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 986s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 986s _pool = 986s _stacktrace = 986s 986s def increment( 986s self, 986s method: str | None = None, 986s url: str | None = None, 986s response: BaseHTTPResponse | None = None, 986s error: Exception | None = None, 986s _pool: ConnectionPool | None = None, 986s _stacktrace: TracebackType | None = None, 986s ) -> Retry: 986s """Return a new Retry object with incremented retry counters. 986s 986s :param response: A response object, or None, if the server did not 986s return a response. 986s :type response: :class:`~urllib3.response.BaseHTTPResponse` 986s :param Exception error: An error encountered during the request, or 986s None if the response was received successfully. 986s 986s :return: A new ``Retry`` object. 986s """ 986s if self.total is False and error: 986s # Disabled, indicate to re-raise the error. 986s raise reraise(type(error), error, _stacktrace) 986s 986s total = self.total 986s if total is not None: 986s total -= 1 986s 986s connect = self.connect 986s read = self.read 986s redirect = self.redirect 986s status_count = self.status 986s other = self.other 986s cause = "unknown" 986s status = None 986s redirect_location = None 986s 986s if error and self._is_connection_error(error): 986s # Connect retry? 986s if connect is False: 986s raise reraise(type(error), error, _stacktrace) 986s elif connect is not None: 986s connect -= 1 986s 986s elif error and self._is_read_error(error): 986s # Read retry? 986s if read is False or method is None or not self._is_method_retryable(method): 986s raise reraise(type(error), error, _stacktrace) 986s elif read is not None: 986s read -= 1 986s 986s elif error: 986s # Other retry? 986s if other is not None: 986s other -= 1 986s 986s elif response and response.get_redirect_location(): 986s # Redirect retry? 986s if redirect is not None: 986s redirect -= 1 986s cause = "too many redirects" 986s response_redirect_location = response.get_redirect_location() 986s if response_redirect_location: 986s redirect_location = response_redirect_location 986s status = response.status 986s 986s else: 986s # Incrementing because of a server error like a 500 in 986s # status_forcelist and the given method is in the allowed_methods 986s cause = ResponseError.GENERIC_ERROR 986s if response and response.status: 986s if status_count is not None: 986s status_count -= 1 986s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 986s status = response.status 986s 986s history = self.history + ( 986s RequestHistory(method, url, error, status, redirect_location), 986s ) 986s 986s new_retry = self.new( 986s total=total, 986s connect=connect, 986s read=read, 986s redirect=redirect, 986s status=status_count, 986s other=other, 986s history=history, 986s ) 986s 986s if new_retry.is_exhausted(): 986s reason = error or ResponseError(cause) 986s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 986s 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')) 986s 986s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 986s 986s During handling of the above exception, another exception occurred: 986s 986s def test_simple_regex(): 986s > enc = tiktoken.get_encoding("cl100k_base") 986s 986s tests/test_encoding.py:53: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 986s enc = Encoding(**constructor()) 986s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 986s mergeable_ranks = load_tiktoken_bpe( 986s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 986s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 986s contents = read_file(blobpath) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 986s resp = requests.get(blobpath) 986s /usr/lib/python3/dist-packages/requests/api.py:73: in get 986s return request("get", url, params=params, **kwargs) 986s /usr/lib/python3/dist-packages/requests/api.py:59: in request 986s return session.request(method=method, url=url, **kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 986s resp = self.send(prep, **send_kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 986s r = adapter.send(request, **kwargs) 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s except (ProtocolError, OSError) as err: 986s raise ConnectionError(err, request=request) 986s 986s except MaxRetryError as e: 986s if isinstance(e.reason, ConnectTimeoutError): 986s # TODO: Remove this in 3.0.0: see #2811 986s if not isinstance(e.reason, NewConnectionError): 986s raise ConnectTimeout(e, request=request) 986s 986s if isinstance(e.reason, ResponseError): 986s raise RetryError(e, request=request) 986s 986s if isinstance(e.reason, _ProxyError): 986s raise ProxyError(e, request=request) 986s 986s if isinstance(e.reason, _SSLError): 986s # This branch is for urllib3 v1.22 and later. 986s raise SSLError(e, request=request) 986s 986s > raise ConnectionError(e, request=request) 986s 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')) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 986s ______________________________ test_basic_encode _______________________________ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s > sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 986s raise err 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 986s source_address = None, socket_options = [(6, 1, 1)] 986s 986s def create_connection( 986s address: tuple[str, int], 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s source_address: tuple[str, int] | None = None, 986s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 986s ) -> socket.socket: 986s """Connect to *address* and return the socket object. 986s 986s Convenience function. Connect to *address* (a 2-tuple ``(host, 986s port)``) and return the socket object. Passing the optional 986s *timeout* parameter will set the timeout on the socket instance 986s before attempting to connect. If no *timeout* is supplied, the 986s global default timeout setting returned by :func:`socket.getdefaulttimeout` 986s is used. If *source_address* is set it must be a tuple of (host, port) 986s for the socket to bind as a source address before making the connection. 986s An host of '' or port 0 tells the OS to use the default. 986s """ 986s 986s host, port = address 986s if host.startswith("["): 986s host = host.strip("[]") 986s err = None 986s 986s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 986s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 986s # The original create_connection function always returns all records. 986s family = allowed_gai_family() 986s 986s try: 986s host.encode("idna") 986s except UnicodeError: 986s raise LocationParseError(f"'{host}', label empty or too long") from None 986s 986s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 986s af, socktype, proto, canonname, sa = res 986s sock = None 986s try: 986s sock = socket.socket(af, socktype, proto) 986s 986s # If provided, set socket level options before connecting. 986s _set_socket_options(sock, socket_options) 986s 986s if timeout is not _DEFAULT_TIMEOUT: 986s sock.settimeout(timeout) 986s if source_address: 986s sock.bind(source_address) 986s > sock.connect(sa) 986s E ConnectionRefusedError: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 986s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 986s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s redirect = False, assert_same_host = False 986s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 986s release_conn = False, chunked = False, body_pos = None, preload_content = False 986s decode_content = False, response_kw = {} 986s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 986s destination_scheme = None, conn = None, release_this_conn = True 986s http_tunnel_required = False, err = None, clean_exit = False 986s 986s def urlopen( # type: ignore[override] 986s self, 986s method: str, 986s url: str, 986s body: _TYPE_BODY | None = None, 986s headers: typing.Mapping[str, str] | None = None, 986s retries: Retry | bool | int | None = None, 986s redirect: bool = True, 986s assert_same_host: bool = True, 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s pool_timeout: int | None = None, 986s release_conn: bool | None = None, 986s chunked: bool = False, 986s body_pos: _TYPE_BODY_POSITION | None = None, 986s preload_content: bool = True, 986s decode_content: bool = True, 986s **response_kw: typing.Any, 986s ) -> BaseHTTPResponse: 986s """ 986s Get a connection from the pool and perform an HTTP request. This is the 986s lowest level call for making a request, so you'll need to specify all 986s the raw details. 986s 986s .. note:: 986s 986s More commonly, it's appropriate to use a convenience method 986s such as :meth:`request`. 986s 986s .. note:: 986s 986s `release_conn` will only behave as expected if 986s `preload_content=False` because we want to make 986s `preload_content=False` the default behaviour someday soon without 986s breaking backwards compatibility. 986s 986s :param method: 986s HTTP request method (such as GET, POST, PUT, etc.) 986s 986s :param url: 986s The URL to perform the request on. 986s 986s :param body: 986s Data to send in the request body, either :class:`str`, :class:`bytes`, 986s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 986s 986s :param headers: 986s Dictionary of custom headers to send, such as User-Agent, 986s If-None-Match, etc. If None, pool headers are used. If provided, 986s these headers completely replace any pool-specific headers. 986s 986s :param retries: 986s Configure the number of retries to allow before raising a 986s :class:`~urllib3.exceptions.MaxRetryError` exception. 986s 986s Pass ``None`` to retry until you receive a response. Pass a 986s :class:`~urllib3.util.retry.Retry` object for fine-grained control 986s over different types of retries. 986s Pass an integer number to retry connection errors that many times, 986s but no other types of errors. Pass zero to never retry. 986s 986s If ``False``, then retries are disabled and any exception is raised 986s immediately. Also, instead of raising a MaxRetryError on redirects, 986s the redirect response will be returned. 986s 986s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 986s 986s :param redirect: 986s If True, automatically handle redirects (status codes 301, 302, 986s 303, 307, 308). Each redirect counts as a retry. Disabling retries 986s will disable redirect, too. 986s 986s :param assert_same_host: 986s If ``True``, will make sure that the host of the pool requests is 986s consistent else will raise HostChangedError. When ``False``, you can 986s use the pool on an HTTP proxy and request foreign hosts. 986s 986s :param timeout: 986s If specified, overrides the default timeout for this one 986s request. It may be a float (in seconds) or an instance of 986s :class:`urllib3.util.Timeout`. 986s 986s :param pool_timeout: 986s If set and the pool is set to block=True, then this method will 986s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 986s connection is available within the time period. 986s 986s :param bool preload_content: 986s If True, the response's body will be preloaded into memory. 986s 986s :param bool decode_content: 986s If True, will attempt to decode the body based on the 986s 'content-encoding' header. 986s 986s :param release_conn: 986s If False, then the urlopen call will not release the connection 986s back into the pool once a response is received (but will release if 986s you read the entire contents of the response such as when 986s `preload_content=True`). This is useful if you're not preloading 986s the response's content immediately. You will need to call 986s ``r.release_conn()`` on the response ``r`` to return the connection 986s back into the pool. If None, it takes the value of ``preload_content`` 986s which defaults to ``True``. 986s 986s :param bool chunked: 986s If True, urllib3 will send the body using chunked transfer 986s encoding. Otherwise, urllib3 will send the body using the standard 986s content-length form. Defaults to False. 986s 986s :param int body_pos: 986s Position to seek to in file-like body in the event of a retry or 986s redirect. Typically this won't need to be set because urllib3 will 986s auto-populate the value when needed. 986s """ 986s parsed_url = parse_url(url) 986s destination_scheme = parsed_url.scheme 986s 986s if headers is None: 986s headers = self.headers 986s 986s if not isinstance(retries, Retry): 986s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 986s 986s if release_conn is None: 986s release_conn = preload_content 986s 986s # Check host 986s if assert_same_host and not self.is_same_host(url): 986s raise HostChangedError(self, url, retries) 986s 986s # Ensure that the URL we're connecting to is properly encoded 986s if url.startswith("/"): 986s url = to_str(_encode_target(url)) 986s else: 986s url = to_str(parsed_url.url) 986s 986s conn = None 986s 986s # Track whether `conn` needs to be released before 986s # returning/raising/recursing. Update this variable if necessary, and 986s # leave `release_conn` constant throughout the function. That way, if 986s # the function recurses, the original value of `release_conn` will be 986s # passed down into the recursive call, and its value will be respected. 986s # 986s # See issue #651 [1] for details. 986s # 986s # [1] 986s release_this_conn = release_conn 986s 986s http_tunnel_required = connection_requires_http_tunnel( 986s self.proxy, self.proxy_config, destination_scheme 986s ) 986s 986s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 986s # have to copy the headers dict so we can safely change it without those 986s # changes being reflected in anyone else's copy. 986s if not http_tunnel_required: 986s headers = headers.copy() # type: ignore[attr-defined] 986s headers.update(self.proxy_headers) # type: ignore[union-attr] 986s 986s # Must keep the exception bound to a separate variable or else Python 3 986s # complains about UnboundLocalError. 986s err = None 986s 986s # Keep track of whether we cleanly exited the except block. This 986s # ensures we do proper cleanup in finally. 986s clean_exit = False 986s 986s # Rewind body position, if needed. Record current position 986s # for future rewinds in the event of a redirect/retry. 986s body_pos = set_file_position(body, body_pos) 986s 986s try: 986s # Request a connection from the queue. 986s timeout_obj = self._get_timeout(timeout) 986s conn = self._get_conn(timeout=pool_timeout) 986s 986s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 986s 986s # Is this a closed/new connection that requires CONNECT tunnelling? 986s if self.proxy is not None and http_tunnel_required and conn.is_closed: 986s try: 986s self._prepare_proxy(conn) 986s except (BaseSSLError, OSError, SocketTimeout) as e: 986s self._raise_timeout( 986s err=e, url=self.proxy.url, timeout_value=conn.timeout 986s ) 986s raise 986s 986s # If we're going to release the connection in ``finally:``, then 986s # the response doesn't need to know about the connection. Otherwise 986s # it will also try to release it and we'll have a double-release 986s # mess. 986s response_conn = conn if not release_conn else None 986s 986s # Make the request on the HTTPConnection object 986s > response = self._make_request( 986s conn, 986s method, 986s url, 986s timeout=timeout_obj, 986s body=body, 986s headers=headers, 986s chunked=chunked, 986s retries=retries, 986s response_conn=response_conn, 986s preload_content=preload_content, 986s decode_content=decode_content, 986s **response_kw, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 986s raise new_e 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 986s self._validate_conn(conn) 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 986s conn.connect() 986s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 986s self.sock = sock = self._new_conn() 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s except socket.gaierror as e: 986s raise NameResolutionError(self.host, self, e) from e 986s except SocketTimeout as e: 986s raise ConnectTimeoutError( 986s self, 986s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 986s ) from e 986s 986s except OSError as e: 986s > raise NewConnectionError( 986s self, f"Failed to establish a new connection: {e}" 986s ) from e 986s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s > resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:667: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 986s retries = retries.increment( 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 986s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 986s _pool = 986s _stacktrace = 986s 986s def increment( 986s self, 986s method: str | None = None, 986s url: str | None = None, 986s response: BaseHTTPResponse | None = None, 986s error: Exception | None = None, 986s _pool: ConnectionPool | None = None, 986s _stacktrace: TracebackType | None = None, 986s ) -> Retry: 986s """Return a new Retry object with incremented retry counters. 986s 986s :param response: A response object, or None, if the server did not 986s return a response. 986s :type response: :class:`~urllib3.response.BaseHTTPResponse` 986s :param Exception error: An error encountered during the request, or 986s None if the response was received successfully. 986s 986s :return: A new ``Retry`` object. 986s """ 986s if self.total is False and error: 986s # Disabled, indicate to re-raise the error. 986s raise reraise(type(error), error, _stacktrace) 986s 986s total = self.total 986s if total is not None: 986s total -= 1 986s 986s connect = self.connect 986s read = self.read 986s redirect = self.redirect 986s status_count = self.status 986s other = self.other 986s cause = "unknown" 986s status = None 986s redirect_location = None 986s 986s if error and self._is_connection_error(error): 986s # Connect retry? 986s if connect is False: 986s raise reraise(type(error), error, _stacktrace) 986s elif connect is not None: 986s connect -= 1 986s 986s elif error and self._is_read_error(error): 986s # Read retry? 986s if read is False or method is None or not self._is_method_retryable(method): 986s raise reraise(type(error), error, _stacktrace) 986s elif read is not None: 986s read -= 1 986s 986s elif error: 986s # Other retry? 986s if other is not None: 986s other -= 1 986s 986s elif response and response.get_redirect_location(): 986s # Redirect retry? 986s if redirect is not None: 986s redirect -= 1 986s cause = "too many redirects" 986s response_redirect_location = response.get_redirect_location() 986s if response_redirect_location: 986s redirect_location = response_redirect_location 986s status = response.status 986s 986s else: 986s # Incrementing because of a server error like a 500 in 986s # status_forcelist and the given method is in the allowed_methods 986s cause = ResponseError.GENERIC_ERROR 986s if response and response.status: 986s if status_count is not None: 986s status_count -= 1 986s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 986s status = response.status 986s 986s history = self.history + ( 986s RequestHistory(method, url, error, status, redirect_location), 986s ) 986s 986s new_retry = self.new( 986s total=total, 986s connect=connect, 986s read=read, 986s redirect=redirect, 986s status=status_count, 986s other=other, 986s history=history, 986s ) 986s 986s if new_retry.is_exhausted(): 986s reason = error or ResponseError(cause) 986s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 986s 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')) 986s 986s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 986s 986s During handling of the above exception, another exception occurred: 986s 986s def test_basic_encode(): 986s > enc = tiktoken.get_encoding("r50k_base") 986s 986s tests/test_encoding.py:62: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 986s enc = Encoding(**constructor()) 986s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 986s mergeable_ranks = load_tiktoken_bpe( 986s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 986s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 986s contents = read_file(blobpath) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 986s resp = requests.get(blobpath) 986s /usr/lib/python3/dist-packages/requests/api.py:73: in get 986s return request("get", url, params=params, **kwargs) 986s /usr/lib/python3/dist-packages/requests/api.py:59: in request 986s return session.request(method=method, url=url, **kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 986s resp = self.send(prep, **send_kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 986s r = adapter.send(request, **kwargs) 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s except (ProtocolError, OSError) as err: 986s raise ConnectionError(err, request=request) 986s 986s except MaxRetryError as e: 986s if isinstance(e.reason, ConnectTimeoutError): 986s # TODO: Remove this in 3.0.0: see #2811 986s if not isinstance(e.reason, NewConnectionError): 986s raise ConnectTimeout(e, request=request) 986s 986s if isinstance(e.reason, ResponseError): 986s raise RetryError(e, request=request) 986s 986s if isinstance(e.reason, _ProxyError): 986s raise ProxyError(e, request=request) 986s 986s if isinstance(e.reason, _SSLError): 986s # This branch is for urllib3 v1.22 and later. 986s raise SSLError(e, request=request) 986s 986s > raise ConnectionError(e, request=request) 986s 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')) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 986s ______________________________ test_encode_empty _______________________________ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s > sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 986s raise err 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 986s source_address = None, socket_options = [(6, 1, 1)] 986s 986s def create_connection( 986s address: tuple[str, int], 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s source_address: tuple[str, int] | None = None, 986s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 986s ) -> socket.socket: 986s """Connect to *address* and return the socket object. 986s 986s Convenience function. Connect to *address* (a 2-tuple ``(host, 986s port)``) and return the socket object. Passing the optional 986s *timeout* parameter will set the timeout on the socket instance 986s before attempting to connect. If no *timeout* is supplied, the 986s global default timeout setting returned by :func:`socket.getdefaulttimeout` 986s is used. If *source_address* is set it must be a tuple of (host, port) 986s for the socket to bind as a source address before making the connection. 986s An host of '' or port 0 tells the OS to use the default. 986s """ 986s 986s host, port = address 986s if host.startswith("["): 986s host = host.strip("[]") 986s err = None 986s 986s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 986s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 986s # The original create_connection function always returns all records. 986s family = allowed_gai_family() 986s 986s try: 986s host.encode("idna") 986s except UnicodeError: 986s raise LocationParseError(f"'{host}', label empty or too long") from None 986s 986s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 986s af, socktype, proto, canonname, sa = res 986s sock = None 986s try: 986s sock = socket.socket(af, socktype, proto) 986s 986s # If provided, set socket level options before connecting. 986s _set_socket_options(sock, socket_options) 986s 986s if timeout is not _DEFAULT_TIMEOUT: 986s sock.settimeout(timeout) 986s if source_address: 986s sock.bind(source_address) 986s > sock.connect(sa) 986s E ConnectionRefusedError: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 986s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 986s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s redirect = False, assert_same_host = False 986s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 986s release_conn = False, chunked = False, body_pos = None, preload_content = False 986s decode_content = False, response_kw = {} 986s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 986s destination_scheme = None, conn = None, release_this_conn = True 986s http_tunnel_required = False, err = None, clean_exit = False 986s 986s def urlopen( # type: ignore[override] 986s self, 986s method: str, 986s url: str, 986s body: _TYPE_BODY | None = None, 986s headers: typing.Mapping[str, str] | None = None, 986s retries: Retry | bool | int | None = None, 986s redirect: bool = True, 986s assert_same_host: bool = True, 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s pool_timeout: int | None = None, 986s release_conn: bool | None = None, 986s chunked: bool = False, 986s body_pos: _TYPE_BODY_POSITION | None = None, 986s preload_content: bool = True, 986s decode_content: bool = True, 986s **response_kw: typing.Any, 986s ) -> BaseHTTPResponse: 986s """ 986s Get a connection from the pool and perform an HTTP request. This is the 986s lowest level call for making a request, so you'll need to specify all 986s the raw details. 986s 986s .. note:: 986s 986s More commonly, it's appropriate to use a convenience method 986s such as :meth:`request`. 986s 986s .. note:: 986s 986s `release_conn` will only behave as expected if 986s `preload_content=False` because we want to make 986s `preload_content=False` the default behaviour someday soon without 986s breaking backwards compatibility. 986s 986s :param method: 986s HTTP request method (such as GET, POST, PUT, etc.) 986s 986s :param url: 986s The URL to perform the request on. 986s 986s :param body: 986s Data to send in the request body, either :class:`str`, :class:`bytes`, 986s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 986s 986s :param headers: 986s Dictionary of custom headers to send, such as User-Agent, 986s If-None-Match, etc. If None, pool headers are used. If provided, 986s these headers completely replace any pool-specific headers. 986s 986s :param retries: 986s Configure the number of retries to allow before raising a 986s :class:`~urllib3.exceptions.MaxRetryError` exception. 986s 986s Pass ``None`` to retry until you receive a response. Pass a 986s :class:`~urllib3.util.retry.Retry` object for fine-grained control 986s over different types of retries. 986s Pass an integer number to retry connection errors that many times, 986s but no other types of errors. Pass zero to never retry. 986s 986s If ``False``, then retries are disabled and any exception is raised 986s immediately. Also, instead of raising a MaxRetryError on redirects, 986s the redirect response will be returned. 986s 986s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 986s 986s :param redirect: 986s If True, automatically handle redirects (status codes 301, 302, 986s 303, 307, 308). Each redirect counts as a retry. Disabling retries 986s will disable redirect, too. 986s 986s :param assert_same_host: 986s If ``True``, will make sure that the host of the pool requests is 986s consistent else will raise HostChangedError. When ``False``, you can 986s use the pool on an HTTP proxy and request foreign hosts. 986s 986s :param timeout: 986s If specified, overrides the default timeout for this one 986s request. It may be a float (in seconds) or an instance of 986s :class:`urllib3.util.Timeout`. 986s 986s :param pool_timeout: 986s If set and the pool is set to block=True, then this method will 986s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 986s connection is available within the time period. 986s 986s :param bool preload_content: 986s If True, the response's body will be preloaded into memory. 986s 986s :param bool decode_content: 986s If True, will attempt to decode the body based on the 986s 'content-encoding' header. 986s 986s :param release_conn: 986s If False, then the urlopen call will not release the connection 986s back into the pool once a response is received (but will release if 986s you read the entire contents of the response such as when 986s `preload_content=True`). This is useful if you're not preloading 986s the response's content immediately. You will need to call 986s ``r.release_conn()`` on the response ``r`` to return the connection 986s back into the pool. If None, it takes the value of ``preload_content`` 986s which defaults to ``True``. 986s 986s :param bool chunked: 986s If True, urllib3 will send the body using chunked transfer 986s encoding. Otherwise, urllib3 will send the body using the standard 986s content-length form. Defaults to False. 986s 986s :param int body_pos: 986s Position to seek to in file-like body in the event of a retry or 986s redirect. Typically this won't need to be set because urllib3 will 986s auto-populate the value when needed. 986s """ 986s parsed_url = parse_url(url) 986s destination_scheme = parsed_url.scheme 986s 986s if headers is None: 986s headers = self.headers 986s 986s if not isinstance(retries, Retry): 986s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 986s 986s if release_conn is None: 986s release_conn = preload_content 986s 986s # Check host 986s if assert_same_host and not self.is_same_host(url): 986s raise HostChangedError(self, url, retries) 986s 986s # Ensure that the URL we're connecting to is properly encoded 986s if url.startswith("/"): 986s url = to_str(_encode_target(url)) 986s else: 986s url = to_str(parsed_url.url) 986s 986s conn = None 986s 986s # Track whether `conn` needs to be released before 986s # returning/raising/recursing. Update this variable if necessary, and 986s # leave `release_conn` constant throughout the function. That way, if 986s # the function recurses, the original value of `release_conn` will be 986s # passed down into the recursive call, and its value will be respected. 986s # 986s # See issue #651 [1] for details. 986s # 986s # [1] 986s release_this_conn = release_conn 986s 986s http_tunnel_required = connection_requires_http_tunnel( 986s self.proxy, self.proxy_config, destination_scheme 986s ) 986s 986s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 986s # have to copy the headers dict so we can safely change it without those 986s # changes being reflected in anyone else's copy. 986s if not http_tunnel_required: 986s headers = headers.copy() # type: ignore[attr-defined] 986s headers.update(self.proxy_headers) # type: ignore[union-attr] 986s 986s # Must keep the exception bound to a separate variable or else Python 3 986s # complains about UnboundLocalError. 986s err = None 986s 986s # Keep track of whether we cleanly exited the except block. This 986s # ensures we do proper cleanup in finally. 986s clean_exit = False 986s 986s # Rewind body position, if needed. Record current position 986s # for future rewinds in the event of a redirect/retry. 986s body_pos = set_file_position(body, body_pos) 986s 986s try: 986s # Request a connection from the queue. 986s timeout_obj = self._get_timeout(timeout) 986s conn = self._get_conn(timeout=pool_timeout) 986s 986s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 986s 986s # Is this a closed/new connection that requires CONNECT tunnelling? 986s if self.proxy is not None and http_tunnel_required and conn.is_closed: 986s try: 986s self._prepare_proxy(conn) 986s except (BaseSSLError, OSError, SocketTimeout) as e: 986s self._raise_timeout( 986s err=e, url=self.proxy.url, timeout_value=conn.timeout 986s ) 986s raise 986s 986s # If we're going to release the connection in ``finally:``, then 986s # the response doesn't need to know about the connection. Otherwise 986s # it will also try to release it and we'll have a double-release 986s # mess. 986s response_conn = conn if not release_conn else None 986s 986s # Make the request on the HTTPConnection object 986s > response = self._make_request( 986s conn, 986s method, 986s url, 986s timeout=timeout_obj, 986s body=body, 986s headers=headers, 986s chunked=chunked, 986s retries=retries, 986s response_conn=response_conn, 986s preload_content=preload_content, 986s decode_content=decode_content, 986s **response_kw, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 986s raise new_e 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 986s self._validate_conn(conn) 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 986s conn.connect() 986s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 986s self.sock = sock = self._new_conn() 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s except socket.gaierror as e: 986s raise NameResolutionError(self.host, self, e) from e 986s except SocketTimeout as e: 986s raise ConnectTimeoutError( 986s self, 986s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 986s ) from e 986s 986s except OSError as e: 986s > raise NewConnectionError( 986s self, f"Failed to establish a new connection: {e}" 986s ) from e 986s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s > resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:667: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 986s retries = retries.increment( 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 986s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 986s _pool = 986s _stacktrace = 986s 986s def increment( 986s self, 986s method: str | None = None, 986s url: str | None = None, 986s response: BaseHTTPResponse | None = None, 986s error: Exception | None = None, 986s _pool: ConnectionPool | None = None, 986s _stacktrace: TracebackType | None = None, 986s ) -> Retry: 986s """Return a new Retry object with incremented retry counters. 986s 986s :param response: A response object, or None, if the server did not 986s return a response. 986s :type response: :class:`~urllib3.response.BaseHTTPResponse` 986s :param Exception error: An error encountered during the request, or 986s None if the response was received successfully. 986s 986s :return: A new ``Retry`` object. 986s """ 986s if self.total is False and error: 986s # Disabled, indicate to re-raise the error. 986s raise reraise(type(error), error, _stacktrace) 986s 986s total = self.total 986s if total is not None: 986s total -= 1 986s 986s connect = self.connect 986s read = self.read 986s redirect = self.redirect 986s status_count = self.status 986s other = self.other 986s cause = "unknown" 986s status = None 986s redirect_location = None 986s 986s if error and self._is_connection_error(error): 986s # Connect retry? 986s if connect is False: 986s raise reraise(type(error), error, _stacktrace) 986s elif connect is not None: 986s connect -= 1 986s 986s elif error and self._is_read_error(error): 986s # Read retry? 986s if read is False or method is None or not self._is_method_retryable(method): 986s raise reraise(type(error), error, _stacktrace) 986s elif read is not None: 986s read -= 1 986s 986s elif error: 986s # Other retry? 986s if other is not None: 986s other -= 1 986s 986s elif response and response.get_redirect_location(): 986s # Redirect retry? 986s if redirect is not None: 986s redirect -= 1 986s cause = "too many redirects" 986s response_redirect_location = response.get_redirect_location() 986s if response_redirect_location: 986s redirect_location = response_redirect_location 986s status = response.status 986s 986s else: 986s # Incrementing because of a server error like a 500 in 986s # status_forcelist and the given method is in the allowed_methods 986s cause = ResponseError.GENERIC_ERROR 986s if response and response.status: 986s if status_count is not None: 986s status_count -= 1 986s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 986s status = response.status 986s 986s history = self.history + ( 986s RequestHistory(method, url, error, status, redirect_location), 986s ) 986s 986s new_retry = self.new( 986s total=total, 986s connect=connect, 986s read=read, 986s redirect=redirect, 986s status=status_count, 986s other=other, 986s history=history, 986s ) 986s 986s if new_retry.is_exhausted(): 986s reason = error or ResponseError(cause) 986s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 986s 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')) 986s 986s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 986s 986s During handling of the above exception, another exception occurred: 986s 986s def test_encode_empty(): 986s > enc = tiktoken.get_encoding("r50k_base") 986s 986s tests/test_encoding.py:74: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 986s enc = Encoding(**constructor()) 986s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 986s mergeable_ranks = load_tiktoken_bpe( 986s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 986s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 986s contents = read_file(blobpath) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 986s resp = requests.get(blobpath) 986s /usr/lib/python3/dist-packages/requests/api.py:73: in get 986s return request("get", url, params=params, **kwargs) 986s /usr/lib/python3/dist-packages/requests/api.py:59: in request 986s return session.request(method=method, url=url, **kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 986s resp = self.send(prep, **send_kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 986s r = adapter.send(request, **kwargs) 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s except (ProtocolError, OSError) as err: 986s raise ConnectionError(err, request=request) 986s 986s except MaxRetryError as e: 986s if isinstance(e.reason, ConnectTimeoutError): 986s # TODO: Remove this in 3.0.0: see #2811 986s if not isinstance(e.reason, NewConnectionError): 986s raise ConnectTimeout(e, request=request) 986s 986s if isinstance(e.reason, ResponseError): 986s raise RetryError(e, request=request) 986s 986s if isinstance(e.reason, _ProxyError): 986s raise ProxyError(e, request=request) 986s 986s if isinstance(e.reason, _SSLError): 986s # This branch is for urllib3 v1.22 and later. 986s raise SSLError(e, request=request) 986s 986s > raise ConnectionError(e, request=request) 986s 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')) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 986s ______________________________ test_encode_bytes _______________________________ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s > sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 986s raise err 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 986s source_address = None, socket_options = [(6, 1, 1)] 986s 986s def create_connection( 986s address: tuple[str, int], 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s source_address: tuple[str, int] | None = None, 986s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 986s ) -> socket.socket: 986s """Connect to *address* and return the socket object. 986s 986s Convenience function. Connect to *address* (a 2-tuple ``(host, 986s port)``) and return the socket object. Passing the optional 986s *timeout* parameter will set the timeout on the socket instance 986s before attempting to connect. If no *timeout* is supplied, the 986s global default timeout setting returned by :func:`socket.getdefaulttimeout` 986s is used. If *source_address* is set it must be a tuple of (host, port) 986s for the socket to bind as a source address before making the connection. 986s An host of '' or port 0 tells the OS to use the default. 986s """ 986s 986s host, port = address 986s if host.startswith("["): 986s host = host.strip("[]") 986s err = None 986s 986s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 986s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 986s # The original create_connection function always returns all records. 986s family = allowed_gai_family() 986s 986s try: 986s host.encode("idna") 986s except UnicodeError: 986s raise LocationParseError(f"'{host}', label empty or too long") from None 986s 986s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 986s af, socktype, proto, canonname, sa = res 986s sock = None 986s try: 986s sock = socket.socket(af, socktype, proto) 986s 986s # If provided, set socket level options before connecting. 986s _set_socket_options(sock, socket_options) 986s 986s if timeout is not _DEFAULT_TIMEOUT: 986s sock.settimeout(timeout) 986s if source_address: 986s sock.bind(source_address) 986s > sock.connect(sa) 986s E ConnectionRefusedError: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 986s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 986s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s redirect = False, assert_same_host = False 986s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 986s release_conn = False, chunked = False, body_pos = None, preload_content = False 986s decode_content = False, response_kw = {} 986s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 986s destination_scheme = None, conn = None, release_this_conn = True 986s http_tunnel_required = False, err = None, clean_exit = False 986s 986s def urlopen( # type: ignore[override] 986s self, 986s method: str, 986s url: str, 986s body: _TYPE_BODY | None = None, 986s headers: typing.Mapping[str, str] | None = None, 986s retries: Retry | bool | int | None = None, 986s redirect: bool = True, 986s assert_same_host: bool = True, 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s pool_timeout: int | None = None, 986s release_conn: bool | None = None, 986s chunked: bool = False, 986s body_pos: _TYPE_BODY_POSITION | None = None, 986s preload_content: bool = True, 986s decode_content: bool = True, 986s **response_kw: typing.Any, 986s ) -> BaseHTTPResponse: 986s """ 986s Get a connection from the pool and perform an HTTP request. This is the 986s lowest level call for making a request, so you'll need to specify all 986s the raw details. 986s 986s .. note:: 986s 986s More commonly, it's appropriate to use a convenience method 986s such as :meth:`request`. 986s 986s .. note:: 986s 986s `release_conn` will only behave as expected if 986s `preload_content=False` because we want to make 986s `preload_content=False` the default behaviour someday soon without 986s breaking backwards compatibility. 986s 986s :param method: 986s HTTP request method (such as GET, POST, PUT, etc.) 986s 986s :param url: 986s The URL to perform the request on. 986s 986s :param body: 986s Data to send in the request body, either :class:`str`, :class:`bytes`, 986s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 986s 986s :param headers: 986s Dictionary of custom headers to send, such as User-Agent, 986s If-None-Match, etc. If None, pool headers are used. If provided, 986s these headers completely replace any pool-specific headers. 986s 986s :param retries: 986s Configure the number of retries to allow before raising a 986s :class:`~urllib3.exceptions.MaxRetryError` exception. 986s 986s Pass ``None`` to retry until you receive a response. Pass a 986s :class:`~urllib3.util.retry.Retry` object for fine-grained control 986s over different types of retries. 986s Pass an integer number to retry connection errors that many times, 986s but no other types of errors. Pass zero to never retry. 986s 986s If ``False``, then retries are disabled and any exception is raised 986s immediately. Also, instead of raising a MaxRetryError on redirects, 986s the redirect response will be returned. 986s 986s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 986s 986s :param redirect: 986s If True, automatically handle redirects (status codes 301, 302, 986s 303, 307, 308). Each redirect counts as a retry. Disabling retries 986s will disable redirect, too. 986s 986s :param assert_same_host: 986s If ``True``, will make sure that the host of the pool requests is 986s consistent else will raise HostChangedError. When ``False``, you can 986s use the pool on an HTTP proxy and request foreign hosts. 986s 986s :param timeout: 986s If specified, overrides the default timeout for this one 986s request. It may be a float (in seconds) or an instance of 986s :class:`urllib3.util.Timeout`. 986s 986s :param pool_timeout: 986s If set and the pool is set to block=True, then this method will 986s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 986s connection is available within the time period. 986s 986s :param bool preload_content: 986s If True, the response's body will be preloaded into memory. 986s 986s :param bool decode_content: 986s If True, will attempt to decode the body based on the 986s 'content-encoding' header. 986s 986s :param release_conn: 986s If False, then the urlopen call will not release the connection 986s back into the pool once a response is received (but will release if 986s you read the entire contents of the response such as when 986s `preload_content=True`). This is useful if you're not preloading 986s the response's content immediately. You will need to call 986s ``r.release_conn()`` on the response ``r`` to return the connection 986s back into the pool. If None, it takes the value of ``preload_content`` 986s which defaults to ``True``. 986s 986s :param bool chunked: 986s If True, urllib3 will send the body using chunked transfer 986s encoding. Otherwise, urllib3 will send the body using the standard 986s content-length form. Defaults to False. 986s 986s :param int body_pos: 986s Position to seek to in file-like body in the event of a retry or 986s redirect. Typically this won't need to be set because urllib3 will 986s auto-populate the value when needed. 986s """ 986s parsed_url = parse_url(url) 986s destination_scheme = parsed_url.scheme 986s 986s if headers is None: 986s headers = self.headers 986s 986s if not isinstance(retries, Retry): 986s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 986s 986s if release_conn is None: 986s release_conn = preload_content 986s 986s # Check host 986s if assert_same_host and not self.is_same_host(url): 986s raise HostChangedError(self, url, retries) 986s 986s # Ensure that the URL we're connecting to is properly encoded 986s if url.startswith("/"): 986s url = to_str(_encode_target(url)) 986s else: 986s url = to_str(parsed_url.url) 986s 986s conn = None 986s 986s # Track whether `conn` needs to be released before 986s # returning/raising/recursing. Update this variable if necessary, and 986s # leave `release_conn` constant throughout the function. That way, if 986s # the function recurses, the original value of `release_conn` will be 986s # passed down into the recursive call, and its value will be respected. 986s # 986s # See issue #651 [1] for details. 986s # 986s # [1] 986s release_this_conn = release_conn 986s 986s http_tunnel_required = connection_requires_http_tunnel( 986s self.proxy, self.proxy_config, destination_scheme 986s ) 986s 986s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 986s # have to copy the headers dict so we can safely change it without those 986s # changes being reflected in anyone else's copy. 986s if not http_tunnel_required: 986s headers = headers.copy() # type: ignore[attr-defined] 986s headers.update(self.proxy_headers) # type: ignore[union-attr] 986s 986s # Must keep the exception bound to a separate variable or else Python 3 986s # complains about UnboundLocalError. 986s err = None 986s 986s # Keep track of whether we cleanly exited the except block. This 986s # ensures we do proper cleanup in finally. 986s clean_exit = False 986s 986s # Rewind body position, if needed. Record current position 986s # for future rewinds in the event of a redirect/retry. 986s body_pos = set_file_position(body, body_pos) 986s 986s try: 986s # Request a connection from the queue. 986s timeout_obj = self._get_timeout(timeout) 986s conn = self._get_conn(timeout=pool_timeout) 986s 986s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 986s 986s # Is this a closed/new connection that requires CONNECT tunnelling? 986s if self.proxy is not None and http_tunnel_required and conn.is_closed: 986s try: 986s self._prepare_proxy(conn) 986s except (BaseSSLError, OSError, SocketTimeout) as e: 986s self._raise_timeout( 986s err=e, url=self.proxy.url, timeout_value=conn.timeout 986s ) 986s raise 986s 986s # If we're going to release the connection in ``finally:``, then 986s # the response doesn't need to know about the connection. Otherwise 986s # it will also try to release it and we'll have a double-release 986s # mess. 986s response_conn = conn if not release_conn else None 986s 986s # Make the request on the HTTPConnection object 986s > response = self._make_request( 986s conn, 986s method, 986s url, 986s timeout=timeout_obj, 986s body=body, 986s headers=headers, 986s chunked=chunked, 986s retries=retries, 986s response_conn=response_conn, 986s preload_content=preload_content, 986s decode_content=decode_content, 986s **response_kw, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 986s raise new_e 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 986s self._validate_conn(conn) 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 986s conn.connect() 986s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 986s self.sock = sock = self._new_conn() 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s except socket.gaierror as e: 986s raise NameResolutionError(self.host, self, e) from e 986s except SocketTimeout as e: 986s raise ConnectTimeoutError( 986s self, 986s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 986s ) from e 986s 986s except OSError as e: 986s > raise NewConnectionError( 986s self, f"Failed to establish a new connection: {e}" 986s ) from e 986s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s > resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:667: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 986s retries = retries.increment( 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 986s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 986s _pool = 986s _stacktrace = 986s 986s def increment( 986s self, 986s method: str | None = None, 986s url: str | None = None, 986s response: BaseHTTPResponse | None = None, 986s error: Exception | None = None, 986s _pool: ConnectionPool | None = None, 986s _stacktrace: TracebackType | None = None, 986s ) -> Retry: 986s """Return a new Retry object with incremented retry counters. 986s 986s :param response: A response object, or None, if the server did not 986s return a response. 986s :type response: :class:`~urllib3.response.BaseHTTPResponse` 986s :param Exception error: An error encountered during the request, or 986s None if the response was received successfully. 986s 986s :return: A new ``Retry`` object. 986s """ 986s if self.total is False and error: 986s # Disabled, indicate to re-raise the error. 986s raise reraise(type(error), error, _stacktrace) 986s 986s total = self.total 986s if total is not None: 986s total -= 1 986s 986s connect = self.connect 986s read = self.read 986s redirect = self.redirect 986s status_count = self.status 986s other = self.other 986s cause = "unknown" 986s status = None 986s redirect_location = None 986s 986s if error and self._is_connection_error(error): 986s # Connect retry? 986s if connect is False: 986s raise reraise(type(error), error, _stacktrace) 986s elif connect is not None: 986s connect -= 1 986s 986s elif error and self._is_read_error(error): 986s # Read retry? 986s if read is False or method is None or not self._is_method_retryable(method): 986s raise reraise(type(error), error, _stacktrace) 986s elif read is not None: 986s read -= 1 986s 986s elif error: 986s # Other retry? 986s if other is not None: 986s other -= 1 986s 986s elif response and response.get_redirect_location(): 986s # Redirect retry? 986s if redirect is not None: 986s redirect -= 1 986s cause = "too many redirects" 986s response_redirect_location = response.get_redirect_location() 986s if response_redirect_location: 986s redirect_location = response_redirect_location 986s status = response.status 986s 986s else: 986s # Incrementing because of a server error like a 500 in 986s # status_forcelist and the given method is in the allowed_methods 986s cause = ResponseError.GENERIC_ERROR 986s if response and response.status: 986s if status_count is not None: 986s status_count -= 1 986s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 986s status = response.status 986s 986s history = self.history + ( 986s RequestHistory(method, url, error, status, redirect_location), 986s ) 986s 986s new_retry = self.new( 986s total=total, 986s connect=connect, 986s read=read, 986s redirect=redirect, 986s status=status_count, 986s other=other, 986s history=history, 986s ) 986s 986s if new_retry.is_exhausted(): 986s reason = error or ResponseError(cause) 986s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 986s 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')) 986s 986s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 986s 986s During handling of the above exception, another exception occurred: 986s 986s def test_encode_bytes(): 986s > enc = tiktoken.get_encoding("cl100k_base") 986s 986s tests/test_encoding.py:79: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 986s enc = Encoding(**constructor()) 986s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 986s mergeable_ranks = load_tiktoken_bpe( 986s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 986s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 986s contents = read_file(blobpath) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 986s resp = requests.get(blobpath) 986s /usr/lib/python3/dist-packages/requests/api.py:73: in get 986s return request("get", url, params=params, **kwargs) 986s /usr/lib/python3/dist-packages/requests/api.py:59: in request 986s return session.request(method=method, url=url, **kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 986s resp = self.send(prep, **send_kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 986s r = adapter.send(request, **kwargs) 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s except (ProtocolError, OSError) as err: 986s raise ConnectionError(err, request=request) 986s 986s except MaxRetryError as e: 986s if isinstance(e.reason, ConnectTimeoutError): 986s # TODO: Remove this in 3.0.0: see #2811 986s if not isinstance(e.reason, NewConnectionError): 986s raise ConnectTimeout(e, request=request) 986s 986s if isinstance(e.reason, ResponseError): 986s raise RetryError(e, request=request) 986s 986s if isinstance(e.reason, _ProxyError): 986s raise ProxyError(e, request=request) 986s 986s if isinstance(e.reason, _SSLError): 986s # This branch is for urllib3 v1.22 and later. 986s raise SSLError(e, request=request) 986s 986s > raise ConnectionError(e, request=request) 986s 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')) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 986s _________________________ test_encode_surrogate_pairs __________________________ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s > sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 986s raise err 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 986s source_address = None, socket_options = [(6, 1, 1)] 986s 986s def create_connection( 986s address: tuple[str, int], 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s source_address: tuple[str, int] | None = None, 986s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 986s ) -> socket.socket: 986s """Connect to *address* and return the socket object. 986s 986s Convenience function. Connect to *address* (a 2-tuple ``(host, 986s port)``) and return the socket object. Passing the optional 986s *timeout* parameter will set the timeout on the socket instance 986s before attempting to connect. If no *timeout* is supplied, the 986s global default timeout setting returned by :func:`socket.getdefaulttimeout` 986s is used. If *source_address* is set it must be a tuple of (host, port) 986s for the socket to bind as a source address before making the connection. 986s An host of '' or port 0 tells the OS to use the default. 986s """ 986s 986s host, port = address 986s if host.startswith("["): 986s host = host.strip("[]") 986s err = None 986s 986s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 986s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 986s # The original create_connection function always returns all records. 986s family = allowed_gai_family() 986s 986s try: 986s host.encode("idna") 986s except UnicodeError: 986s raise LocationParseError(f"'{host}', label empty or too long") from None 986s 986s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 986s af, socktype, proto, canonname, sa = res 986s sock = None 986s try: 986s sock = socket.socket(af, socktype, proto) 986s 986s # If provided, set socket level options before connecting. 986s _set_socket_options(sock, socket_options) 986s 986s if timeout is not _DEFAULT_TIMEOUT: 986s sock.settimeout(timeout) 986s if source_address: 986s sock.bind(source_address) 986s > sock.connect(sa) 986s E ConnectionRefusedError: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 986s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 986s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s redirect = False, assert_same_host = False 986s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 986s release_conn = False, chunked = False, body_pos = None, preload_content = False 986s decode_content = False, response_kw = {} 986s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 986s destination_scheme = None, conn = None, release_this_conn = True 986s http_tunnel_required = False, err = None, clean_exit = False 986s 986s def urlopen( # type: ignore[override] 986s self, 986s method: str, 986s url: str, 986s body: _TYPE_BODY | None = None, 986s headers: typing.Mapping[str, str] | None = None, 986s retries: Retry | bool | int | None = None, 986s redirect: bool = True, 986s assert_same_host: bool = True, 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s pool_timeout: int | None = None, 986s release_conn: bool | None = None, 986s chunked: bool = False, 986s body_pos: _TYPE_BODY_POSITION | None = None, 986s preload_content: bool = True, 986s decode_content: bool = True, 986s **response_kw: typing.Any, 986s ) -> BaseHTTPResponse: 986s """ 986s Get a connection from the pool and perform an HTTP request. This is the 986s lowest level call for making a request, so you'll need to specify all 986s the raw details. 986s 986s .. note:: 986s 986s More commonly, it's appropriate to use a convenience method 986s such as :meth:`request`. 986s 986s .. note:: 986s 986s `release_conn` will only behave as expected if 986s `preload_content=False` because we want to make 986s `preload_content=False` the default behaviour someday soon without 986s breaking backwards compatibility. 986s 986s :param method: 986s HTTP request method (such as GET, POST, PUT, etc.) 986s 986s :param url: 986s The URL to perform the request on. 986s 986s :param body: 986s Data to send in the request body, either :class:`str`, :class:`bytes`, 986s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 986s 986s :param headers: 986s Dictionary of custom headers to send, such as User-Agent, 986s If-None-Match, etc. If None, pool headers are used. If provided, 986s these headers completely replace any pool-specific headers. 986s 986s :param retries: 986s Configure the number of retries to allow before raising a 986s :class:`~urllib3.exceptions.MaxRetryError` exception. 986s 986s Pass ``None`` to retry until you receive a response. Pass a 986s :class:`~urllib3.util.retry.Retry` object for fine-grained control 986s over different types of retries. 986s Pass an integer number to retry connection errors that many times, 986s but no other types of errors. Pass zero to never retry. 986s 986s If ``False``, then retries are disabled and any exception is raised 986s immediately. Also, instead of raising a MaxRetryError on redirects, 986s the redirect response will be returned. 986s 986s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 986s 986s :param redirect: 986s If True, automatically handle redirects (status codes 301, 302, 986s 303, 307, 308). Each redirect counts as a retry. Disabling retries 986s will disable redirect, too. 986s 986s :param assert_same_host: 986s If ``True``, will make sure that the host of the pool requests is 986s consistent else will raise HostChangedError. When ``False``, you can 986s use the pool on an HTTP proxy and request foreign hosts. 986s 986s :param timeout: 986s If specified, overrides the default timeout for this one 986s request. It may be a float (in seconds) or an instance of 986s :class:`urllib3.util.Timeout`. 986s 986s :param pool_timeout: 986s If set and the pool is set to block=True, then this method will 986s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 986s connection is available within the time period. 986s 986s :param bool preload_content: 986s If True, the response's body will be preloaded into memory. 986s 986s :param bool decode_content: 986s If True, will attempt to decode the body based on the 986s 'content-encoding' header. 986s 986s :param release_conn: 986s If False, then the urlopen call will not release the connection 986s back into the pool once a response is received (but will release if 986s you read the entire contents of the response such as when 986s `preload_content=True`). This is useful if you're not preloading 986s the response's content immediately. You will need to call 986s ``r.release_conn()`` on the response ``r`` to return the connection 986s back into the pool. If None, it takes the value of ``preload_content`` 986s which defaults to ``True``. 986s 986s :param bool chunked: 986s If True, urllib3 will send the body using chunked transfer 986s encoding. Otherwise, urllib3 will send the body using the standard 986s content-length form. Defaults to False. 986s 986s :param int body_pos: 986s Position to seek to in file-like body in the event of a retry or 986s redirect. Typically this won't need to be set because urllib3 will 986s auto-populate the value when needed. 986s """ 986s parsed_url = parse_url(url) 986s destination_scheme = parsed_url.scheme 986s 986s if headers is None: 986s headers = self.headers 986s 986s if not isinstance(retries, Retry): 986s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 986s 986s if release_conn is None: 986s release_conn = preload_content 986s 986s # Check host 986s if assert_same_host and not self.is_same_host(url): 986s raise HostChangedError(self, url, retries) 986s 986s # Ensure that the URL we're connecting to is properly encoded 986s if url.startswith("/"): 986s url = to_str(_encode_target(url)) 986s else: 986s url = to_str(parsed_url.url) 986s 986s conn = None 986s 986s # Track whether `conn` needs to be released before 986s # returning/raising/recursing. Update this variable if necessary, and 986s # leave `release_conn` constant throughout the function. That way, if 986s # the function recurses, the original value of `release_conn` will be 986s # passed down into the recursive call, and its value will be respected. 986s # 986s # See issue #651 [1] for details. 986s # 986s # [1] 986s release_this_conn = release_conn 986s 986s http_tunnel_required = connection_requires_http_tunnel( 986s self.proxy, self.proxy_config, destination_scheme 986s ) 986s 986s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 986s # have to copy the headers dict so we can safely change it without those 986s # changes being reflected in anyone else's copy. 986s if not http_tunnel_required: 986s headers = headers.copy() # type: ignore[attr-defined] 986s headers.update(self.proxy_headers) # type: ignore[union-attr] 986s 986s # Must keep the exception bound to a separate variable or else Python 3 986s # complains about UnboundLocalError. 986s err = None 986s 986s # Keep track of whether we cleanly exited the except block. This 986s # ensures we do proper cleanup in finally. 986s clean_exit = False 986s 986s # Rewind body position, if needed. Record current position 986s # for future rewinds in the event of a redirect/retry. 986s body_pos = set_file_position(body, body_pos) 986s 986s try: 986s # Request a connection from the queue. 986s timeout_obj = self._get_timeout(timeout) 986s conn = self._get_conn(timeout=pool_timeout) 986s 986s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 986s 986s # Is this a closed/new connection that requires CONNECT tunnelling? 986s if self.proxy is not None and http_tunnel_required and conn.is_closed: 986s try: 986s self._prepare_proxy(conn) 986s except (BaseSSLError, OSError, SocketTimeout) as e: 986s self._raise_timeout( 986s err=e, url=self.proxy.url, timeout_value=conn.timeout 986s ) 986s raise 986s 986s # If we're going to release the connection in ``finally:``, then 986s # the response doesn't need to know about the connection. Otherwise 986s # it will also try to release it and we'll have a double-release 986s # mess. 986s response_conn = conn if not release_conn else None 986s 986s # Make the request on the HTTPConnection object 986s > response = self._make_request( 986s conn, 986s method, 986s url, 986s timeout=timeout_obj, 986s body=body, 986s headers=headers, 986s chunked=chunked, 986s retries=retries, 986s response_conn=response_conn, 986s preload_content=preload_content, 986s decode_content=decode_content, 986s **response_kw, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 986s raise new_e 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 986s self._validate_conn(conn) 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 986s conn.connect() 986s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 986s self.sock = sock = self._new_conn() 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s except socket.gaierror as e: 986s raise NameResolutionError(self.host, self, e) from e 986s except SocketTimeout as e: 986s raise ConnectTimeoutError( 986s self, 986s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 986s ) from e 986s 986s except OSError as e: 986s > raise NewConnectionError( 986s self, f"Failed to establish a new connection: {e}" 986s ) from e 986s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s > resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:667: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 986s retries = retries.increment( 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 986s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 986s _pool = 986s _stacktrace = 986s 986s def increment( 986s self, 986s method: str | None = None, 986s url: str | None = None, 986s response: BaseHTTPResponse | None = None, 986s error: Exception | None = None, 986s _pool: ConnectionPool | None = None, 986s _stacktrace: TracebackType | None = None, 986s ) -> Retry: 986s """Return a new Retry object with incremented retry counters. 986s 986s :param response: A response object, or None, if the server did not 986s return a response. 986s :type response: :class:`~urllib3.response.BaseHTTPResponse` 986s :param Exception error: An error encountered during the request, or 986s None if the response was received successfully. 986s 986s :return: A new ``Retry`` object. 986s """ 986s if self.total is False and error: 986s # Disabled, indicate to re-raise the error. 986s raise reraise(type(error), error, _stacktrace) 986s 986s total = self.total 986s if total is not None: 986s total -= 1 986s 986s connect = self.connect 986s read = self.read 986s redirect = self.redirect 986s status_count = self.status 986s other = self.other 986s cause = "unknown" 986s status = None 986s redirect_location = None 986s 986s if error and self._is_connection_error(error): 986s # Connect retry? 986s if connect is False: 986s raise reraise(type(error), error, _stacktrace) 986s elif connect is not None: 986s connect -= 1 986s 986s elif error and self._is_read_error(error): 986s # Read retry? 986s if read is False or method is None or not self._is_method_retryable(method): 986s raise reraise(type(error), error, _stacktrace) 986s elif read is not None: 986s read -= 1 986s 986s elif error: 986s # Other retry? 986s if other is not None: 986s other -= 1 986s 986s elif response and response.get_redirect_location(): 986s # Redirect retry? 986s if redirect is not None: 986s redirect -= 1 986s cause = "too many redirects" 986s response_redirect_location = response.get_redirect_location() 986s if response_redirect_location: 986s redirect_location = response_redirect_location 986s status = response.status 986s 986s else: 986s # Incrementing because of a server error like a 500 in 986s # status_forcelist and the given method is in the allowed_methods 986s cause = ResponseError.GENERIC_ERROR 986s if response and response.status: 986s if status_count is not None: 986s status_count -= 1 986s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 986s status = response.status 986s 986s history = self.history + ( 986s RequestHistory(method, url, error, status, redirect_location), 986s ) 986s 986s new_retry = self.new( 986s total=total, 986s connect=connect, 986s read=read, 986s redirect=redirect, 986s status=status_count, 986s other=other, 986s history=history, 986s ) 986s 986s if new_retry.is_exhausted(): 986s reason = error or ResponseError(cause) 986s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 986s 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')) 986s 986s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 986s 986s During handling of the above exception, another exception occurred: 986s 986s def test_encode_surrogate_pairs(): 986s > enc = tiktoken.get_encoding("cl100k_base") 986s 986s tests/test_encoding.py:84: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 986s enc = Encoding(**constructor()) 986s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 986s mergeable_ranks = load_tiktoken_bpe( 986s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 986s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 986s contents = read_file(blobpath) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 986s resp = requests.get(blobpath) 986s /usr/lib/python3/dist-packages/requests/api.py:73: in get 986s return request("get", url, params=params, **kwargs) 986s /usr/lib/python3/dist-packages/requests/api.py:59: in request 986s return session.request(method=method, url=url, **kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 986s resp = self.send(prep, **send_kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 986s r = adapter.send(request, **kwargs) 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s except (ProtocolError, OSError) as err: 986s raise ConnectionError(err, request=request) 986s 986s except MaxRetryError as e: 986s if isinstance(e.reason, ConnectTimeoutError): 986s # TODO: Remove this in 3.0.0: see #2811 986s if not isinstance(e.reason, NewConnectionError): 986s raise ConnectTimeout(e, request=request) 986s 986s if isinstance(e.reason, ResponseError): 986s raise RetryError(e, request=request) 986s 986s if isinstance(e.reason, _ProxyError): 986s raise ProxyError(e, request=request) 986s 986s if isinstance(e.reason, _SSLError): 986s # This branch is for urllib3 v1.22 and later. 986s raise SSLError(e, request=request) 986s 986s > raise ConnectionError(e, request=request) 986s 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')) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 986s _________________ test_catastrophically_repetitive[r50k_base] __________________ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s > sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 986s raise err 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 986s source_address = None, socket_options = [(6, 1, 1)] 986s 986s def create_connection( 986s address: tuple[str, int], 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s source_address: tuple[str, int] | None = None, 986s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 986s ) -> socket.socket: 986s """Connect to *address* and return the socket object. 986s 986s Convenience function. Connect to *address* (a 2-tuple ``(host, 986s port)``) and return the socket object. Passing the optional 986s *timeout* parameter will set the timeout on the socket instance 986s before attempting to connect. If no *timeout* is supplied, the 986s global default timeout setting returned by :func:`socket.getdefaulttimeout` 986s is used. If *source_address* is set it must be a tuple of (host, port) 986s for the socket to bind as a source address before making the connection. 986s An host of '' or port 0 tells the OS to use the default. 986s """ 986s 986s host, port = address 986s if host.startswith("["): 986s host = host.strip("[]") 986s err = None 986s 986s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 986s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 986s # The original create_connection function always returns all records. 986s family = allowed_gai_family() 986s 986s try: 986s host.encode("idna") 986s except UnicodeError: 986s raise LocationParseError(f"'{host}', label empty or too long") from None 986s 986s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 986s af, socktype, proto, canonname, sa = res 986s sock = None 986s try: 986s sock = socket.socket(af, socktype, proto) 986s 986s # If provided, set socket level options before connecting. 986s _set_socket_options(sock, socket_options) 986s 986s if timeout is not _DEFAULT_TIMEOUT: 986s sock.settimeout(timeout) 986s if source_address: 986s sock.bind(source_address) 986s > sock.connect(sa) 986s E ConnectionRefusedError: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 986s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 986s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s redirect = False, assert_same_host = False 986s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 986s release_conn = False, chunked = False, body_pos = None, preload_content = False 986s decode_content = False, response_kw = {} 986s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 986s destination_scheme = None, conn = None, release_this_conn = True 986s http_tunnel_required = False, err = None, clean_exit = False 986s 986s def urlopen( # type: ignore[override] 986s self, 986s method: str, 986s url: str, 986s body: _TYPE_BODY | None = None, 986s headers: typing.Mapping[str, str] | None = None, 986s retries: Retry | bool | int | None = None, 986s redirect: bool = True, 986s assert_same_host: bool = True, 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s pool_timeout: int | None = None, 986s release_conn: bool | None = None, 986s chunked: bool = False, 986s body_pos: _TYPE_BODY_POSITION | None = None, 986s preload_content: bool = True, 986s decode_content: bool = True, 986s **response_kw: typing.Any, 986s ) -> BaseHTTPResponse: 986s """ 986s Get a connection from the pool and perform an HTTP request. This is the 986s lowest level call for making a request, so you'll need to specify all 986s the raw details. 986s 986s .. note:: 986s 986s More commonly, it's appropriate to use a convenience method 986s such as :meth:`request`. 986s 986s .. note:: 986s 986s `release_conn` will only behave as expected if 986s `preload_content=False` because we want to make 986s `preload_content=False` the default behaviour someday soon without 986s breaking backwards compatibility. 986s 986s :param method: 986s HTTP request method (such as GET, POST, PUT, etc.) 986s 986s :param url: 986s The URL to perform the request on. 986s 986s :param body: 986s Data to send in the request body, either :class:`str`, :class:`bytes`, 986s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 986s 986s :param headers: 986s Dictionary of custom headers to send, such as User-Agent, 986s If-None-Match, etc. If None, pool headers are used. If provided, 986s these headers completely replace any pool-specific headers. 986s 986s :param retries: 986s Configure the number of retries to allow before raising a 986s :class:`~urllib3.exceptions.MaxRetryError` exception. 986s 986s Pass ``None`` to retry until you receive a response. Pass a 986s :class:`~urllib3.util.retry.Retry` object for fine-grained control 986s over different types of retries. 986s Pass an integer number to retry connection errors that many times, 986s but no other types of errors. Pass zero to never retry. 986s 986s If ``False``, then retries are disabled and any exception is raised 986s immediately. Also, instead of raising a MaxRetryError on redirects, 986s the redirect response will be returned. 986s 986s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 986s 986s :param redirect: 986s If True, automatically handle redirects (status codes 301, 302, 986s 303, 307, 308). Each redirect counts as a retry. Disabling retries 986s will disable redirect, too. 986s 986s :param assert_same_host: 986s If ``True``, will make sure that the host of the pool requests is 986s consistent else will raise HostChangedError. When ``False``, you can 986s use the pool on an HTTP proxy and request foreign hosts. 986s 986s :param timeout: 986s If specified, overrides the default timeout for this one 986s request. It may be a float (in seconds) or an instance of 986s :class:`urllib3.util.Timeout`. 986s 986s :param pool_timeout: 986s If set and the pool is set to block=True, then this method will 986s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 986s connection is available within the time period. 986s 986s :param bool preload_content: 986s If True, the response's body will be preloaded into memory. 986s 986s :param bool decode_content: 986s If True, will attempt to decode the body based on the 986s 'content-encoding' header. 986s 986s :param release_conn: 986s If False, then the urlopen call will not release the connection 986s back into the pool once a response is received (but will release if 986s you read the entire contents of the response such as when 986s `preload_content=True`). This is useful if you're not preloading 986s the response's content immediately. You will need to call 986s ``r.release_conn()`` on the response ``r`` to return the connection 986s back into the pool. If None, it takes the value of ``preload_content`` 986s which defaults to ``True``. 986s 986s :param bool chunked: 986s If True, urllib3 will send the body using chunked transfer 986s encoding. Otherwise, urllib3 will send the body using the standard 986s content-length form. Defaults to False. 986s 986s :param int body_pos: 986s Position to seek to in file-like body in the event of a retry or 986s redirect. Typically this won't need to be set because urllib3 will 986s auto-populate the value when needed. 986s """ 986s parsed_url = parse_url(url) 986s destination_scheme = parsed_url.scheme 986s 986s if headers is None: 986s headers = self.headers 986s 986s if not isinstance(retries, Retry): 986s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 986s 986s if release_conn is None: 986s release_conn = preload_content 986s 986s # Check host 986s if assert_same_host and not self.is_same_host(url): 986s raise HostChangedError(self, url, retries) 986s 986s # Ensure that the URL we're connecting to is properly encoded 986s if url.startswith("/"): 986s url = to_str(_encode_target(url)) 986s else: 986s url = to_str(parsed_url.url) 986s 986s conn = None 986s 986s # Track whether `conn` needs to be released before 986s # returning/raising/recursing. Update this variable if necessary, and 986s # leave `release_conn` constant throughout the function. That way, if 986s # the function recurses, the original value of `release_conn` will be 986s # passed down into the recursive call, and its value will be respected. 986s # 986s # See issue #651 [1] for details. 986s # 986s # [1] 986s release_this_conn = release_conn 986s 986s http_tunnel_required = connection_requires_http_tunnel( 986s self.proxy, self.proxy_config, destination_scheme 986s ) 986s 986s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 986s # have to copy the headers dict so we can safely change it without those 986s # changes being reflected in anyone else's copy. 986s if not http_tunnel_required: 986s headers = headers.copy() # type: ignore[attr-defined] 986s headers.update(self.proxy_headers) # type: ignore[union-attr] 986s 986s # Must keep the exception bound to a separate variable or else Python 3 986s # complains about UnboundLocalError. 986s err = None 986s 986s # Keep track of whether we cleanly exited the except block. This 986s # ensures we do proper cleanup in finally. 986s clean_exit = False 986s 986s # Rewind body position, if needed. Record current position 986s # for future rewinds in the event of a redirect/retry. 986s body_pos = set_file_position(body, body_pos) 986s 986s try: 986s # Request a connection from the queue. 986s timeout_obj = self._get_timeout(timeout) 986s conn = self._get_conn(timeout=pool_timeout) 986s 986s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 986s 986s # Is this a closed/new connection that requires CONNECT tunnelling? 986s if self.proxy is not None and http_tunnel_required and conn.is_closed: 986s try: 986s self._prepare_proxy(conn) 986s except (BaseSSLError, OSError, SocketTimeout) as e: 986s self._raise_timeout( 986s err=e, url=self.proxy.url, timeout_value=conn.timeout 986s ) 986s raise 986s 986s # If we're going to release the connection in ``finally:``, then 986s # the response doesn't need to know about the connection. Otherwise 986s # it will also try to release it and we'll have a double-release 986s # mess. 986s response_conn = conn if not release_conn else None 986s 986s # Make the request on the HTTPConnection object 986s > response = self._make_request( 986s conn, 986s method, 986s url, 986s timeout=timeout_obj, 986s body=body, 986s headers=headers, 986s chunked=chunked, 986s retries=retries, 986s response_conn=response_conn, 986s preload_content=preload_content, 986s decode_content=decode_content, 986s **response_kw, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 986s raise new_e 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 986s self._validate_conn(conn) 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 986s conn.connect() 986s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 986s self.sock = sock = self._new_conn() 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s except socket.gaierror as e: 986s raise NameResolutionError(self.host, self, e) from e 986s except SocketTimeout as e: 986s raise ConnectTimeoutError( 986s self, 986s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 986s ) from e 986s 986s except OSError as e: 986s > raise NewConnectionError( 986s self, f"Failed to establish a new connection: {e}" 986s ) from e 986s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s > resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:667: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 986s retries = retries.increment( 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 986s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 986s _pool = 986s _stacktrace = 986s 986s def increment( 986s self, 986s method: str | None = None, 986s url: str | None = None, 986s response: BaseHTTPResponse | None = None, 986s error: Exception | None = None, 986s _pool: ConnectionPool | None = None, 986s _stacktrace: TracebackType | None = None, 986s ) -> Retry: 986s """Return a new Retry object with incremented retry counters. 986s 986s :param response: A response object, or None, if the server did not 986s return a response. 986s :type response: :class:`~urllib3.response.BaseHTTPResponse` 986s :param Exception error: An error encountered during the request, or 986s None if the response was received successfully. 986s 986s :return: A new ``Retry`` object. 986s """ 986s if self.total is False and error: 986s # Disabled, indicate to re-raise the error. 986s raise reraise(type(error), error, _stacktrace) 986s 986s total = self.total 986s if total is not None: 986s total -= 1 986s 986s connect = self.connect 986s read = self.read 986s redirect = self.redirect 986s status_count = self.status 986s other = self.other 986s cause = "unknown" 986s status = None 986s redirect_location = None 986s 986s if error and self._is_connection_error(error): 986s # Connect retry? 986s if connect is False: 986s raise reraise(type(error), error, _stacktrace) 986s elif connect is not None: 986s connect -= 1 986s 986s elif error and self._is_read_error(error): 986s # Read retry? 986s if read is False or method is None or not self._is_method_retryable(method): 986s raise reraise(type(error), error, _stacktrace) 986s elif read is not None: 986s read -= 1 986s 986s elif error: 986s # Other retry? 986s if other is not None: 986s other -= 1 986s 986s elif response and response.get_redirect_location(): 986s # Redirect retry? 986s if redirect is not None: 986s redirect -= 1 986s cause = "too many redirects" 986s response_redirect_location = response.get_redirect_location() 986s if response_redirect_location: 986s redirect_location = response_redirect_location 986s status = response.status 986s 986s else: 986s # Incrementing because of a server error like a 500 in 986s # status_forcelist and the given method is in the allowed_methods 986s cause = ResponseError.GENERIC_ERROR 986s if response and response.status: 986s if status_count is not None: 986s status_count -= 1 986s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 986s status = response.status 986s 986s history = self.history + ( 986s RequestHistory(method, url, error, status, redirect_location), 986s ) 986s 986s new_retry = self.new( 986s total=total, 986s connect=connect, 986s read=read, 986s redirect=redirect, 986s status=status_count, 986s other=other, 986s history=history, 986s ) 986s 986s if new_retry.is_exhausted(): 986s reason = error or ResponseError(cause) 986s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 986s 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')) 986s 986s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 986s 986s During handling of the above exception, another exception occurred: 986s 986s make_enc = functools.partial(, 'r50k_base') 986s 986s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 986s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 986s > enc = make_enc() 986s 986s tests/test_encoding.py:96: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 986s enc = Encoding(**constructor()) 986s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 986s mergeable_ranks = load_tiktoken_bpe( 986s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 986s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 986s contents = read_file(blobpath) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 986s resp = requests.get(blobpath) 986s /usr/lib/python3/dist-packages/requests/api.py:73: in get 986s return request("get", url, params=params, **kwargs) 986s /usr/lib/python3/dist-packages/requests/api.py:59: in request 986s return session.request(method=method, url=url, **kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 986s resp = self.send(prep, **send_kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 986s r = adapter.send(request, **kwargs) 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s except (ProtocolError, OSError) as err: 986s raise ConnectionError(err, request=request) 986s 986s except MaxRetryError as e: 986s if isinstance(e.reason, ConnectTimeoutError): 986s # TODO: Remove this in 3.0.0: see #2811 986s if not isinstance(e.reason, NewConnectionError): 986s raise ConnectTimeout(e, request=request) 986s 986s if isinstance(e.reason, ResponseError): 986s raise RetryError(e, request=request) 986s 986s if isinstance(e.reason, _ProxyError): 986s raise ProxyError(e, request=request) 986s 986s if isinstance(e.reason, _SSLError): 986s # This branch is for urllib3 v1.22 and later. 986s raise SSLError(e, request=request) 986s 986s > raise ConnectionError(e, request=request) 986s 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')) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 986s ________________ test_catastrophically_repetitive[cl100k_base] _________________ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s > sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 986s raise err 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 986s source_address = None, socket_options = [(6, 1, 1)] 986s 986s def create_connection( 986s address: tuple[str, int], 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s source_address: tuple[str, int] | None = None, 986s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 986s ) -> socket.socket: 986s """Connect to *address* and return the socket object. 986s 986s Convenience function. Connect to *address* (a 2-tuple ``(host, 986s port)``) and return the socket object. Passing the optional 986s *timeout* parameter will set the timeout on the socket instance 986s before attempting to connect. If no *timeout* is supplied, the 986s global default timeout setting returned by :func:`socket.getdefaulttimeout` 986s is used. If *source_address* is set it must be a tuple of (host, port) 986s for the socket to bind as a source address before making the connection. 986s An host of '' or port 0 tells the OS to use the default. 986s """ 986s 986s host, port = address 986s if host.startswith("["): 986s host = host.strip("[]") 986s err = None 986s 986s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 986s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 986s # The original create_connection function always returns all records. 986s family = allowed_gai_family() 986s 986s try: 986s host.encode("idna") 986s except UnicodeError: 986s raise LocationParseError(f"'{host}', label empty or too long") from None 986s 986s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 986s af, socktype, proto, canonname, sa = res 986s sock = None 986s try: 986s sock = socket.socket(af, socktype, proto) 986s 986s # If provided, set socket level options before connecting. 986s _set_socket_options(sock, socket_options) 986s 986s if timeout is not _DEFAULT_TIMEOUT: 986s sock.settimeout(timeout) 986s if source_address: 986s sock.bind(source_address) 986s > sock.connect(sa) 986s E ConnectionRefusedError: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 986s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 986s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s redirect = False, assert_same_host = False 986s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 986s release_conn = False, chunked = False, body_pos = None, preload_content = False 986s decode_content = False, response_kw = {} 986s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 986s destination_scheme = None, conn = None, release_this_conn = True 986s http_tunnel_required = False, err = None, clean_exit = False 986s 986s def urlopen( # type: ignore[override] 986s self, 986s method: str, 986s url: str, 986s body: _TYPE_BODY | None = None, 986s headers: typing.Mapping[str, str] | None = None, 986s retries: Retry | bool | int | None = None, 986s redirect: bool = True, 986s assert_same_host: bool = True, 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s pool_timeout: int | None = None, 986s release_conn: bool | None = None, 986s chunked: bool = False, 986s body_pos: _TYPE_BODY_POSITION | None = None, 986s preload_content: bool = True, 986s decode_content: bool = True, 986s **response_kw: typing.Any, 986s ) -> BaseHTTPResponse: 986s """ 986s Get a connection from the pool and perform an HTTP request. This is the 986s lowest level call for making a request, so you'll need to specify all 986s the raw details. 986s 986s .. note:: 986s 986s More commonly, it's appropriate to use a convenience method 986s such as :meth:`request`. 986s 986s .. note:: 986s 986s `release_conn` will only behave as expected if 986s `preload_content=False` because we want to make 986s `preload_content=False` the default behaviour someday soon without 986s breaking backwards compatibility. 986s 986s :param method: 986s HTTP request method (such as GET, POST, PUT, etc.) 986s 986s :param url: 986s The URL to perform the request on. 986s 986s :param body: 986s Data to send in the request body, either :class:`str`, :class:`bytes`, 986s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 986s 986s :param headers: 986s Dictionary of custom headers to send, such as User-Agent, 986s If-None-Match, etc. If None, pool headers are used. If provided, 986s these headers completely replace any pool-specific headers. 986s 986s :param retries: 986s Configure the number of retries to allow before raising a 986s :class:`~urllib3.exceptions.MaxRetryError` exception. 986s 986s Pass ``None`` to retry until you receive a response. Pass a 986s :class:`~urllib3.util.retry.Retry` object for fine-grained control 986s over different types of retries. 986s Pass an integer number to retry connection errors that many times, 986s but no other types of errors. Pass zero to never retry. 986s 986s If ``False``, then retries are disabled and any exception is raised 986s immediately. Also, instead of raising a MaxRetryError on redirects, 986s the redirect response will be returned. 986s 986s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 986s 986s :param redirect: 986s If True, automatically handle redirects (status codes 301, 302, 986s 303, 307, 308). Each redirect counts as a retry. Disabling retries 986s will disable redirect, too. 986s 986s :param assert_same_host: 986s If ``True``, will make sure that the host of the pool requests is 986s consistent else will raise HostChangedError. When ``False``, you can 986s use the pool on an HTTP proxy and request foreign hosts. 986s 986s :param timeout: 986s If specified, overrides the default timeout for this one 986s request. It may be a float (in seconds) or an instance of 986s :class:`urllib3.util.Timeout`. 986s 986s :param pool_timeout: 986s If set and the pool is set to block=True, then this method will 986s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 986s connection is available within the time period. 986s 986s :param bool preload_content: 986s If True, the response's body will be preloaded into memory. 986s 986s :param bool decode_content: 986s If True, will attempt to decode the body based on the 986s 'content-encoding' header. 986s 986s :param release_conn: 986s If False, then the urlopen call will not release the connection 986s back into the pool once a response is received (but will release if 986s you read the entire contents of the response such as when 986s `preload_content=True`). This is useful if you're not preloading 986s the response's content immediately. You will need to call 986s ``r.release_conn()`` on the response ``r`` to return the connection 986s back into the pool. If None, it takes the value of ``preload_content`` 986s which defaults to ``True``. 986s 986s :param bool chunked: 986s If True, urllib3 will send the body using chunked transfer 986s encoding. Otherwise, urllib3 will send the body using the standard 986s content-length form. Defaults to False. 986s 986s :param int body_pos: 986s Position to seek to in file-like body in the event of a retry or 986s redirect. Typically this won't need to be set because urllib3 will 986s auto-populate the value when needed. 986s """ 986s parsed_url = parse_url(url) 986s destination_scheme = parsed_url.scheme 986s 986s if headers is None: 986s headers = self.headers 986s 986s if not isinstance(retries, Retry): 986s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 986s 986s if release_conn is None: 986s release_conn = preload_content 986s 986s # Check host 986s if assert_same_host and not self.is_same_host(url): 986s raise HostChangedError(self, url, retries) 986s 986s # Ensure that the URL we're connecting to is properly encoded 986s if url.startswith("/"): 986s url = to_str(_encode_target(url)) 986s else: 986s url = to_str(parsed_url.url) 986s 986s conn = None 986s 986s # Track whether `conn` needs to be released before 986s # returning/raising/recursing. Update this variable if necessary, and 986s # leave `release_conn` constant throughout the function. That way, if 986s # the function recurses, the original value of `release_conn` will be 986s # passed down into the recursive call, and its value will be respected. 986s # 986s # See issue #651 [1] for details. 986s # 986s # [1] 986s release_this_conn = release_conn 986s 986s http_tunnel_required = connection_requires_http_tunnel( 986s self.proxy, self.proxy_config, destination_scheme 986s ) 986s 986s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 986s # have to copy the headers dict so we can safely change it without those 986s # changes being reflected in anyone else's copy. 986s if not http_tunnel_required: 986s headers = headers.copy() # type: ignore[attr-defined] 986s headers.update(self.proxy_headers) # type: ignore[union-attr] 986s 986s # Must keep the exception bound to a separate variable or else Python 3 986s # complains about UnboundLocalError. 986s err = None 986s 986s # Keep track of whether we cleanly exited the except block. This 986s # ensures we do proper cleanup in finally. 986s clean_exit = False 986s 986s # Rewind body position, if needed. Record current position 986s # for future rewinds in the event of a redirect/retry. 986s body_pos = set_file_position(body, body_pos) 986s 986s try: 986s # Request a connection from the queue. 986s timeout_obj = self._get_timeout(timeout) 986s conn = self._get_conn(timeout=pool_timeout) 986s 986s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 986s 986s # Is this a closed/new connection that requires CONNECT tunnelling? 986s if self.proxy is not None and http_tunnel_required and conn.is_closed: 986s try: 986s self._prepare_proxy(conn) 986s except (BaseSSLError, OSError, SocketTimeout) as e: 986s self._raise_timeout( 986s err=e, url=self.proxy.url, timeout_value=conn.timeout 986s ) 986s raise 986s 986s # If we're going to release the connection in ``finally:``, then 986s # the response doesn't need to know about the connection. Otherwise 986s # it will also try to release it and we'll have a double-release 986s # mess. 986s response_conn = conn if not release_conn else None 986s 986s # Make the request on the HTTPConnection object 986s > response = self._make_request( 986s conn, 986s method, 986s url, 986s timeout=timeout_obj, 986s body=body, 986s headers=headers, 986s chunked=chunked, 986s retries=retries, 986s response_conn=response_conn, 986s preload_content=preload_content, 986s decode_content=decode_content, 986s **response_kw, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 986s raise new_e 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 986s self._validate_conn(conn) 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 986s conn.connect() 986s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 986s self.sock = sock = self._new_conn() 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s except socket.gaierror as e: 986s raise NameResolutionError(self.host, self, e) from e 986s except SocketTimeout as e: 986s raise ConnectTimeoutError( 986s self, 986s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 986s ) from e 986s 986s except OSError as e: 986s > raise NewConnectionError( 986s self, f"Failed to establish a new connection: {e}" 986s ) from e 986s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s > resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:667: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 986s retries = retries.increment( 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 986s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 986s _pool = 986s _stacktrace = 986s 986s def increment( 986s self, 986s method: str | None = None, 986s url: str | None = None, 986s response: BaseHTTPResponse | None = None, 986s error: Exception | None = None, 986s _pool: ConnectionPool | None = None, 986s _stacktrace: TracebackType | None = None, 986s ) -> Retry: 986s """Return a new Retry object with incremented retry counters. 986s 986s :param response: A response object, or None, if the server did not 986s return a response. 986s :type response: :class:`~urllib3.response.BaseHTTPResponse` 986s :param Exception error: An error encountered during the request, or 986s None if the response was received successfully. 986s 986s :return: A new ``Retry`` object. 986s """ 986s if self.total is False and error: 986s # Disabled, indicate to re-raise the error. 986s raise reraise(type(error), error, _stacktrace) 986s 986s total = self.total 986s if total is not None: 986s total -= 1 986s 986s connect = self.connect 986s read = self.read 986s redirect = self.redirect 986s status_count = self.status 986s other = self.other 986s cause = "unknown" 986s status = None 986s redirect_location = None 986s 986s if error and self._is_connection_error(error): 986s # Connect retry? 986s if connect is False: 986s raise reraise(type(error), error, _stacktrace) 986s elif connect is not None: 986s connect -= 1 986s 986s elif error and self._is_read_error(error): 986s # Read retry? 986s if read is False or method is None or not self._is_method_retryable(method): 986s raise reraise(type(error), error, _stacktrace) 986s elif read is not None: 986s read -= 1 986s 986s elif error: 986s # Other retry? 986s if other is not None: 986s other -= 1 986s 986s elif response and response.get_redirect_location(): 986s # Redirect retry? 986s if redirect is not None: 986s redirect -= 1 986s cause = "too many redirects" 986s response_redirect_location = response.get_redirect_location() 986s if response_redirect_location: 986s redirect_location = response_redirect_location 986s status = response.status 986s 986s else: 986s # Incrementing because of a server error like a 500 in 986s # status_forcelist and the given method is in the allowed_methods 986s cause = ResponseError.GENERIC_ERROR 986s if response and response.status: 986s if status_count is not None: 986s status_count -= 1 986s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 986s status = response.status 986s 986s history = self.history + ( 986s RequestHistory(method, url, error, status, redirect_location), 986s ) 986s 986s new_retry = self.new( 986s total=total, 986s connect=connect, 986s read=read, 986s redirect=redirect, 986s status=status_count, 986s other=other, 986s history=history, 986s ) 986s 986s if new_retry.is_exhausted(): 986s reason = error or ResponseError(cause) 986s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 986s 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')) 986s 986s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 986s 986s During handling of the above exception, another exception occurred: 986s 986s make_enc = functools.partial(, 'cl100k_base') 986s 986s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 986s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 986s > enc = make_enc() 986s 986s tests/test_encoding.py:96: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 986s enc = Encoding(**constructor()) 986s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 986s mergeable_ranks = load_tiktoken_bpe( 986s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 986s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 986s contents = read_file(blobpath) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 986s resp = requests.get(blobpath) 986s /usr/lib/python3/dist-packages/requests/api.py:73: in get 986s return request("get", url, params=params, **kwargs) 986s /usr/lib/python3/dist-packages/requests/api.py:59: in request 986s return session.request(method=method, url=url, **kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 986s resp = self.send(prep, **send_kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 986s r = adapter.send(request, **kwargs) 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s except (ProtocolError, OSError) as err: 986s raise ConnectionError(err, request=request) 986s 986s except MaxRetryError as e: 986s if isinstance(e.reason, ConnectTimeoutError): 986s # TODO: Remove this in 3.0.0: see #2811 986s if not isinstance(e.reason, NewConnectionError): 986s raise ConnectTimeout(e, request=request) 986s 986s if isinstance(e.reason, ResponseError): 986s raise RetryError(e, request=request) 986s 986s if isinstance(e.reason, _ProxyError): 986s raise ProxyError(e, request=request) 986s 986s if isinstance(e.reason, _SSLError): 986s # This branch is for urllib3 v1.22 and later. 986s raise SSLError(e, request=request) 986s 986s > raise ConnectionError(e, request=request) 986s 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')) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 986s _______________________ test_basic_roundtrip[r50k_base] ________________________ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s > sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 986s raise err 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 986s source_address = None, socket_options = [(6, 1, 1)] 986s 986s def create_connection( 986s address: tuple[str, int], 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s source_address: tuple[str, int] | None = None, 986s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 986s ) -> socket.socket: 986s """Connect to *address* and return the socket object. 986s 986s Convenience function. Connect to *address* (a 2-tuple ``(host, 986s port)``) and return the socket object. Passing the optional 986s *timeout* parameter will set the timeout on the socket instance 986s before attempting to connect. If no *timeout* is supplied, the 986s global default timeout setting returned by :func:`socket.getdefaulttimeout` 986s is used. If *source_address* is set it must be a tuple of (host, port) 986s for the socket to bind as a source address before making the connection. 986s An host of '' or port 0 tells the OS to use the default. 986s """ 986s 986s host, port = address 986s if host.startswith("["): 986s host = host.strip("[]") 986s err = None 986s 986s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 986s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 986s # The original create_connection function always returns all records. 986s family = allowed_gai_family() 986s 986s try: 986s host.encode("idna") 986s except UnicodeError: 986s raise LocationParseError(f"'{host}', label empty or too long") from None 986s 986s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 986s af, socktype, proto, canonname, sa = res 986s sock = None 986s try: 986s sock = socket.socket(af, socktype, proto) 986s 986s # If provided, set socket level options before connecting. 986s _set_socket_options(sock, socket_options) 986s 986s if timeout is not _DEFAULT_TIMEOUT: 986s sock.settimeout(timeout) 986s if source_address: 986s sock.bind(source_address) 986s > sock.connect(sa) 986s E ConnectionRefusedError: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 986s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 986s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s redirect = False, assert_same_host = False 986s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 986s release_conn = False, chunked = False, body_pos = None, preload_content = False 986s decode_content = False, response_kw = {} 986s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 986s destination_scheme = None, conn = None, release_this_conn = True 986s http_tunnel_required = False, err = None, clean_exit = False 986s 986s def urlopen( # type: ignore[override] 986s self, 986s method: str, 986s url: str, 986s body: _TYPE_BODY | None = None, 986s headers: typing.Mapping[str, str] | None = None, 986s retries: Retry | bool | int | None = None, 986s redirect: bool = True, 986s assert_same_host: bool = True, 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s pool_timeout: int | None = None, 986s release_conn: bool | None = None, 986s chunked: bool = False, 986s body_pos: _TYPE_BODY_POSITION | None = None, 986s preload_content: bool = True, 986s decode_content: bool = True, 986s **response_kw: typing.Any, 986s ) -> BaseHTTPResponse: 986s """ 986s Get a connection from the pool and perform an HTTP request. This is the 986s lowest level call for making a request, so you'll need to specify all 986s the raw details. 986s 986s .. note:: 986s 986s More commonly, it's appropriate to use a convenience method 986s such as :meth:`request`. 986s 986s .. note:: 986s 986s `release_conn` will only behave as expected if 986s `preload_content=False` because we want to make 986s `preload_content=False` the default behaviour someday soon without 986s breaking backwards compatibility. 986s 986s :param method: 986s HTTP request method (such as GET, POST, PUT, etc.) 986s 986s :param url: 986s The URL to perform the request on. 986s 986s :param body: 986s Data to send in the request body, either :class:`str`, :class:`bytes`, 986s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 986s 986s :param headers: 986s Dictionary of custom headers to send, such as User-Agent, 986s If-None-Match, etc. If None, pool headers are used. If provided, 986s these headers completely replace any pool-specific headers. 986s 986s :param retries: 986s Configure the number of retries to allow before raising a 986s :class:`~urllib3.exceptions.MaxRetryError` exception. 986s 986s Pass ``None`` to retry until you receive a response. Pass a 986s :class:`~urllib3.util.retry.Retry` object for fine-grained control 986s over different types of retries. 986s Pass an integer number to retry connection errors that many times, 986s but no other types of errors. Pass zero to never retry. 986s 986s If ``False``, then retries are disabled and any exception is raised 986s immediately. Also, instead of raising a MaxRetryError on redirects, 986s the redirect response will be returned. 986s 986s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 986s 986s :param redirect: 986s If True, automatically handle redirects (status codes 301, 302, 986s 303, 307, 308). Each redirect counts as a retry. Disabling retries 986s will disable redirect, too. 986s 986s :param assert_same_host: 986s If ``True``, will make sure that the host of the pool requests is 986s consistent else will raise HostChangedError. When ``False``, you can 986s use the pool on an HTTP proxy and request foreign hosts. 986s 986s :param timeout: 986s If specified, overrides the default timeout for this one 986s request. It may be a float (in seconds) or an instance of 986s :class:`urllib3.util.Timeout`. 986s 986s :param pool_timeout: 986s If set and the pool is set to block=True, then this method will 986s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 986s connection is available within the time period. 986s 986s :param bool preload_content: 986s If True, the response's body will be preloaded into memory. 986s 986s :param bool decode_content: 986s If True, will attempt to decode the body based on the 986s 'content-encoding' header. 986s 986s :param release_conn: 986s If False, then the urlopen call will not release the connection 986s back into the pool once a response is received (but will release if 986s you read the entire contents of the response such as when 986s `preload_content=True`). This is useful if you're not preloading 986s the response's content immediately. You will need to call 986s ``r.release_conn()`` on the response ``r`` to return the connection 986s back into the pool. If None, it takes the value of ``preload_content`` 986s which defaults to ``True``. 986s 986s :param bool chunked: 986s If True, urllib3 will send the body using chunked transfer 986s encoding. Otherwise, urllib3 will send the body using the standard 986s content-length form. Defaults to False. 986s 986s :param int body_pos: 986s Position to seek to in file-like body in the event of a retry or 986s redirect. Typically this won't need to be set because urllib3 will 986s auto-populate the value when needed. 986s """ 986s parsed_url = parse_url(url) 986s destination_scheme = parsed_url.scheme 986s 986s if headers is None: 986s headers = self.headers 986s 986s if not isinstance(retries, Retry): 986s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 986s 986s if release_conn is None: 986s release_conn = preload_content 986s 986s # Check host 986s if assert_same_host and not self.is_same_host(url): 986s raise HostChangedError(self, url, retries) 986s 986s # Ensure that the URL we're connecting to is properly encoded 986s if url.startswith("/"): 986s url = to_str(_encode_target(url)) 986s else: 986s url = to_str(parsed_url.url) 986s 986s conn = None 986s 986s # Track whether `conn` needs to be released before 986s # returning/raising/recursing. Update this variable if necessary, and 986s # leave `release_conn` constant throughout the function. That way, if 986s # the function recurses, the original value of `release_conn` will be 986s # passed down into the recursive call, and its value will be respected. 986s # 986s # See issue #651 [1] for details. 986s # 986s # [1] 986s release_this_conn = release_conn 986s 986s http_tunnel_required = connection_requires_http_tunnel( 986s self.proxy, self.proxy_config, destination_scheme 986s ) 986s 986s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 986s # have to copy the headers dict so we can safely change it without those 986s # changes being reflected in anyone else's copy. 986s if not http_tunnel_required: 986s headers = headers.copy() # type: ignore[attr-defined] 986s headers.update(self.proxy_headers) # type: ignore[union-attr] 986s 986s # Must keep the exception bound to a separate variable or else Python 3 986s # complains about UnboundLocalError. 986s err = None 986s 986s # Keep track of whether we cleanly exited the except block. This 986s # ensures we do proper cleanup in finally. 986s clean_exit = False 986s 986s # Rewind body position, if needed. Record current position 986s # for future rewinds in the event of a redirect/retry. 986s body_pos = set_file_position(body, body_pos) 986s 986s try: 986s # Request a connection from the queue. 986s timeout_obj = self._get_timeout(timeout) 986s conn = self._get_conn(timeout=pool_timeout) 986s 986s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 986s 986s # Is this a closed/new connection that requires CONNECT tunnelling? 986s if self.proxy is not None and http_tunnel_required and conn.is_closed: 986s try: 986s self._prepare_proxy(conn) 986s except (BaseSSLError, OSError, SocketTimeout) as e: 986s self._raise_timeout( 986s err=e, url=self.proxy.url, timeout_value=conn.timeout 986s ) 986s raise 986s 986s # If we're going to release the connection in ``finally:``, then 986s # the response doesn't need to know about the connection. Otherwise 986s # it will also try to release it and we'll have a double-release 986s # mess. 986s response_conn = conn if not release_conn else None 986s 986s # Make the request on the HTTPConnection object 986s > response = self._make_request( 986s conn, 986s method, 986s url, 986s timeout=timeout_obj, 986s body=body, 986s headers=headers, 986s chunked=chunked, 986s retries=retries, 986s response_conn=response_conn, 986s preload_content=preload_content, 986s decode_content=decode_content, 986s **response_kw, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 986s raise new_e 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 986s self._validate_conn(conn) 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 986s conn.connect() 986s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 986s self.sock = sock = self._new_conn() 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s except socket.gaierror as e: 986s raise NameResolutionError(self.host, self, e) from e 986s except SocketTimeout as e: 986s raise ConnectTimeoutError( 986s self, 986s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 986s ) from e 986s 986s except OSError as e: 986s > raise NewConnectionError( 986s self, f"Failed to establish a new connection: {e}" 986s ) from e 986s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s > resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:667: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 986s retries = retries.increment( 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 986s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 986s _pool = 986s _stacktrace = 986s 986s def increment( 986s self, 986s method: str | None = None, 986s url: str | None = None, 986s response: BaseHTTPResponse | None = None, 986s error: Exception | None = None, 986s _pool: ConnectionPool | None = None, 986s _stacktrace: TracebackType | None = None, 986s ) -> Retry: 986s """Return a new Retry object with incremented retry counters. 986s 986s :param response: A response object, or None, if the server did not 986s return a response. 986s :type response: :class:`~urllib3.response.BaseHTTPResponse` 986s :param Exception error: An error encountered during the request, or 986s None if the response was received successfully. 986s 986s :return: A new ``Retry`` object. 986s """ 986s if self.total is False and error: 986s # Disabled, indicate to re-raise the error. 986s raise reraise(type(error), error, _stacktrace) 986s 986s total = self.total 986s if total is not None: 986s total -= 1 986s 986s connect = self.connect 986s read = self.read 986s redirect = self.redirect 986s status_count = self.status 986s other = self.other 986s cause = "unknown" 986s status = None 986s redirect_location = None 986s 986s if error and self._is_connection_error(error): 986s # Connect retry? 986s if connect is False: 986s raise reraise(type(error), error, _stacktrace) 986s elif connect is not None: 986s connect -= 1 986s 986s elif error and self._is_read_error(error): 986s # Read retry? 986s if read is False or method is None or not self._is_method_retryable(method): 986s raise reraise(type(error), error, _stacktrace) 986s elif read is not None: 986s read -= 1 986s 986s elif error: 986s # Other retry? 986s if other is not None: 986s other -= 1 986s 986s elif response and response.get_redirect_location(): 986s # Redirect retry? 986s if redirect is not None: 986s redirect -= 1 986s cause = "too many redirects" 986s response_redirect_location = response.get_redirect_location() 986s if response_redirect_location: 986s redirect_location = response_redirect_location 986s status = response.status 986s 986s else: 986s # Incrementing because of a server error like a 500 in 986s # status_forcelist and the given method is in the allowed_methods 986s cause = ResponseError.GENERIC_ERROR 986s if response and response.status: 986s if status_count is not None: 986s status_count -= 1 986s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 986s status = response.status 986s 986s history = self.history + ( 986s RequestHistory(method, url, error, status, redirect_location), 986s ) 986s 986s new_retry = self.new( 986s total=total, 986s connect=connect, 986s read=read, 986s redirect=redirect, 986s status=status_count, 986s other=other, 986s history=history, 986s ) 986s 986s if new_retry.is_exhausted(): 986s reason = error or ResponseError(cause) 986s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 986s 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')) 986s 986s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 986s 986s During handling of the above exception, another exception occurred: 986s 986s make_enc = functools.partial(, 'r50k_base') 986s 986s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 986s def test_basic_roundtrip(make_enc): 986s > enc = make_enc() 986s 986s tests/test_encoding.py:115: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 986s enc = Encoding(**constructor()) 986s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 986s mergeable_ranks = load_tiktoken_bpe( 986s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 986s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 986s contents = read_file(blobpath) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 986s resp = requests.get(blobpath) 986s /usr/lib/python3/dist-packages/requests/api.py:73: in get 986s return request("get", url, params=params, **kwargs) 986s /usr/lib/python3/dist-packages/requests/api.py:59: in request 986s return session.request(method=method, url=url, **kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 986s resp = self.send(prep, **send_kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 986s r = adapter.send(request, **kwargs) 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s except (ProtocolError, OSError) as err: 986s raise ConnectionError(err, request=request) 986s 986s except MaxRetryError as e: 986s if isinstance(e.reason, ConnectTimeoutError): 986s # TODO: Remove this in 3.0.0: see #2811 986s if not isinstance(e.reason, NewConnectionError): 986s raise ConnectTimeout(e, request=request) 986s 986s if isinstance(e.reason, ResponseError): 986s raise RetryError(e, request=request) 986s 986s if isinstance(e.reason, _ProxyError): 986s raise ProxyError(e, request=request) 986s 986s if isinstance(e.reason, _SSLError): 986s # This branch is for urllib3 v1.22 and later. 986s raise SSLError(e, request=request) 986s 986s > raise ConnectionError(e, request=request) 986s 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')) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 986s ______________________ test_basic_roundtrip[cl100k_base] _______________________ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s > sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 986s raise err 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 986s source_address = None, socket_options = [(6, 1, 1)] 986s 986s def create_connection( 986s address: tuple[str, int], 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s source_address: tuple[str, int] | None = None, 986s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 986s ) -> socket.socket: 986s """Connect to *address* and return the socket object. 986s 986s Convenience function. Connect to *address* (a 2-tuple ``(host, 986s port)``) and return the socket object. Passing the optional 986s *timeout* parameter will set the timeout on the socket instance 986s before attempting to connect. If no *timeout* is supplied, the 986s global default timeout setting returned by :func:`socket.getdefaulttimeout` 986s is used. If *source_address* is set it must be a tuple of (host, port) 986s for the socket to bind as a source address before making the connection. 986s An host of '' or port 0 tells the OS to use the default. 986s """ 986s 986s host, port = address 986s if host.startswith("["): 986s host = host.strip("[]") 986s err = None 986s 986s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 986s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 986s # The original create_connection function always returns all records. 986s family = allowed_gai_family() 986s 986s try: 986s host.encode("idna") 986s except UnicodeError: 986s raise LocationParseError(f"'{host}', label empty or too long") from None 986s 986s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 986s af, socktype, proto, canonname, sa = res 986s sock = None 986s try: 986s sock = socket.socket(af, socktype, proto) 986s 986s # If provided, set socket level options before connecting. 986s _set_socket_options(sock, socket_options) 986s 986s if timeout is not _DEFAULT_TIMEOUT: 986s sock.settimeout(timeout) 986s if source_address: 986s sock.bind(source_address) 986s > sock.connect(sa) 986s E ConnectionRefusedError: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 986s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 986s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s redirect = False, assert_same_host = False 986s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 986s release_conn = False, chunked = False, body_pos = None, preload_content = False 986s decode_content = False, response_kw = {} 986s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 986s destination_scheme = None, conn = None, release_this_conn = True 986s http_tunnel_required = False, err = None, clean_exit = False 986s 986s def urlopen( # type: ignore[override] 986s self, 986s method: str, 986s url: str, 986s body: _TYPE_BODY | None = None, 986s headers: typing.Mapping[str, str] | None = None, 986s retries: Retry | bool | int | None = None, 986s redirect: bool = True, 986s assert_same_host: bool = True, 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s pool_timeout: int | None = None, 986s release_conn: bool | None = None, 986s chunked: bool = False, 986s body_pos: _TYPE_BODY_POSITION | None = None, 986s preload_content: bool = True, 986s decode_content: bool = True, 986s **response_kw: typing.Any, 986s ) -> BaseHTTPResponse: 986s """ 986s Get a connection from the pool and perform an HTTP request. This is the 986s lowest level call for making a request, so you'll need to specify all 986s the raw details. 986s 986s .. note:: 986s 986s More commonly, it's appropriate to use a convenience method 986s such as :meth:`request`. 986s 986s .. note:: 986s 986s `release_conn` will only behave as expected if 986s `preload_content=False` because we want to make 986s `preload_content=False` the default behaviour someday soon without 986s breaking backwards compatibility. 986s 986s :param method: 986s HTTP request method (such as GET, POST, PUT, etc.) 986s 986s :param url: 986s The URL to perform the request on. 986s 986s :param body: 986s Data to send in the request body, either :class:`str`, :class:`bytes`, 986s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 986s 986s :param headers: 986s Dictionary of custom headers to send, such as User-Agent, 986s If-None-Match, etc. If None, pool headers are used. If provided, 986s these headers completely replace any pool-specific headers. 986s 986s :param retries: 986s Configure the number of retries to allow before raising a 986s :class:`~urllib3.exceptions.MaxRetryError` exception. 986s 986s Pass ``None`` to retry until you receive a response. Pass a 986s :class:`~urllib3.util.retry.Retry` object for fine-grained control 986s over different types of retries. 986s Pass an integer number to retry connection errors that many times, 986s but no other types of errors. Pass zero to never retry. 986s 986s If ``False``, then retries are disabled and any exception is raised 986s immediately. Also, instead of raising a MaxRetryError on redirects, 986s the redirect response will be returned. 986s 986s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 986s 986s :param redirect: 986s If True, automatically handle redirects (status codes 301, 302, 986s 303, 307, 308). Each redirect counts as a retry. Disabling retries 986s will disable redirect, too. 986s 986s :param assert_same_host: 986s If ``True``, will make sure that the host of the pool requests is 986s consistent else will raise HostChangedError. When ``False``, you can 986s use the pool on an HTTP proxy and request foreign hosts. 986s 986s :param timeout: 986s If specified, overrides the default timeout for this one 986s request. It may be a float (in seconds) or an instance of 986s :class:`urllib3.util.Timeout`. 986s 986s :param pool_timeout: 986s If set and the pool is set to block=True, then this method will 986s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 986s connection is available within the time period. 986s 986s :param bool preload_content: 986s If True, the response's body will be preloaded into memory. 986s 986s :param bool decode_content: 986s If True, will attempt to decode the body based on the 986s 'content-encoding' header. 986s 986s :param release_conn: 986s If False, then the urlopen call will not release the connection 986s back into the pool once a response is received (but will release if 986s you read the entire contents of the response such as when 986s `preload_content=True`). This is useful if you're not preloading 986s the response's content immediately. You will need to call 986s ``r.release_conn()`` on the response ``r`` to return the connection 986s back into the pool. If None, it takes the value of ``preload_content`` 986s which defaults to ``True``. 986s 986s :param bool chunked: 986s If True, urllib3 will send the body using chunked transfer 986s encoding. Otherwise, urllib3 will send the body using the standard 986s content-length form. Defaults to False. 986s 986s :param int body_pos: 986s Position to seek to in file-like body in the event of a retry or 986s redirect. Typically this won't need to be set because urllib3 will 986s auto-populate the value when needed. 986s """ 986s parsed_url = parse_url(url) 986s destination_scheme = parsed_url.scheme 986s 986s if headers is None: 986s headers = self.headers 986s 986s if not isinstance(retries, Retry): 986s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 986s 986s if release_conn is None: 986s release_conn = preload_content 986s 986s # Check host 986s if assert_same_host and not self.is_same_host(url): 986s raise HostChangedError(self, url, retries) 986s 986s # Ensure that the URL we're connecting to is properly encoded 986s if url.startswith("/"): 986s url = to_str(_encode_target(url)) 986s else: 986s url = to_str(parsed_url.url) 986s 986s conn = None 986s 986s # Track whether `conn` needs to be released before 986s # returning/raising/recursing. Update this variable if necessary, and 986s # leave `release_conn` constant throughout the function. That way, if 986s # the function recurses, the original value of `release_conn` will be 986s # passed down into the recursive call, and its value will be respected. 986s # 986s # See issue #651 [1] for details. 986s # 986s # [1] 986s release_this_conn = release_conn 986s 986s http_tunnel_required = connection_requires_http_tunnel( 986s self.proxy, self.proxy_config, destination_scheme 986s ) 986s 986s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 986s # have to copy the headers dict so we can safely change it without those 986s # changes being reflected in anyone else's copy. 986s if not http_tunnel_required: 986s headers = headers.copy() # type: ignore[attr-defined] 986s headers.update(self.proxy_headers) # type: ignore[union-attr] 986s 986s # Must keep the exception bound to a separate variable or else Python 3 986s # complains about UnboundLocalError. 986s err = None 986s 986s # Keep track of whether we cleanly exited the except block. This 986s # ensures we do proper cleanup in finally. 986s clean_exit = False 986s 986s # Rewind body position, if needed. Record current position 986s # for future rewinds in the event of a redirect/retry. 986s body_pos = set_file_position(body, body_pos) 986s 986s try: 986s # Request a connection from the queue. 986s timeout_obj = self._get_timeout(timeout) 986s conn = self._get_conn(timeout=pool_timeout) 986s 986s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 986s 986s # Is this a closed/new connection that requires CONNECT tunnelling? 986s if self.proxy is not None and http_tunnel_required and conn.is_closed: 986s try: 986s self._prepare_proxy(conn) 986s except (BaseSSLError, OSError, SocketTimeout) as e: 986s self._raise_timeout( 986s err=e, url=self.proxy.url, timeout_value=conn.timeout 986s ) 986s raise 986s 986s # If we're going to release the connection in ``finally:``, then 986s # the response doesn't need to know about the connection. Otherwise 986s # it will also try to release it and we'll have a double-release 986s # mess. 986s response_conn = conn if not release_conn else None 986s 986s # Make the request on the HTTPConnection object 986s > response = self._make_request( 986s conn, 986s method, 986s url, 986s timeout=timeout_obj, 986s body=body, 986s headers=headers, 986s chunked=chunked, 986s retries=retries, 986s response_conn=response_conn, 986s preload_content=preload_content, 986s decode_content=decode_content, 986s **response_kw, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 986s raise new_e 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 986s self._validate_conn(conn) 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 986s conn.connect() 986s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 986s self.sock = sock = self._new_conn() 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s except socket.gaierror as e: 986s raise NameResolutionError(self.host, self, e) from e 986s except SocketTimeout as e: 986s raise ConnectTimeoutError( 986s self, 986s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 986s ) from e 986s 986s except OSError as e: 986s > raise NewConnectionError( 986s self, f"Failed to establish a new connection: {e}" 986s ) from e 986s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s > resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:667: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 986s retries = retries.increment( 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 986s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 986s _pool = 986s _stacktrace = 986s 986s def increment( 986s self, 986s method: str | None = None, 986s url: str | None = None, 986s response: BaseHTTPResponse | None = None, 986s error: Exception | None = None, 986s _pool: ConnectionPool | None = None, 986s _stacktrace: TracebackType | None = None, 986s ) -> Retry: 986s """Return a new Retry object with incremented retry counters. 986s 986s :param response: A response object, or None, if the server did not 986s return a response. 986s :type response: :class:`~urllib3.response.BaseHTTPResponse` 986s :param Exception error: An error encountered during the request, or 986s None if the response was received successfully. 986s 986s :return: A new ``Retry`` object. 986s """ 986s if self.total is False and error: 986s # Disabled, indicate to re-raise the error. 986s raise reraise(type(error), error, _stacktrace) 986s 986s total = self.total 986s if total is not None: 986s total -= 1 986s 986s connect = self.connect 986s read = self.read 986s redirect = self.redirect 986s status_count = self.status 986s other = self.other 986s cause = "unknown" 986s status = None 986s redirect_location = None 986s 986s if error and self._is_connection_error(error): 986s # Connect retry? 986s if connect is False: 986s raise reraise(type(error), error, _stacktrace) 986s elif connect is not None: 986s connect -= 1 986s 986s elif error and self._is_read_error(error): 986s # Read retry? 986s if read is False or method is None or not self._is_method_retryable(method): 986s raise reraise(type(error), error, _stacktrace) 986s elif read is not None: 986s read -= 1 986s 986s elif error: 986s # Other retry? 986s if other is not None: 986s other -= 1 986s 986s elif response and response.get_redirect_location(): 986s # Redirect retry? 986s if redirect is not None: 986s redirect -= 1 986s cause = "too many redirects" 986s response_redirect_location = response.get_redirect_location() 986s if response_redirect_location: 986s redirect_location = response_redirect_location 986s status = response.status 986s 986s else: 986s # Incrementing because of a server error like a 500 in 986s # status_forcelist and the given method is in the allowed_methods 986s cause = ResponseError.GENERIC_ERROR 986s if response and response.status: 986s if status_count is not None: 986s status_count -= 1 986s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 986s status = response.status 986s 986s history = self.history + ( 986s RequestHistory(method, url, error, status, redirect_location), 986s ) 986s 986s new_retry = self.new( 986s total=total, 986s connect=connect, 986s read=read, 986s redirect=redirect, 986s status=status_count, 986s other=other, 986s history=history, 986s ) 986s 986s if new_retry.is_exhausted(): 986s reason = error or ResponseError(cause) 986s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 986s 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')) 986s 986s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 986s 986s During handling of the above exception, another exception occurred: 986s 986s make_enc = functools.partial(, 'cl100k_base') 986s 986s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 986s def test_basic_roundtrip(make_enc): 986s > enc = make_enc() 986s 986s tests/test_encoding.py:115: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 986s enc = Encoding(**constructor()) 986s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 986s mergeable_ranks = load_tiktoken_bpe( 986s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 986s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 986s contents = read_file(blobpath) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 986s resp = requests.get(blobpath) 986s /usr/lib/python3/dist-packages/requests/api.py:73: in get 986s return request("get", url, params=params, **kwargs) 986s /usr/lib/python3/dist-packages/requests/api.py:59: in request 986s return session.request(method=method, url=url, **kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 986s resp = self.send(prep, **send_kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 986s r = adapter.send(request, **kwargs) 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s except (ProtocolError, OSError) as err: 986s raise ConnectionError(err, request=request) 986s 986s except MaxRetryError as e: 986s if isinstance(e.reason, ConnectTimeoutError): 986s # TODO: Remove this in 3.0.0: see #2811 986s if not isinstance(e.reason, NewConnectionError): 986s raise ConnectTimeout(e, request=request) 986s 986s if isinstance(e.reason, ResponseError): 986s raise RetryError(e, request=request) 986s 986s if isinstance(e.reason, _ProxyError): 986s raise ProxyError(e, request=request) 986s 986s if isinstance(e.reason, _SSLError): 986s # This branch is for urllib3 v1.22 and later. 986s raise SSLError(e, request=request) 986s 986s > raise ConnectionError(e, request=request) 986s 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')) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 986s ________________________ test_hyp_roundtrip[r50k_base] _________________________ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s > sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 986s raise err 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 986s source_address = None, socket_options = [(6, 1, 1)] 986s 986s def create_connection( 986s address: tuple[str, int], 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s source_address: tuple[str, int] | None = None, 986s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 986s ) -> socket.socket: 986s """Connect to *address* and return the socket object. 986s 986s Convenience function. Connect to *address* (a 2-tuple ``(host, 986s port)``) and return the socket object. Passing the optional 986s *timeout* parameter will set the timeout on the socket instance 986s before attempting to connect. If no *timeout* is supplied, the 986s global default timeout setting returned by :func:`socket.getdefaulttimeout` 986s is used. If *source_address* is set it must be a tuple of (host, port) 986s for the socket to bind as a source address before making the connection. 986s An host of '' or port 0 tells the OS to use the default. 986s """ 986s 986s host, port = address 986s if host.startswith("["): 986s host = host.strip("[]") 986s err = None 986s 986s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 986s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 986s # The original create_connection function always returns all records. 986s family = allowed_gai_family() 986s 986s try: 986s host.encode("idna") 986s except UnicodeError: 986s raise LocationParseError(f"'{host}', label empty or too long") from None 986s 986s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 986s af, socktype, proto, canonname, sa = res 986s sock = None 986s try: 986s sock = socket.socket(af, socktype, proto) 986s 986s # If provided, set socket level options before connecting. 986s _set_socket_options(sock, socket_options) 986s 986s if timeout is not _DEFAULT_TIMEOUT: 986s sock.settimeout(timeout) 986s if source_address: 986s sock.bind(source_address) 986s > sock.connect(sa) 986s E ConnectionRefusedError: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 986s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 986s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s redirect = False, assert_same_host = False 986s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 986s release_conn = False, chunked = False, body_pos = None, preload_content = False 986s decode_content = False, response_kw = {} 986s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 986s destination_scheme = None, conn = None, release_this_conn = True 986s http_tunnel_required = False, err = None, clean_exit = False 986s 986s def urlopen( # type: ignore[override] 986s self, 986s method: str, 986s url: str, 986s body: _TYPE_BODY | None = None, 986s headers: typing.Mapping[str, str] | None = None, 986s retries: Retry | bool | int | None = None, 986s redirect: bool = True, 986s assert_same_host: bool = True, 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s pool_timeout: int | None = None, 986s release_conn: bool | None = None, 986s chunked: bool = False, 986s body_pos: _TYPE_BODY_POSITION | None = None, 986s preload_content: bool = True, 986s decode_content: bool = True, 986s **response_kw: typing.Any, 986s ) -> BaseHTTPResponse: 986s """ 986s Get a connection from the pool and perform an HTTP request. This is the 986s lowest level call for making a request, so you'll need to specify all 986s the raw details. 986s 986s .. note:: 986s 986s More commonly, it's appropriate to use a convenience method 986s such as :meth:`request`. 986s 986s .. note:: 986s 986s `release_conn` will only behave as expected if 986s `preload_content=False` because we want to make 986s `preload_content=False` the default behaviour someday soon without 986s breaking backwards compatibility. 986s 986s :param method: 986s HTTP request method (such as GET, POST, PUT, etc.) 986s 986s :param url: 986s The URL to perform the request on. 986s 986s :param body: 986s Data to send in the request body, either :class:`str`, :class:`bytes`, 986s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 986s 986s :param headers: 986s Dictionary of custom headers to send, such as User-Agent, 986s If-None-Match, etc. If None, pool headers are used. If provided, 986s these headers completely replace any pool-specific headers. 986s 986s :param retries: 986s Configure the number of retries to allow before raising a 986s :class:`~urllib3.exceptions.MaxRetryError` exception. 986s 986s Pass ``None`` to retry until you receive a response. Pass a 986s :class:`~urllib3.util.retry.Retry` object for fine-grained control 986s over different types of retries. 986s Pass an integer number to retry connection errors that many times, 986s but no other types of errors. Pass zero to never retry. 986s 986s If ``False``, then retries are disabled and any exception is raised 986s immediately. Also, instead of raising a MaxRetryError on redirects, 986s the redirect response will be returned. 986s 986s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 986s 986s :param redirect: 986s If True, automatically handle redirects (status codes 301, 302, 986s 303, 307, 308). Each redirect counts as a retry. Disabling retries 986s will disable redirect, too. 986s 986s :param assert_same_host: 986s If ``True``, will make sure that the host of the pool requests is 986s consistent else will raise HostChangedError. When ``False``, you can 986s use the pool on an HTTP proxy and request foreign hosts. 986s 986s :param timeout: 986s If specified, overrides the default timeout for this one 986s request. It may be a float (in seconds) or an instance of 986s :class:`urllib3.util.Timeout`. 986s 986s :param pool_timeout: 986s If set and the pool is set to block=True, then this method will 986s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 986s connection is available within the time period. 986s 986s :param bool preload_content: 986s If True, the response's body will be preloaded into memory. 986s 986s :param bool decode_content: 986s If True, will attempt to decode the body based on the 986s 'content-encoding' header. 986s 986s :param release_conn: 986s If False, then the urlopen call will not release the connection 986s back into the pool once a response is received (but will release if 986s you read the entire contents of the response such as when 986s `preload_content=True`). This is useful if you're not preloading 986s the response's content immediately. You will need to call 986s ``r.release_conn()`` on the response ``r`` to return the connection 986s back into the pool. If None, it takes the value of ``preload_content`` 986s which defaults to ``True``. 986s 986s :param bool chunked: 986s If True, urllib3 will send the body using chunked transfer 986s encoding. Otherwise, urllib3 will send the body using the standard 986s content-length form. Defaults to False. 986s 986s :param int body_pos: 986s Position to seek to in file-like body in the event of a retry or 986s redirect. Typically this won't need to be set because urllib3 will 986s auto-populate the value when needed. 986s """ 986s parsed_url = parse_url(url) 986s destination_scheme = parsed_url.scheme 986s 986s if headers is None: 986s headers = self.headers 986s 986s if not isinstance(retries, Retry): 986s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 986s 986s if release_conn is None: 986s release_conn = preload_content 986s 986s # Check host 986s if assert_same_host and not self.is_same_host(url): 986s raise HostChangedError(self, url, retries) 986s 986s # Ensure that the URL we're connecting to is properly encoded 986s if url.startswith("/"): 986s url = to_str(_encode_target(url)) 986s else: 986s url = to_str(parsed_url.url) 986s 986s conn = None 986s 986s # Track whether `conn` needs to be released before 986s # returning/raising/recursing. Update this variable if necessary, and 986s # leave `release_conn` constant throughout the function. That way, if 986s # the function recurses, the original value of `release_conn` will be 986s # passed down into the recursive call, and its value will be respected. 986s # 986s # See issue #651 [1] for details. 986s # 986s # [1] 986s release_this_conn = release_conn 986s 986s http_tunnel_required = connection_requires_http_tunnel( 986s self.proxy, self.proxy_config, destination_scheme 986s ) 986s 986s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 986s # have to copy the headers dict so we can safely change it without those 986s # changes being reflected in anyone else's copy. 986s if not http_tunnel_required: 986s headers = headers.copy() # type: ignore[attr-defined] 986s headers.update(self.proxy_headers) # type: ignore[union-attr] 986s 986s # Must keep the exception bound to a separate variable or else Python 3 986s # complains about UnboundLocalError. 986s err = None 986s 986s # Keep track of whether we cleanly exited the except block. This 986s # ensures we do proper cleanup in finally. 986s clean_exit = False 986s 986s # Rewind body position, if needed. Record current position 986s # for future rewinds in the event of a redirect/retry. 986s body_pos = set_file_position(body, body_pos) 986s 986s try: 986s # Request a connection from the queue. 986s timeout_obj = self._get_timeout(timeout) 986s conn = self._get_conn(timeout=pool_timeout) 986s 986s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 986s 986s # Is this a closed/new connection that requires CONNECT tunnelling? 986s if self.proxy is not None and http_tunnel_required and conn.is_closed: 986s try: 986s self._prepare_proxy(conn) 986s except (BaseSSLError, OSError, SocketTimeout) as e: 986s self._raise_timeout( 986s err=e, url=self.proxy.url, timeout_value=conn.timeout 986s ) 986s raise 986s 986s # If we're going to release the connection in ``finally:``, then 986s # the response doesn't need to know about the connection. Otherwise 986s # it will also try to release it and we'll have a double-release 986s # mess. 986s response_conn = conn if not release_conn else None 986s 986s # Make the request on the HTTPConnection object 986s > response = self._make_request( 986s conn, 986s method, 986s url, 986s timeout=timeout_obj, 986s body=body, 986s headers=headers, 986s chunked=chunked, 986s retries=retries, 986s response_conn=response_conn, 986s preload_content=preload_content, 986s decode_content=decode_content, 986s **response_kw, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 986s raise new_e 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 986s self._validate_conn(conn) 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 986s conn.connect() 986s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 986s self.sock = sock = self._new_conn() 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s except socket.gaierror as e: 986s raise NameResolutionError(self.host, self, e) from e 986s except SocketTimeout as e: 986s raise ConnectTimeoutError( 986s self, 986s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 986s ) from e 986s 986s except OSError as e: 986s > raise NewConnectionError( 986s self, f"Failed to establish a new connection: {e}" 986s ) from e 986s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s > resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:667: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 986s retries = retries.increment( 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 986s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 986s _pool = 986s _stacktrace = 986s 986s def increment( 986s self, 986s method: str | None = None, 986s url: str | None = None, 986s response: BaseHTTPResponse | None = None, 986s error: Exception | None = None, 986s _pool: ConnectionPool | None = None, 986s _stacktrace: TracebackType | None = None, 986s ) -> Retry: 986s """Return a new Retry object with incremented retry counters. 986s 986s :param response: A response object, or None, if the server did not 986s return a response. 986s :type response: :class:`~urllib3.response.BaseHTTPResponse` 986s :param Exception error: An error encountered during the request, or 986s None if the response was received successfully. 986s 986s :return: A new ``Retry`` object. 986s """ 986s if self.total is False and error: 986s # Disabled, indicate to re-raise the error. 986s raise reraise(type(error), error, _stacktrace) 986s 986s total = self.total 986s if total is not None: 986s total -= 1 986s 986s connect = self.connect 986s read = self.read 986s redirect = self.redirect 986s status_count = self.status 986s other = self.other 986s cause = "unknown" 986s status = None 986s redirect_location = None 986s 986s if error and self._is_connection_error(error): 986s # Connect retry? 986s if connect is False: 986s raise reraise(type(error), error, _stacktrace) 986s elif connect is not None: 986s connect -= 1 986s 986s elif error and self._is_read_error(error): 986s # Read retry? 986s if read is False or method is None or not self._is_method_retryable(method): 986s raise reraise(type(error), error, _stacktrace) 986s elif read is not None: 986s read -= 1 986s 986s elif error: 986s # Other retry? 986s if other is not None: 986s other -= 1 986s 986s elif response and response.get_redirect_location(): 986s # Redirect retry? 986s if redirect is not None: 986s redirect -= 1 986s cause = "too many redirects" 986s response_redirect_location = response.get_redirect_location() 986s if response_redirect_location: 986s redirect_location = response_redirect_location 986s status = response.status 986s 986s else: 986s # Incrementing because of a server error like a 500 in 986s # status_forcelist and the given method is in the allowed_methods 986s cause = ResponseError.GENERIC_ERROR 986s if response and response.status: 986s if status_count is not None: 986s status_count -= 1 986s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 986s status = response.status 986s 986s history = self.history + ( 986s RequestHistory(method, url, error, status, redirect_location), 986s ) 986s 986s new_retry = self.new( 986s total=total, 986s connect=connect, 986s read=read, 986s redirect=redirect, 986s status=status_count, 986s other=other, 986s history=history, 986s ) 986s 986s if new_retry.is_exhausted(): 986s reason = error or ResponseError(cause) 986s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 986s 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')) 986s 986s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 986s 986s During handling of the above exception, another exception occurred: 986s 986s make_enc = functools.partial(, 'r50k_base') 986s 986s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 986s > @hypothesis.given(text=st.text()) 986s 986s tests/test_encoding.py:131: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s tests/test_encoding.py:134: in test_hyp_roundtrip 986s enc = make_enc() 986s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 986s enc = Encoding(**constructor()) 986s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 986s mergeable_ranks = load_tiktoken_bpe( 986s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 986s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 986s contents = read_file(blobpath) 986s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 986s resp = requests.get(blobpath) 986s /usr/lib/python3/dist-packages/requests/api.py:73: in get 986s return request("get", url, params=params, **kwargs) 986s /usr/lib/python3/dist-packages/requests/api.py:59: in request 986s return session.request(method=method, url=url, **kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 986s resp = self.send(prep, **send_kwargs) 986s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 986s r = adapter.send(request, **kwargs) 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 986s timeout = TimeoutSauce(connect=connect, read=read) 986s except ValueError: 986s raise ValueError( 986s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 986s f"or a single float to set both timeouts to the same value." 986s ) 986s elif isinstance(timeout, TimeoutSauce): 986s pass 986s else: 986s timeout = TimeoutSauce(connect=timeout, read=timeout) 986s 986s try: 986s resp = conn.urlopen( 986s method=request.method, 986s url=url, 986s body=request.body, 986s headers=request.headers, 986s redirect=False, 986s assert_same_host=False, 986s preload_content=False, 986s decode_content=False, 986s retries=self.max_retries, 986s timeout=timeout, 986s chunked=chunked, 986s ) 986s 986s except (ProtocolError, OSError) as err: 986s raise ConnectionError(err, request=request) 986s 986s except MaxRetryError as e: 986s if isinstance(e.reason, ConnectTimeoutError): 986s # TODO: Remove this in 3.0.0: see #2811 986s if not isinstance(e.reason, NewConnectionError): 986s raise ConnectTimeout(e, request=request) 986s 986s if isinstance(e.reason, ResponseError): 986s raise RetryError(e, request=request) 986s 986s if isinstance(e.reason, _ProxyError): 986s raise ProxyError(e, request=request) 986s 986s if isinstance(e.reason, _SSLError): 986s # This branch is for urllib3 v1.22 and later. 986s raise SSLError(e, request=request) 986s 986s > raise ConnectionError(e, request=request) 986s 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')) 986s E Falsifying example: test_hyp_roundtrip( 986s E make_enc=functools.partial(get_encoding, 'r50k_base'), 986s E text='', # or any other generated value 986s E ) 986s 986s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 986s _______________________ test_hyp_roundtrip[cl100k_base] ________________________ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s > sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 986s raise err 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 986s source_address = None, socket_options = [(6, 1, 1)] 986s 986s def create_connection( 986s address: tuple[str, int], 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s source_address: tuple[str, int] | None = None, 986s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 986s ) -> socket.socket: 986s """Connect to *address* and return the socket object. 986s 986s Convenience function. Connect to *address* (a 2-tuple ``(host, 986s port)``) and return the socket object. Passing the optional 986s *timeout* parameter will set the timeout on the socket instance 986s before attempting to connect. If no *timeout* is supplied, the 986s global default timeout setting returned by :func:`socket.getdefaulttimeout` 986s is used. If *source_address* is set it must be a tuple of (host, port) 986s for the socket to bind as a source address before making the connection. 986s An host of '' or port 0 tells the OS to use the default. 986s """ 986s 986s host, port = address 986s if host.startswith("["): 986s host = host.strip("[]") 986s err = None 986s 986s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 986s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 986s # The original create_connection function always returns all records. 986s family = allowed_gai_family() 986s 986s try: 986s host.encode("idna") 986s except UnicodeError: 986s raise LocationParseError(f"'{host}', label empty or too long") from None 986s 986s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 986s af, socktype, proto, canonname, sa = res 986s sock = None 986s try: 986s sock = socket.socket(af, socktype, proto) 986s 986s # If provided, set socket level options before connecting. 986s _set_socket_options(sock, socket_options) 986s 986s if timeout is not _DEFAULT_TIMEOUT: 986s sock.settimeout(timeout) 986s if source_address: 986s sock.bind(source_address) 986s > sock.connect(sa) 986s E ConnectionRefusedError: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 986s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 986s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 986s redirect = False, assert_same_host = False 986s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 986s release_conn = False, chunked = False, body_pos = None, preload_content = False 986s decode_content = False, response_kw = {} 986s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 986s destination_scheme = None, conn = None, release_this_conn = True 986s http_tunnel_required = False, err = None, clean_exit = False 986s 986s def urlopen( # type: ignore[override] 986s self, 986s method: str, 986s url: str, 986s body: _TYPE_BODY | None = None, 986s headers: typing.Mapping[str, str] | None = None, 986s retries: Retry | bool | int | None = None, 986s redirect: bool = True, 986s assert_same_host: bool = True, 986s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 986s pool_timeout: int | None = None, 986s release_conn: bool | None = None, 986s chunked: bool = False, 986s body_pos: _TYPE_BODY_POSITION | None = None, 986s preload_content: bool = True, 986s decode_content: bool = True, 986s **response_kw: typing.Any, 986s ) -> BaseHTTPResponse: 986s """ 986s Get a connection from the pool and perform an HTTP request. This is the 986s lowest level call for making a request, so you'll need to specify all 986s the raw details. 986s 986s .. note:: 986s 986s More commonly, it's appropriate to use a convenience method 986s such as :meth:`request`. 986s 986s .. note:: 986s 986s `release_conn` will only behave as expected if 986s `preload_content=False` because we want to make 986s `preload_content=False` the default behaviour someday soon without 986s breaking backwards compatibility. 986s 986s :param method: 986s HTTP request method (such as GET, POST, PUT, etc.) 986s 986s :param url: 986s The URL to perform the request on. 986s 986s :param body: 986s Data to send in the request body, either :class:`str`, :class:`bytes`, 986s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 986s 986s :param headers: 986s Dictionary of custom headers to send, such as User-Agent, 986s If-None-Match, etc. If None, pool headers are used. If provided, 986s these headers completely replace any pool-specific headers. 986s 986s :param retries: 986s Configure the number of retries to allow before raising a 986s :class:`~urllib3.exceptions.MaxRetryError` exception. 986s 986s Pass ``None`` to retry until you receive a response. Pass a 986s :class:`~urllib3.util.retry.Retry` object for fine-grained control 986s over different types of retries. 986s Pass an integer number to retry connection errors that many times, 986s but no other types of errors. Pass zero to never retry. 986s 986s If ``False``, then retries are disabled and any exception is raised 986s immediately. Also, instead of raising a MaxRetryError on redirects, 986s the redirect response will be returned. 986s 986s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 986s 986s :param redirect: 986s If True, automatically handle redirects (status codes 301, 302, 986s 303, 307, 308). Each redirect counts as a retry. Disabling retries 986s will disable redirect, too. 986s 986s :param assert_same_host: 986s If ``True``, will make sure that the host of the pool requests is 986s consistent else will raise HostChangedError. When ``False``, you can 986s use the pool on an HTTP proxy and request foreign hosts. 986s 986s :param timeout: 986s If specified, overrides the default timeout for this one 986s request. It may be a float (in seconds) or an instance of 986s :class:`urllib3.util.Timeout`. 986s 986s :param pool_timeout: 986s If set and the pool is set to block=True, then this method will 986s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 986s connection is available within the time period. 986s 986s :param bool preload_content: 986s If True, the response's body will be preloaded into memory. 986s 986s :param bool decode_content: 986s If True, will attempt to decode the body based on the 986s 'content-encoding' header. 986s 986s :param release_conn: 986s If False, then the urlopen call will not release the connection 986s back into the pool once a response is received (but will release if 986s you read the entire contents of the response such as when 986s `preload_content=True`). This is useful if you're not preloading 986s the response's content immediately. You will need to call 986s ``r.release_conn()`` on the response ``r`` to return the connection 986s back into the pool. If None, it takes the value of ``preload_content`` 986s which defaults to ``True``. 986s 986s :param bool chunked: 986s If True, urllib3 will send the body using chunked transfer 986s encoding. Otherwise, urllib3 will send the body using the standard 986s content-length form. Defaults to False. 986s 986s :param int body_pos: 986s Position to seek to in file-like body in the event of a retry or 986s redirect. Typically this won't need to be set because urllib3 will 986s auto-populate the value when needed. 986s """ 986s parsed_url = parse_url(url) 986s destination_scheme = parsed_url.scheme 986s 986s if headers is None: 986s headers = self.headers 986s 986s if not isinstance(retries, Retry): 986s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 986s 986s if release_conn is None: 986s release_conn = preload_content 986s 986s # Check host 986s if assert_same_host and not self.is_same_host(url): 986s raise HostChangedError(self, url, retries) 986s 986s # Ensure that the URL we're connecting to is properly encoded 986s if url.startswith("/"): 986s url = to_str(_encode_target(url)) 986s else: 986s url = to_str(parsed_url.url) 986s 986s conn = None 986s 986s # Track whether `conn` needs to be released before 986s # returning/raising/recursing. Update this variable if necessary, and 986s # leave `release_conn` constant throughout the function. That way, if 986s # the function recurses, the original value of `release_conn` will be 986s # passed down into the recursive call, and its value will be respected. 986s # 986s # See issue #651 [1] for details. 986s # 986s # [1] 986s release_this_conn = release_conn 986s 986s http_tunnel_required = connection_requires_http_tunnel( 986s self.proxy, self.proxy_config, destination_scheme 986s ) 986s 986s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 986s # have to copy the headers dict so we can safely change it without those 986s # changes being reflected in anyone else's copy. 986s if not http_tunnel_required: 986s headers = headers.copy() # type: ignore[attr-defined] 986s headers.update(self.proxy_headers) # type: ignore[union-attr] 986s 986s # Must keep the exception bound to a separate variable or else Python 3 986s # complains about UnboundLocalError. 986s err = None 986s 986s # Keep track of whether we cleanly exited the except block. This 986s # ensures we do proper cleanup in finally. 986s clean_exit = False 986s 986s # Rewind body position, if needed. Record current position 986s # for future rewinds in the event of a redirect/retry. 986s body_pos = set_file_position(body, body_pos) 986s 986s try: 986s # Request a connection from the queue. 986s timeout_obj = self._get_timeout(timeout) 986s conn = self._get_conn(timeout=pool_timeout) 986s 986s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 986s 986s # Is this a closed/new connection that requires CONNECT tunnelling? 986s if self.proxy is not None and http_tunnel_required and conn.is_closed: 986s try: 986s self._prepare_proxy(conn) 986s except (BaseSSLError, OSError, SocketTimeout) as e: 986s self._raise_timeout( 986s err=e, url=self.proxy.url, timeout_value=conn.timeout 986s ) 986s raise 986s 986s # If we're going to release the connection in ``finally:``, then 986s # the response doesn't need to know about the connection. Otherwise 986s # it will also try to release it and we'll have a double-release 986s # mess. 986s response_conn = conn if not release_conn else None 986s 986s # Make the request on the HTTPConnection object 986s > response = self._make_request( 986s conn, 986s method, 986s url, 986s timeout=timeout_obj, 986s body=body, 986s headers=headers, 986s chunked=chunked, 986s retries=retries, 986s response_conn=response_conn, 986s preload_content=preload_content, 986s decode_content=decode_content, 986s **response_kw, 986s ) 986s 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 986s raise new_e 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 986s self._validate_conn(conn) 986s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 986s conn.connect() 986s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 986s self.sock = sock = self._new_conn() 986s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 986s 986s self = 986s 986s def _new_conn(self) -> socket.socket: 986s """Establish a socket connection and set nodelay settings on it. 986s 986s :return: New socket connection. 986s """ 986s try: 986s sock = connection.create_connection( 986s (self._dns_host, self.port), 986s self.timeout, 986s source_address=self.source_address, 986s socket_options=self.socket_options, 986s ) 986s except socket.gaierror as e: 986s raise NameResolutionError(self.host, self, e) from e 986s except SocketTimeout as e: 986s raise ConnectTimeoutError( 986s self, 986s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 986s ) from e 986s 986s except OSError as e: 986s > raise NewConnectionError( 986s self, f"Failed to establish a new connection: {e}" 986s ) from e 986s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 986s 986s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 986s 986s The above exception was the direct cause of the following exception: 986s 986s self = 986s request = , stream = False 986s timeout = Timeout(connect=None, read=None, total=None), verify = True 986s cert = None, proxies = OrderedDict() 986s 986s def send( 986s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 986s ): 986s """Sends PreparedRequest object. Returns Response object. 986s 986s :param request: The :class:`PreparedRequest ` being sent. 986s :param stream: (optional) Whether to stream the request content. 986s :param timeout: (optional) How long to wait for the server to send 986s data before giving up, as a float, or a :ref:`(connect timeout, 986s read timeout) ` tuple. 986s :type timeout: float or tuple or urllib3 Timeout object 986s :param verify: (optional) Either a boolean, in which case it controls whether 986s we verify the server's TLS certificate, or a string, in which case it 986s must be a path to a CA bundle to use 986s :param cert: (optional) Any user-provided SSL certificate to be trusted. 986s :param proxies: (optional) The proxies dictionary to apply to the request. 986s :rtype: requests.Response 986s """ 986s 986s try: 986s conn = self.get_connection_with_tls_context( 986s request, verify, proxies=proxies, cert=cert 986s ) 986s except LocationValueError as e: 986s raise InvalidURL(e, request=request) 986s 986s self.cert_verify(conn, request.url, verify, cert) 986s url = self.request_url(request, proxies) 986s self.add_headers( 986s request, 986s stream=stream, 986s timeout=timeout, 986s verify=verify, 986s cert=cert, 986s proxies=proxies, 986s ) 986s 986s chunked = not (request.body is None or "Content-Length" in request.headers) 986s 986s if isinstance(timeout, tuple): 986s try: 986s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s make_enc = functools.partial(, 'cl100k_base') 987s 987s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 987s > @hypothesis.given(text=st.text()) 987s 987s tests/test_encoding.py:131: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s tests/test_encoding.py:134: in test_hyp_roundtrip 987s enc = make_enc() 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 987s mergeable_ranks = load_tiktoken_bpe( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 987s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s E Falsifying example: test_hyp_roundtrip( 987s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 987s E text='', # or any other generated value 987s E ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s ____________________ test_single_token_roundtrip[r50k_base] ____________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s make_enc = functools.partial(, 'r50k_base') 987s 987s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 987s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 987s > enc = make_enc() 987s 987s tests/test_encoding.py:141: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 987s mergeable_ranks = load_tiktoken_bpe( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 987s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s ___________________ test_single_token_roundtrip[cl100k_base] ___________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s make_enc = functools.partial(, 'cl100k_base') 987s 987s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 987s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 987s > enc = make_enc() 987s 987s tests/test_encoding.py:141: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 987s mergeable_ranks = load_tiktoken_bpe( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 987s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s ______________________________ test_special_token ______________________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s def test_special_token(): 987s > enc = tiktoken.get_encoding("cl100k_base") 987s 987s tests/test_encoding.py:157: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 987s mergeable_ranks = load_tiktoken_bpe( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 987s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.e6n6Yl/autopkgtest_tmp/build; python3.13 -m pytest tests 987s I: pybuild base:311: cd /tmp/autopkgtest.e6n6Yl/autopkgtest_tmp/build; python3.12 -m pytest tests 987s this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s _____________________ test_hyp_special_ordinary[r50k_base] _____________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s make_enc = functools.partial(, 'r50k_base') 987s 987s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 987s > @hypothesis.given(text=st.text()) 987s 987s tests/test_encoding.py:208: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s tests/test_encoding.py:211: in test_hyp_special_ordinary 987s enc = make_enc() 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 987s mergeable_ranks = load_tiktoken_bpe( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 987s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s E Falsifying example: test_hyp_special_ordinary( 987s E make_enc=functools.partial(get_encoding, 'r50k_base'), 987s E text='', # or any other generated value 987s E ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s ____________________ test_hyp_special_ordinary[cl100k_base] ____________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s make_enc = functools.partial(, 'cl100k_base') 987s 987s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 987s > @hypothesis.given(text=st.text()) 987s 987s tests/test_encoding.py:208: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s tests/test_encoding.py:211: in test_hyp_special_ordinary 987s enc = make_enc() 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 987s mergeable_ranks = load_tiktoken_bpe( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 987s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s E Falsifying example: test_hyp_special_ordinary( 987s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 987s E text='', # or any other generated value 987s E ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s _________________________ test_batch_encode[r50k_base] _________________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s make_enc = functools.partial(, 'r50k_base') 987s 987s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 987s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 987s > enc = make_enc() 987s 987s tests/test_encoding.py:222: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 987s mergeable_ranks = load_tiktoken_bpe( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 987s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s ________________________ test_batch_encode[cl100k_base] ________________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s make_enc = functools.partial(, 'cl100k_base') 987s 987s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 987s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 987s > enc = make_enc() 987s 987s tests/test_encoding.py:222: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 987s mergeable_ranks = load_tiktoken_bpe( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 987s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s _____________________ test_hyp_batch_roundtrip[r50k_base] ______________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s make_enc = functools.partial(, 'r50k_base') 987s 987s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 987s > @hypothesis.given(batch=st.lists(st.text())) 987s 987s tests/test_encoding.py:237: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 987s enc = make_enc() 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 987s mergeable_ranks = load_tiktoken_bpe( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 987s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s E Falsifying example: test_hyp_batch_roundtrip( 987s E make_enc=functools.partial(get_encoding, 'r50k_base'), 987s E batch=[], # or any other generated value 987s E ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s ____________________ test_hyp_batch_roundtrip[cl100k_base] _____________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s make_enc = functools.partial(, 'cl100k_base') 987s 987s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 987s > @hypothesis.given(batch=st.lists(st.text())) 987s 987s tests/test_encoding.py:237: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 987s enc = make_enc() 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 987s mergeable_ranks = load_tiktoken_bpe( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 987s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s E Falsifying example: test_hyp_batch_roundtrip( 987s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 987s E batch=[], # or any other generated value 987s E ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s ___________________________ test_encoding_for_model ____________________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s def test_encoding_for_model(): 987s > enc = tiktoken.encoding_for_model("gpt2") 987s 987s tests/test_misc.py:8: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 987s return get_encoding(encoding_name_for_model(model_name)) 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 987s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 987s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s ________________________ test_hyp_offsets[cl100k_base] _________________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s make_enc = functools.partial(, 'cl100k_base') 987s 987s @pytest.mark.parametrize("make_enc", SOME_ENCODING_FACTORIES) 987s > @hypothesis.given(data=st.data()) 987s 987s tests/test_offsets.py:29: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s tests/test_offsets.py:32: in test_hyp_offsets 987s enc = make_enc() 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 987s mergeable_ranks = load_tiktoken_bpe( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 987s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s E Falsifying example: test_hyp_offsets( 987s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 987s E data=data(...), 987s E ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s ______________________________ test_basic_offsets ______________________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s def test_basic_offsets(): 987s > enc = tiktoken.get_encoding("cl100k_base") 987s 987s tests/test_offsets.py:50: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 987s mergeable_ranks = load_tiktoken_bpe( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 987s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s _________________________________ test_pickle __________________________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s def test_pickle(): 987s import pickle 987s 987s > enc_old = tiktoken.get_encoding("r50k_base") 987s 987s tests/test_pickle.py:7: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 987s mergeable_ranks = load_tiktoken_bpe( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 987s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s _________________________________ test_simple __________________________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s def test_simple(): 987s # Note that there are more actual tests, they're just not currently public :-) 987s > enc = tiktoken.get_encoding("gpt2") 987s 987s tests/test_simple_public.py:9: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 987s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 987s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s ___________________________ test_encoding_for_model ____________________________ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s > sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 987s raise err 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 987s source_address = None, socket_options = [(6, 1, 1)] 987s 987s def create_connection( 987s address: tuple[str, int], 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s source_address: tuple[str, int] | None = None, 987s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 987s ) -> socket.socket: 987s """Connect to *address* and return the socket object. 987s 987s Convenience function. Connect to *address* (a 2-tuple ``(host, 987s port)``) and return the socket object. Passing the optional 987s *timeout* parameter will set the timeout on the socket instance 987s before attempting to connect. If no *timeout* is supplied, the 987s global default timeout setting returned by :func:`socket.getdefaulttimeout` 987s is used. If *source_address* is set it must be a tuple of (host, port) 987s for the socket to bind as a source address before making the connection. 987s An host of '' or port 0 tells the OS to use the default. 987s """ 987s 987s host, port = address 987s if host.startswith("["): 987s host = host.strip("[]") 987s err = None 987s 987s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 987s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 987s # The original create_connection function always returns all records. 987s family = allowed_gai_family() 987s 987s try: 987s host.encode("idna") 987s except UnicodeError: 987s raise LocationParseError(f"'{host}', label empty or too long") from None 987s 987s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 987s af, socktype, proto, canonname, sa = res 987s sock = None 987s try: 987s sock = socket.socket(af, socktype, proto) 987s 987s # If provided, set socket level options before connecting. 987s _set_socket_options(sock, socket_options) 987s 987s if timeout is not _DEFAULT_TIMEOUT: 987s sock.settimeout(timeout) 987s if source_address: 987s sock.bind(source_address) 987s > sock.connect(sa) 987s E ConnectionRefusedError: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 987s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 987s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s redirect = False, assert_same_host = False 987s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 987s release_conn = False, chunked = False, body_pos = None, preload_content = False 987s decode_content = False, response_kw = {} 987s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 987s destination_scheme = None, conn = None, release_this_conn = True 987s http_tunnel_required = False, err = None, clean_exit = False 987s 987s def urlopen( # type: ignore[override] 987s self, 987s method: str, 987s url: str, 987s body: _TYPE_BODY | None = None, 987s headers: typing.Mapping[str, str] | None = None, 987s retries: Retry | bool | int | None = None, 987s redirect: bool = True, 987s assert_same_host: bool = True, 987s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 987s pool_timeout: int | None = None, 987s release_conn: bool | None = None, 987s chunked: bool = False, 987s body_pos: _TYPE_BODY_POSITION | None = None, 987s preload_content: bool = True, 987s decode_content: bool = True, 987s **response_kw: typing.Any, 987s ) -> BaseHTTPResponse: 987s """ 987s Get a connection from the pool and perform an HTTP request. This is the 987s lowest level call for making a request, so you'll need to specify all 987s the raw details. 987s 987s .. note:: 987s 987s More commonly, it's appropriate to use a convenience method 987s such as :meth:`request`. 987s 987s .. note:: 987s 987s `release_conn` will only behave as expected if 987s `preload_content=False` because we want to make 987s `preload_content=False` the default behaviour someday soon without 987s breaking backwards compatibility. 987s 987s :param method: 987s HTTP request method (such as GET, POST, PUT, etc.) 987s 987s :param url: 987s The URL to perform the request on. 987s 987s :param body: 987s Data to send in the request body, either :class:`str`, :class:`bytes`, 987s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 987s 987s :param headers: 987s Dictionary of custom headers to send, such as User-Agent, 987s If-None-Match, etc. If None, pool headers are used. If provided, 987s these headers completely replace any pool-specific headers. 987s 987s :param retries: 987s Configure the number of retries to allow before raising a 987s :class:`~urllib3.exceptions.MaxRetryError` exception. 987s 987s Pass ``None`` to retry until you receive a response. Pass a 987s :class:`~urllib3.util.retry.Retry` object for fine-grained control 987s over different types of retries. 987s Pass an integer number to retry connection errors that many times, 987s but no other types of errors. Pass zero to never retry. 987s 987s If ``False``, then retries are disabled and any exception is raised 987s immediately. Also, instead of raising a MaxRetryError on redirects, 987s the redirect response will be returned. 987s 987s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 987s 987s :param redirect: 987s If True, automatically handle redirects (status codes 301, 302, 987s 303, 307, 308). Each redirect counts as a retry. Disabling retries 987s will disable redirect, too. 987s 987s :param assert_same_host: 987s If ``True``, will make sure that the host of the pool requests is 987s consistent else will raise HostChangedError. When ``False``, you can 987s use the pool on an HTTP proxy and request foreign hosts. 987s 987s :param timeout: 987s If specified, overrides the default timeout for this one 987s request. It may be a float (in seconds) or an instance of 987s :class:`urllib3.util.Timeout`. 987s 987s :param pool_timeout: 987s If set and the pool is set to block=True, then this method will 987s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 987s connection is available within the time period. 987s 987s :param bool preload_content: 987s If True, the response's body will be preloaded into memory. 987s 987s :param bool decode_content: 987s If True, will attempt to decode the body based on the 987s 'content-encoding' header. 987s 987s :param release_conn: 987s If False, then the urlopen call will not release the connection 987s back into the pool once a response is received (but will release if 987s you read the entire contents of the response such as when 987s `preload_content=True`). This is useful if you're not preloading 987s the response's content immediately. You will need to call 987s ``r.release_conn()`` on the response ``r`` to return the connection 987s back into the pool. If None, it takes the value of ``preload_content`` 987s which defaults to ``True``. 987s 987s :param bool chunked: 987s If True, urllib3 will send the body using chunked transfer 987s encoding. Otherwise, urllib3 will send the body using the standard 987s content-length form. Defaults to False. 987s 987s :param int body_pos: 987s Position to seek to in file-like body in the event of a retry or 987s redirect. Typically this won't need to be set because urllib3 will 987s auto-populate the value when needed. 987s """ 987s parsed_url = parse_url(url) 987s destination_scheme = parsed_url.scheme 987s 987s if headers is None: 987s headers = self.headers 987s 987s if not isinstance(retries, Retry): 987s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 987s 987s if release_conn is None: 987s release_conn = preload_content 987s 987s # Check host 987s if assert_same_host and not self.is_same_host(url): 987s raise HostChangedError(self, url, retries) 987s 987s # Ensure that the URL we're connecting to is properly encoded 987s if url.startswith("/"): 987s url = to_str(_encode_target(url)) 987s else: 987s url = to_str(parsed_url.url) 987s 987s conn = None 987s 987s # Track whether `conn` needs to be released before 987s # returning/raising/recursing. Update this variable if necessary, and 987s # leave `release_conn` constant throughout the function. That way, if 987s # the function recurses, the original value of `release_conn` will be 987s # passed down into the recursive call, and its value will be respected. 987s # 987s # See issue #651 [1] for details. 987s # 987s # [1] 987s release_this_conn = release_conn 987s 987s http_tunnel_required = connection_requires_http_tunnel( 987s self.proxy, self.proxy_config, destination_scheme 987s ) 987s 987s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 987s # have to copy the headers dict so we can safely change it without those 987s # changes being reflected in anyone else's copy. 987s if not http_tunnel_required: 987s headers = headers.copy() # type: ignore[attr-defined] 987s headers.update(self.proxy_headers) # type: ignore[union-attr] 987s 987s # Must keep the exception bound to a separate variable or else Python 3 987s # complains about UnboundLocalError. 987s err = None 987s 987s # Keep track of whether we cleanly exited the except block. This 987s # ensures we do proper cleanup in finally. 987s clean_exit = False 987s 987s # Rewind body position, if needed. Record current position 987s # for future rewinds in the event of a redirect/retry. 987s body_pos = set_file_position(body, body_pos) 987s 987s try: 987s # Request a connection from the queue. 987s timeout_obj = self._get_timeout(timeout) 987s conn = self._get_conn(timeout=pool_timeout) 987s 987s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 987s 987s # Is this a closed/new connection that requires CONNECT tunnelling? 987s if self.proxy is not None and http_tunnel_required and conn.is_closed: 987s try: 987s self._prepare_proxy(conn) 987s except (BaseSSLError, OSError, SocketTimeout) as e: 987s self._raise_timeout( 987s err=e, url=self.proxy.url, timeout_value=conn.timeout 987s ) 987s raise 987s 987s # If we're going to release the connection in ``finally:``, then 987s # the response doesn't need to know about the connection. Otherwise 987s # it will also try to release it and we'll have a double-release 987s # mess. 987s response_conn = conn if not release_conn else None 987s 987s # Make the request on the HTTPConnection object 987s > response = self._make_request( 987s conn, 987s method, 987s url, 987s timeout=timeout_obj, 987s body=body, 987s headers=headers, 987s chunked=chunked, 987s retries=retries, 987s response_conn=response_conn, 987s preload_content=preload_content, 987s decode_content=decode_content, 987s **response_kw, 987s ) 987s 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 987s raise new_e 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 987s self._validate_conn(conn) 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 987s conn.connect() 987s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 987s self.sock = sock = self._new_conn() 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s 987s def _new_conn(self) -> socket.socket: 987s """Establish a socket connection and set nodelay settings on it. 987s 987s :return: New socket connection. 987s """ 987s try: 987s sock = connection.create_connection( 987s (self._dns_host, self.port), 987s self.timeout, 987s source_address=self.source_address, 987s socket_options=self.socket_options, 987s ) 987s except socket.gaierror as e: 987s raise NameResolutionError(self.host, self, e) from e 987s except SocketTimeout as e: 987s raise ConnectTimeoutError( 987s self, 987s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 987s ) from e 987s 987s except OSError as e: 987s > raise NewConnectionError( 987s self, f"Failed to establish a new connection: {e}" 987s ) from e 987s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 987s 987s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 987s 987s The above exception was the direct cause of the following exception: 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s > resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:667: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 987s retries = retries.increment( 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 987s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 987s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 987s _pool = 987s _stacktrace = 987s 987s def increment( 987s self, 987s method: str | None = None, 987s url: str | None = None, 987s response: BaseHTTPResponse | None = None, 987s error: Exception | None = None, 987s _pool: ConnectionPool | None = None, 987s _stacktrace: TracebackType | None = None, 987s ) -> Retry: 987s """Return a new Retry object with incremented retry counters. 987s 987s :param response: A response object, or None, if the server did not 987s return a response. 987s :type response: :class:`~urllib3.response.BaseHTTPResponse` 987s :param Exception error: An error encountered during the request, or 987s None if the response was received successfully. 987s 987s :return: A new ``Retry`` object. 987s """ 987s if self.total is False and error: 987s # Disabled, indicate to re-raise the error. 987s raise reraise(type(error), error, _stacktrace) 987s 987s total = self.total 987s if total is not None: 987s total -= 1 987s 987s connect = self.connect 987s read = self.read 987s redirect = self.redirect 987s status_count = self.status 987s other = self.other 987s cause = "unknown" 987s status = None 987s redirect_location = None 987s 987s if error and self._is_connection_error(error): 987s # Connect retry? 987s if connect is False: 987s raise reraise(type(error), error, _stacktrace) 987s elif connect is not None: 987s connect -= 1 987s 987s elif error and self._is_read_error(error): 987s # Read retry? 987s if read is False or method is None or not self._is_method_retryable(method): 987s raise reraise(type(error), error, _stacktrace) 987s elif read is not None: 987s read -= 1 987s 987s elif error: 987s # Other retry? 987s if other is not None: 987s other -= 1 987s 987s elif response and response.get_redirect_location(): 987s # Redirect retry? 987s if redirect is not None: 987s redirect -= 1 987s cause = "too many redirects" 987s response_redirect_location = response.get_redirect_location() 987s if response_redirect_location: 987s redirect_location = response_redirect_location 987s status = response.status 987s 987s else: 987s # Incrementing because of a server error like a 500 in 987s # status_forcelist and the given method is in the allowed_methods 987s cause = ResponseError.GENERIC_ERROR 987s if response and response.status: 987s if status_count is not None: 987s status_count -= 1 987s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 987s status = response.status 987s 987s history = self.history + ( 987s RequestHistory(method, url, error, status, redirect_location), 987s ) 987s 987s new_retry = self.new( 987s total=total, 987s connect=connect, 987s read=read, 987s redirect=redirect, 987s status=status_count, 987s other=other, 987s history=history, 987s ) 987s 987s if new_retry.is_exhausted(): 987s reason = error or ResponseError(cause) 987s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 987s 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')) 987s 987s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 987s 987s During handling of the above exception, another exception occurred: 987s 987s def test_encoding_for_model(): 987s > enc = tiktoken.encoding_for_model("gpt2") 987s 987s tests/test_simple_public.py:26: 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 987s return get_encoding(encoding_name_for_model(model_name)) 987s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 987s enc = Encoding(**constructor()) 987s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 987s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 987s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 987s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 987s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 987s contents = read_file(blobpath) 987s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 987s resp = requests.get(blobpath) 987s /usr/lib/python3/dist-packages/requests/api.py:73: in get 987s return request("get", url, params=params, **kwargs) 987s /usr/lib/python3/dist-packages/requests/api.py:59: in request 987s return session.request(method=method, url=url, **kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 987s resp = self.send(prep, **send_kwargs) 987s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 987s r = adapter.send(request, **kwargs) 987s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 987s 987s self = 987s request = , stream = False 987s timeout = Timeout(connect=None, read=None, total=None), verify = True 987s cert = None, proxies = OrderedDict() 987s 987s def send( 987s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 987s ): 987s """Sends PreparedRequest object. Returns Response object. 987s 987s :param request: The :class:`PreparedRequest ` being sent. 987s :param stream: (optional) Whether to stream the request content. 987s :param timeout: (optional) How long to wait for the server to send 987s data before giving up, as a float, or a :ref:`(connect timeout, 987s read timeout) ` tuple. 987s :type timeout: float or tuple or urllib3 Timeout object 987s :param verify: (optional) Either a boolean, in which case it controls whether 987s we verify the server's TLS certificate, or a string, in which case it 987s must be a path to a CA bundle to use 987s :param cert: (optional) Any user-provided SSL certificate to be trusted. 987s :param proxies: (optional) The proxies dictionary to apply to the request. 987s :rtype: requests.Response 987s """ 987s 987s try: 987s conn = self.get_connection_with_tls_context( 987s request, verify, proxies=proxies, cert=cert 987s ) 987s except LocationValueError as e: 987s raise InvalidURL(e, request=request) 987s 987s self.cert_verify(conn, request.url, verify, cert) 987s url = self.request_url(request, proxies) 987s self.add_headers( 987s request, 987s stream=stream, 987s timeout=timeout, 987s verify=verify, 987s cert=cert, 987s proxies=proxies, 987s ) 987s 987s chunked = not (request.body is None or "Content-Length" in request.headers) 987s 987s if isinstance(timeout, tuple): 987s try: 987s connect, read = timeout 987s timeout = TimeoutSauce(connect=connect, read=read) 987s except ValueError: 987s raise ValueError( 987s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 987s f"or a single float to set both timeouts to the same value." 987s ) 987s elif isinstance(timeout, TimeoutSauce): 987s pass 987s else: 987s timeout = TimeoutSauce(connect=timeout, read=timeout) 987s 987s try: 987s resp = conn.urlopen( 987s method=request.method, 987s url=url, 987s body=request.body, 987s headers=request.headers, 987s redirect=False, 987s assert_same_host=False, 987s preload_content=False, 987s decode_content=False, 987s retries=self.max_retries, 987s timeout=timeout, 987s chunked=chunked, 987s ) 987s 987s except (ProtocolError, OSError) as err: 987s raise ConnectionError(err, request=request) 987s 987s except MaxRetryError as e: 987s if isinstance(e.reason, ConnectTimeoutError): 987s # TODO: Remove this in 3.0.0: see #2811 987s if not isinstance(e.reason, NewConnectionError): 987s raise ConnectTimeout(e, request=request) 987s 987s if isinstance(e.reason, ResponseError): 987s raise RetryError(e, request=request) 987s 987s if isinstance(e.reason, _ProxyError): 987s raise ProxyError(e, request=request) 987s 987s if isinstance(e.reason, _SSLError): 987s # This branch is for urllib3 v1.22 and later. 987s raise SSLError(e, request=request) 987s 987s > raise ConnectionError(e, request=request) 987s 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')) 987s 987s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 987s =========================== short test summary info ============================ 987s FAILED tests/test_encoding.py::test_simple - requests.exceptions.ConnectionEr... 987s FAILED tests/test_encoding.py::test_simple_repeated - requests.exceptions.Con... 987s FAILED tests/test_encoding.py::test_simple_regex - requests.exceptions.Connec... 987s FAILED tests/test_encoding.py::test_basic_encode - requests.exceptions.Connec... 987s FAILED tests/test_encoding.py::test_encode_empty - requests.exceptions.Connec... 987s FAILED tests/test_encoding.py::test_encode_bytes - requests.exceptions.Connec... 987s FAILED tests/test_encoding.py::test_encode_surrogate_pairs - requests.excepti... 987s FAILED tests/test_encoding.py::test_catastrophically_repetitive[r50k_base] - ... 987s FAILED tests/test_encoding.py::test_catastrophically_repetitive[cl100k_base] 987s FAILED tests/test_encoding.py::test_basic_roundtrip[r50k_base] - requests.exc... 987s FAILED tests/test_encoding.py::test_basic_roundtrip[cl100k_base] - requests.e... 987s FAILED tests/test_encoding.py::test_hyp_roundtrip[r50k_base] - requests.excep... 987s FAILED tests/test_encoding.py::test_hyp_roundtrip[cl100k_base] - requests.exc... 987s FAILED tests/test_encoding.py::test_single_token_roundtrip[r50k_base] - reque... 987s FAILED tests/test_encoding.py::test_single_token_roundtrip[cl100k_base] - req... 987s FAILED tests/test_encoding.py::test_special_token - requests.exceptions.Conne... 987s FAILED tests/test_encoding.py::test_hyp_special_ordinary[r50k_base] - request... 987s FAILED tests/test_encoding.py::test_hyp_special_ordinary[cl100k_base] - reque... 987s FAILED tests/test_encoding.py::test_batch_encode[r50k_base] - requests.except... 987s FAILED tests/test_encoding.py::test_batch_encode[cl100k_base] - requests.exce... 987s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[r50k_base] - requests... 987s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[cl100k_base] - reques... 987s FAILED tests/test_misc.py::test_encoding_for_model - requests.exceptions.Conn... 987s FAILED tests/test_offsets.py::test_hyp_offsets[cl100k_base] - requests.except... 987s FAILED tests/test_offsets.py::test_basic_offsets - requests.exceptions.Connec... 987s FAILED tests/test_pickle.py::test_pickle - requests.exceptions.ConnectionErro... 987s FAILED tests/test_simple_public.py::test_simple - requests.exceptions.Connect... 987s FAILED tests/test_simple_public.py::test_encoding_for_model - requests.except... 987s =================== 28 failed, 2 passed in 594.80s (0:09:54) =================== 987s ============================= test session starts ============================== 987s platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0 987s rootdir: /tmp/autopkgtest.e6n6Yl/autopkgtest_tmp/build 987s configfile: pyproject.toml 987s plugins: typeguard-4.4.1, hypothesis-6.119.3 987s collected 30 items 987s 1014s tests/test_encoding.py FFFFFFFFFFFFFFFFFFFFFF [ 73%] 1015s tests/test_misc.py F. [ 80%] 1018s tests/test_offsets.py FF [ 86%] 1019s tests/test_pickle.py F [ 90%] 1021s tests/test_simple_public.py FF. [100%] 1021s 1021s =================================== FAILURES =================================== 1021s _________________________________ test_simple __________________________________ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s > sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1021s raise err 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1021s source_address = None, socket_options = [(6, 1, 1)] 1021s 1021s def create_connection( 1021s address: tuple[str, int], 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s source_address: tuple[str, int] | None = None, 1021s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1021s ) -> socket.socket: 1021s """Connect to *address* and return the socket object. 1021s 1021s Convenience function. Connect to *address* (a 2-tuple ``(host, 1021s port)``) and return the socket object. Passing the optional 1021s *timeout* parameter will set the timeout on the socket instance 1021s before attempting to connect. If no *timeout* is supplied, the 1021s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1021s is used. If *source_address* is set it must be a tuple of (host, port) 1021s for the socket to bind as a source address before making the connection. 1021s An host of '' or port 0 tells the OS to use the default. 1021s """ 1021s 1021s host, port = address 1021s if host.startswith("["): 1021s host = host.strip("[]") 1021s err = None 1021s 1021s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1021s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1021s # The original create_connection function always returns all records. 1021s family = allowed_gai_family() 1021s 1021s try: 1021s host.encode("idna") 1021s except UnicodeError: 1021s raise LocationParseError(f"'{host}', label empty or too long") from None 1021s 1021s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1021s af, socktype, proto, canonname, sa = res 1021s sock = None 1021s try: 1021s sock = socket.socket(af, socktype, proto) 1021s 1021s # If provided, set socket level options before connecting. 1021s _set_socket_options(sock, socket_options) 1021s 1021s if timeout is not _DEFAULT_TIMEOUT: 1021s sock.settimeout(timeout) 1021s if source_address: 1021s sock.bind(source_address) 1021s > sock.connect(sa) 1021s E ConnectionRefusedError: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 1021s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1021s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s redirect = False, assert_same_host = False 1021s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1021s release_conn = False, chunked = False, body_pos = None, preload_content = False 1021s decode_content = False, response_kw = {} 1021s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 1021s destination_scheme = None, conn = None, release_this_conn = True 1021s http_tunnel_required = False, err = None, clean_exit = False 1021s 1021s def urlopen( # type: ignore[override] 1021s self, 1021s method: str, 1021s url: str, 1021s body: _TYPE_BODY | None = None, 1021s headers: typing.Mapping[str, str] | None = None, 1021s retries: Retry | bool | int | None = None, 1021s redirect: bool = True, 1021s assert_same_host: bool = True, 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s pool_timeout: int | None = None, 1021s release_conn: bool | None = None, 1021s chunked: bool = False, 1021s body_pos: _TYPE_BODY_POSITION | None = None, 1021s preload_content: bool = True, 1021s decode_content: bool = True, 1021s **response_kw: typing.Any, 1021s ) -> BaseHTTPResponse: 1021s """ 1021s Get a connection from the pool and perform an HTTP request. This is the 1021s lowest level call for making a request, so you'll need to specify all 1021s the raw details. 1021s 1021s .. note:: 1021s 1021s More commonly, it's appropriate to use a convenience method 1021s such as :meth:`request`. 1021s 1021s .. note:: 1021s 1021s `release_conn` will only behave as expected if 1021s `preload_content=False` because we want to make 1021s `preload_content=False` the default behaviour someday soon without 1021s breaking backwards compatibility. 1021s 1021s :param method: 1021s HTTP request method (such as GET, POST, PUT, etc.) 1021s 1021s :param url: 1021s The URL to perform the request on. 1021s 1021s :param body: 1021s Data to send in the request body, either :class:`str`, :class:`bytes`, 1021s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1021s 1021s :param headers: 1021s Dictionary of custom headers to send, such as User-Agent, 1021s If-None-Match, etc. If None, pool headers are used. If provided, 1021s these headers completely replace any pool-specific headers. 1021s 1021s :param retries: 1021s Configure the number of retries to allow before raising a 1021s :class:`~urllib3.exceptions.MaxRetryError` exception. 1021s 1021s Pass ``None`` to retry until you receive a response. Pass a 1021s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1021s over different types of retries. 1021s Pass an integer number to retry connection errors that many times, 1021s but no other types of errors. Pass zero to never retry. 1021s 1021s If ``False``, then retries are disabled and any exception is raised 1021s immediately. Also, instead of raising a MaxRetryError on redirects, 1021s the redirect response will be returned. 1021s 1021s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1021s 1021s :param redirect: 1021s If True, automatically handle redirects (status codes 301, 302, 1021s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1021s will disable redirect, too. 1021s 1021s :param assert_same_host: 1021s If ``True``, will make sure that the host of the pool requests is 1021s consistent else will raise HostChangedError. When ``False``, you can 1021s use the pool on an HTTP proxy and request foreign hosts. 1021s 1021s :param timeout: 1021s If specified, overrides the default timeout for this one 1021s request. It may be a float (in seconds) or an instance of 1021s :class:`urllib3.util.Timeout`. 1021s 1021s :param pool_timeout: 1021s If set and the pool is set to block=True, then this method will 1021s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1021s connection is available within the time period. 1021s 1021s :param bool preload_content: 1021s If True, the response's body will be preloaded into memory. 1021s 1021s :param bool decode_content: 1021s If True, will attempt to decode the body based on the 1021s 'content-encoding' header. 1021s 1021s :param release_conn: 1021s If False, then the urlopen call will not release the connection 1021s back into the pool once a response is received (but will release if 1021s you read the entire contents of the response such as when 1021s `preload_content=True`). This is useful if you're not preloading 1021s the response's content immediately. You will need to call 1021s ``r.release_conn()`` on the response ``r`` to return the connection 1021s back into the pool. If None, it takes the value of ``preload_content`` 1021s which defaults to ``True``. 1021s 1021s :param bool chunked: 1021s If True, urllib3 will send the body using chunked transfer 1021s encoding. Otherwise, urllib3 will send the body using the standard 1021s content-length form. Defaults to False. 1021s 1021s :param int body_pos: 1021s Position to seek to in file-like body in the event of a retry or 1021s redirect. Typically this won't need to be set because urllib3 will 1021s auto-populate the value when needed. 1021s """ 1021s parsed_url = parse_url(url) 1021s destination_scheme = parsed_url.scheme 1021s 1021s if headers is None: 1021s headers = self.headers 1021s 1021s if not isinstance(retries, Retry): 1021s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1021s 1021s if release_conn is None: 1021s release_conn = preload_content 1021s 1021s # Check host 1021s if assert_same_host and not self.is_same_host(url): 1021s raise HostChangedError(self, url, retries) 1021s 1021s # Ensure that the URL we're connecting to is properly encoded 1021s if url.startswith("/"): 1021s url = to_str(_encode_target(url)) 1021s else: 1021s url = to_str(parsed_url.url) 1021s 1021s conn = None 1021s 1021s # Track whether `conn` needs to be released before 1021s # returning/raising/recursing. Update this variable if necessary, and 1021s # leave `release_conn` constant throughout the function. That way, if 1021s # the function recurses, the original value of `release_conn` will be 1021s # passed down into the recursive call, and its value will be respected. 1021s # 1021s # See issue #651 [1] for details. 1021s # 1021s # [1] 1021s release_this_conn = release_conn 1021s 1021s http_tunnel_required = connection_requires_http_tunnel( 1021s self.proxy, self.proxy_config, destination_scheme 1021s ) 1021s 1021s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1021s # have to copy the headers dict so we can safely change it without those 1021s # changes being reflected in anyone else's copy. 1021s if not http_tunnel_required: 1021s headers = headers.copy() # type: ignore[attr-defined] 1021s headers.update(self.proxy_headers) # type: ignore[union-attr] 1021s 1021s # Must keep the exception bound to a separate variable or else Python 3 1021s # complains about UnboundLocalError. 1021s err = None 1021s 1021s # Keep track of whether we cleanly exited the except block. This 1021s # ensures we do proper cleanup in finally. 1021s clean_exit = False 1021s 1021s # Rewind body position, if needed. Record current position 1021s # for future rewinds in the event of a redirect/retry. 1021s body_pos = set_file_position(body, body_pos) 1021s 1021s try: 1021s # Request a connection from the queue. 1021s timeout_obj = self._get_timeout(timeout) 1021s conn = self._get_conn(timeout=pool_timeout) 1021s 1021s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1021s 1021s # Is this a closed/new connection that requires CONNECT tunnelling? 1021s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1021s try: 1021s self._prepare_proxy(conn) 1021s except (BaseSSLError, OSError, SocketTimeout) as e: 1021s self._raise_timeout( 1021s err=e, url=self.proxy.url, timeout_value=conn.timeout 1021s ) 1021s raise 1021s 1021s # If we're going to release the connection in ``finally:``, then 1021s # the response doesn't need to know about the connection. Otherwise 1021s # it will also try to release it and we'll have a double-release 1021s # mess. 1021s response_conn = conn if not release_conn else None 1021s 1021s # Make the request on the HTTPConnection object 1021s > response = self._make_request( 1021s conn, 1021s method, 1021s url, 1021s timeout=timeout_obj, 1021s body=body, 1021s headers=headers, 1021s chunked=chunked, 1021s retries=retries, 1021s response_conn=response_conn, 1021s preload_content=preload_content, 1021s decode_content=decode_content, 1021s **response_kw, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1021s raise new_e 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1021s self._validate_conn(conn) 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1021s conn.connect() 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1021s self.sock = sock = self._new_conn() 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s except socket.gaierror as e: 1021s raise NameResolutionError(self.host, self, e) from e 1021s except SocketTimeout as e: 1021s raise ConnectTimeoutError( 1021s self, 1021s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1021s ) from e 1021s 1021s except OSError as e: 1021s > raise NewConnectionError( 1021s self, f"Failed to establish a new connection: {e}" 1021s ) from e 1021s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s > resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1021s retries = retries.increment( 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 1021s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1021s _pool = 1021s _stacktrace = 1021s 1021s def increment( 1021s self, 1021s method: str | None = None, 1021s url: str | None = None, 1021s response: BaseHTTPResponse | None = None, 1021s error: Exception | None = None, 1021s _pool: ConnectionPool | None = None, 1021s _stacktrace: TracebackType | None = None, 1021s ) -> Retry: 1021s """Return a new Retry object with incremented retry counters. 1021s 1021s :param response: A response object, or None, if the server did not 1021s return a response. 1021s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1021s :param Exception error: An error encountered during the request, or 1021s None if the response was received successfully. 1021s 1021s :return: A new ``Retry`` object. 1021s """ 1021s if self.total is False and error: 1021s # Disabled, indicate to re-raise the error. 1021s raise reraise(type(error), error, _stacktrace) 1021s 1021s total = self.total 1021s if total is not None: 1021s total -= 1 1021s 1021s connect = self.connect 1021s read = self.read 1021s redirect = self.redirect 1021s status_count = self.status 1021s other = self.other 1021s cause = "unknown" 1021s status = None 1021s redirect_location = None 1021s 1021s if error and self._is_connection_error(error): 1021s # Connect retry? 1021s if connect is False: 1021s raise reraise(type(error), error, _stacktrace) 1021s elif connect is not None: 1021s connect -= 1 1021s 1021s elif error and self._is_read_error(error): 1021s # Read retry? 1021s if read is False or method is None or not self._is_method_retryable(method): 1021s raise reraise(type(error), error, _stacktrace) 1021s elif read is not None: 1021s read -= 1 1021s 1021s elif error: 1021s # Other retry? 1021s if other is not None: 1021s other -= 1 1021s 1021s elif response and response.get_redirect_location(): 1021s # Redirect retry? 1021s if redirect is not None: 1021s redirect -= 1 1021s cause = "too many redirects" 1021s response_redirect_location = response.get_redirect_location() 1021s if response_redirect_location: 1021s redirect_location = response_redirect_location 1021s status = response.status 1021s 1021s else: 1021s # Incrementing because of a server error like a 500 in 1021s # status_forcelist and the given method is in the allowed_methods 1021s cause = ResponseError.GENERIC_ERROR 1021s if response and response.status: 1021s if status_count is not None: 1021s status_count -= 1 1021s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1021s status = response.status 1021s 1021s history = self.history + ( 1021s RequestHistory(method, url, error, status, redirect_location), 1021s ) 1021s 1021s new_retry = self.new( 1021s total=total, 1021s connect=connect, 1021s read=read, 1021s redirect=redirect, 1021s status=status_count, 1021s other=other, 1021s history=history, 1021s ) 1021s 1021s if new_retry.is_exhausted(): 1021s reason = error or ResponseError(cause) 1021s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1021s 1021s During handling of the above exception, another exception occurred: 1021s 1021s def test_simple(): 1021s > enc = tiktoken.get_encoding("gpt2") 1021s 1021s tests/test_encoding.py:15: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1021s enc = Encoding(**constructor()) 1021s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 1021s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 1021s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1021s contents = read_file(blobpath) 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1021s resp = requests.get(blobpath) 1021s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1021s return request("get", url, params=params, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1021s return session.request(method=method, url=url, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1021s resp = self.send(prep, **send_kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1021s r = adapter.send(request, **kwargs) 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s except (ProtocolError, OSError) as err: 1021s raise ConnectionError(err, request=request) 1021s 1021s except MaxRetryError as e: 1021s if isinstance(e.reason, ConnectTimeoutError): 1021s # TODO: Remove this in 3.0.0: see #2811 1021s if not isinstance(e.reason, NewConnectionError): 1021s raise ConnectTimeout(e, request=request) 1021s 1021s if isinstance(e.reason, ResponseError): 1021s raise RetryError(e, request=request) 1021s 1021s if isinstance(e.reason, _ProxyError): 1021s raise ProxyError(e, request=request) 1021s 1021s if isinstance(e.reason, _SSLError): 1021s # This branch is for urllib3 v1.22 and later. 1021s raise SSLError(e, request=request) 1021s 1021s > raise ConnectionError(e, request=request) 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1021s _____________________________ test_simple_repeated _____________________________ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s > sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1021s raise err 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1021s source_address = None, socket_options = [(6, 1, 1)] 1021s 1021s def create_connection( 1021s address: tuple[str, int], 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s source_address: tuple[str, int] | None = None, 1021s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1021s ) -> socket.socket: 1021s """Connect to *address* and return the socket object. 1021s 1021s Convenience function. Connect to *address* (a 2-tuple ``(host, 1021s port)``) and return the socket object. Passing the optional 1021s *timeout* parameter will set the timeout on the socket instance 1021s before attempting to connect. If no *timeout* is supplied, the 1021s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1021s is used. If *source_address* is set it must be a tuple of (host, port) 1021s for the socket to bind as a source address before making the connection. 1021s An host of '' or port 0 tells the OS to use the default. 1021s """ 1021s 1021s host, port = address 1021s if host.startswith("["): 1021s host = host.strip("[]") 1021s err = None 1021s 1021s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1021s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1021s # The original create_connection function always returns all records. 1021s family = allowed_gai_family() 1021s 1021s try: 1021s host.encode("idna") 1021s except UnicodeError: 1021s raise LocationParseError(f"'{host}', label empty or too long") from None 1021s 1021s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1021s af, socktype, proto, canonname, sa = res 1021s sock = None 1021s try: 1021s sock = socket.socket(af, socktype, proto) 1021s 1021s # If provided, set socket level options before connecting. 1021s _set_socket_options(sock, socket_options) 1021s 1021s if timeout is not _DEFAULT_TIMEOUT: 1021s sock.settimeout(timeout) 1021s if source_address: 1021s sock.bind(source_address) 1021s > sock.connect(sa) 1021s E ConnectionRefusedError: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 1021s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1021s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s redirect = False, assert_same_host = False 1021s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1021s release_conn = False, chunked = False, body_pos = None, preload_content = False 1021s decode_content = False, response_kw = {} 1021s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 1021s destination_scheme = None, conn = None, release_this_conn = True 1021s http_tunnel_required = False, err = None, clean_exit = False 1021s 1021s def urlopen( # type: ignore[override] 1021s self, 1021s method: str, 1021s url: str, 1021s body: _TYPE_BODY | None = None, 1021s headers: typing.Mapping[str, str] | None = None, 1021s retries: Retry | bool | int | None = None, 1021s redirect: bool = True, 1021s assert_same_host: bool = True, 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s pool_timeout: int | None = None, 1021s release_conn: bool | None = None, 1021s chunked: bool = False, 1021s body_pos: _TYPE_BODY_POSITION | None = None, 1021s preload_content: bool = True, 1021s decode_content: bool = True, 1021s **response_kw: typing.Any, 1021s ) -> BaseHTTPResponse: 1021s """ 1021s Get a connection from the pool and perform an HTTP request. This is the 1021s lowest level call for making a request, so you'll need to specify all 1021s the raw details. 1021s 1021s .. note:: 1021s 1021s More commonly, it's appropriate to use a convenience method 1021s such as :meth:`request`. 1021s 1021s .. note:: 1021s 1021s `release_conn` will only behave as expected if 1021s `preload_content=False` because we want to make 1021s `preload_content=False` the default behaviour someday soon without 1021s breaking backwards compatibility. 1021s 1021s :param method: 1021s HTTP request method (such as GET, POST, PUT, etc.) 1021s 1021s :param url: 1021s The URL to perform the request on. 1021s 1021s :param body: 1021s Data to send in the request body, either :class:`str`, :class:`bytes`, 1021s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1021s 1021s :param headers: 1021s Dictionary of custom headers to send, such as User-Agent, 1021s If-None-Match, etc. If None, pool headers are used. If provided, 1021s these headers completely replace any pool-specific headers. 1021s 1021s :param retries: 1021s Configure the number of retries to allow before raising a 1021s :class:`~urllib3.exceptions.MaxRetryError` exception. 1021s 1021s Pass ``None`` to retry until you receive a response. Pass a 1021s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1021s over different types of retries. 1021s Pass an integer number to retry connection errors that many times, 1021s but no other types of errors. Pass zero to never retry. 1021s 1021s If ``False``, then retries are disabled and any exception is raised 1021s immediately. Also, instead of raising a MaxRetryError on redirects, 1021s the redirect response will be returned. 1021s 1021s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1021s 1021s :param redirect: 1021s If True, automatically handle redirects (status codes 301, 302, 1021s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1021s will disable redirect, too. 1021s 1021s :param assert_same_host: 1021s If ``True``, will make sure that the host of the pool requests is 1021s consistent else will raise HostChangedError. When ``False``, you can 1021s use the pool on an HTTP proxy and request foreign hosts. 1021s 1021s :param timeout: 1021s If specified, overrides the default timeout for this one 1021s request. It may be a float (in seconds) or an instance of 1021s :class:`urllib3.util.Timeout`. 1021s 1021s :param pool_timeout: 1021s If set and the pool is set to block=True, then this method will 1021s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1021s connection is available within the time period. 1021s 1021s :param bool preload_content: 1021s If True, the response's body will be preloaded into memory. 1021s 1021s :param bool decode_content: 1021s If True, will attempt to decode the body based on the 1021s 'content-encoding' header. 1021s 1021s :param release_conn: 1021s If False, then the urlopen call will not release the connection 1021s back into the pool once a response is received (but will release if 1021s you read the entire contents of the response such as when 1021s `preload_content=True`). This is useful if you're not preloading 1021s the response's content immediately. You will need to call 1021s ``r.release_conn()`` on the response ``r`` to return the connection 1021s back into the pool. If None, it takes the value of ``preload_content`` 1021s which defaults to ``True``. 1021s 1021s :param bool chunked: 1021s If True, urllib3 will send the body using chunked transfer 1021s encoding. Otherwise, urllib3 will send the body using the standard 1021s content-length form. Defaults to False. 1021s 1021s :param int body_pos: 1021s Position to seek to in file-like body in the event of a retry or 1021s redirect. Typically this won't need to be set because urllib3 will 1021s auto-populate the value when needed. 1021s """ 1021s parsed_url = parse_url(url) 1021s destination_scheme = parsed_url.scheme 1021s 1021s if headers is None: 1021s headers = self.headers 1021s 1021s if not isinstance(retries, Retry): 1021s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1021s 1021s if release_conn is None: 1021s release_conn = preload_content 1021s 1021s # Check host 1021s if assert_same_host and not self.is_same_host(url): 1021s raise HostChangedError(self, url, retries) 1021s 1021s # Ensure that the URL we're connecting to is properly encoded 1021s if url.startswith("/"): 1021s url = to_str(_encode_target(url)) 1021s else: 1021s url = to_str(parsed_url.url) 1021s 1021s conn = None 1021s 1021s # Track whether `conn` needs to be released before 1021s # returning/raising/recursing. Update this variable if necessary, and 1021s # leave `release_conn` constant throughout the function. That way, if 1021s # the function recurses, the original value of `release_conn` will be 1021s # passed down into the recursive call, and its value will be respected. 1021s # 1021s # See issue #651 [1] for details. 1021s # 1021s # [1] 1021s release_this_conn = release_conn 1021s 1021s http_tunnel_required = connection_requires_http_tunnel( 1021s self.proxy, self.proxy_config, destination_scheme 1021s ) 1021s 1021s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1021s # have to copy the headers dict so we can safely change it without those 1021s # changes being reflected in anyone else's copy. 1021s if not http_tunnel_required: 1021s headers = headers.copy() # type: ignore[attr-defined] 1021s headers.update(self.proxy_headers) # type: ignore[union-attr] 1021s 1021s # Must keep the exception bound to a separate variable or else Python 3 1021s # complains about UnboundLocalError. 1021s err = None 1021s 1021s # Keep track of whether we cleanly exited the except block. This 1021s # ensures we do proper cleanup in finally. 1021s clean_exit = False 1021s 1021s # Rewind body position, if needed. Record current position 1021s # for future rewinds in the event of a redirect/retry. 1021s body_pos = set_file_position(body, body_pos) 1021s 1021s try: 1021s # Request a connection from the queue. 1021s timeout_obj = self._get_timeout(timeout) 1021s conn = self._get_conn(timeout=pool_timeout) 1021s 1021s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1021s 1021s # Is this a closed/new connection that requires CONNECT tunnelling? 1021s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1021s try: 1021s self._prepare_proxy(conn) 1021s except (BaseSSLError, OSError, SocketTimeout) as e: 1021s self._raise_timeout( 1021s err=e, url=self.proxy.url, timeout_value=conn.timeout 1021s ) 1021s raise 1021s 1021s # If we're going to release the connection in ``finally:``, then 1021s # the response doesn't need to know about the connection. Otherwise 1021s # it will also try to release it and we'll have a double-release 1021s # mess. 1021s response_conn = conn if not release_conn else None 1021s 1021s # Make the request on the HTTPConnection object 1021s > response = self._make_request( 1021s conn, 1021s method, 1021s url, 1021s timeout=timeout_obj, 1021s body=body, 1021s headers=headers, 1021s chunked=chunked, 1021s retries=retries, 1021s response_conn=response_conn, 1021s preload_content=preload_content, 1021s decode_content=decode_content, 1021s **response_kw, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1021s raise new_e 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1021s self._validate_conn(conn) 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1021s conn.connect() 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1021s self.sock = sock = self._new_conn() 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s except socket.gaierror as e: 1021s raise NameResolutionError(self.host, self, e) from e 1021s except SocketTimeout as e: 1021s raise ConnectTimeoutError( 1021s self, 1021s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1021s ) from e 1021s 1021s except OSError as e: 1021s > raise NewConnectionError( 1021s self, f"Failed to establish a new connection: {e}" 1021s ) from e 1021s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s > resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1021s retries = retries.increment( 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 1021s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1021s _pool = 1021s _stacktrace = 1021s 1021s def increment( 1021s self, 1021s method: str | None = None, 1021s url: str | None = None, 1021s response: BaseHTTPResponse | None = None, 1021s error: Exception | None = None, 1021s _pool: ConnectionPool | None = None, 1021s _stacktrace: TracebackType | None = None, 1021s ) -> Retry: 1021s """Return a new Retry object with incremented retry counters. 1021s 1021s :param response: A response object, or None, if the server did not 1021s return a response. 1021s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1021s :param Exception error: An error encountered during the request, or 1021s None if the response was received successfully. 1021s 1021s :return: A new ``Retry`` object. 1021s """ 1021s if self.total is False and error: 1021s # Disabled, indicate to re-raise the error. 1021s raise reraise(type(error), error, _stacktrace) 1021s 1021s total = self.total 1021s if total is not None: 1021s total -= 1 1021s 1021s connect = self.connect 1021s read = self.read 1021s redirect = self.redirect 1021s status_count = self.status 1021s other = self.other 1021s cause = "unknown" 1021s status = None 1021s redirect_location = None 1021s 1021s if error and self._is_connection_error(error): 1021s # Connect retry? 1021s if connect is False: 1021s raise reraise(type(error), error, _stacktrace) 1021s elif connect is not None: 1021s connect -= 1 1021s 1021s elif error and self._is_read_error(error): 1021s # Read retry? 1021s if read is False or method is None or not self._is_method_retryable(method): 1021s raise reraise(type(error), error, _stacktrace) 1021s elif read is not None: 1021s read -= 1 1021s 1021s elif error: 1021s # Other retry? 1021s if other is not None: 1021s other -= 1 1021s 1021s elif response and response.get_redirect_location(): 1021s # Redirect retry? 1021s if redirect is not None: 1021s redirect -= 1 1021s cause = "too many redirects" 1021s response_redirect_location = response.get_redirect_location() 1021s if response_redirect_location: 1021s redirect_location = response_redirect_location 1021s status = response.status 1021s 1021s else: 1021s # Incrementing because of a server error like a 500 in 1021s # status_forcelist and the given method is in the allowed_methods 1021s cause = ResponseError.GENERIC_ERROR 1021s if response and response.status: 1021s if status_count is not None: 1021s status_count -= 1 1021s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1021s status = response.status 1021s 1021s history = self.history + ( 1021s RequestHistory(method, url, error, status, redirect_location), 1021s ) 1021s 1021s new_retry = self.new( 1021s total=total, 1021s connect=connect, 1021s read=read, 1021s redirect=redirect, 1021s status=status_count, 1021s other=other, 1021s history=history, 1021s ) 1021s 1021s if new_retry.is_exhausted(): 1021s reason = error or ResponseError(cause) 1021s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1021s 1021s During handling of the above exception, another exception occurred: 1021s 1021s def test_simple_repeated(): 1021s > enc = tiktoken.get_encoding("gpt2") 1021s 1021s tests/test_encoding.py:32: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1021s enc = Encoding(**constructor()) 1021s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 1021s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 1021s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1021s contents = read_file(blobpath) 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1021s resp = requests.get(blobpath) 1021s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1021s return request("get", url, params=params, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1021s return session.request(method=method, url=url, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1021s resp = self.send(prep, **send_kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1021s r = adapter.send(request, **kwargs) 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s except (ProtocolError, OSError) as err: 1021s raise ConnectionError(err, request=request) 1021s 1021s except MaxRetryError as e: 1021s if isinstance(e.reason, ConnectTimeoutError): 1021s # TODO: Remove this in 3.0.0: see #2811 1021s if not isinstance(e.reason, NewConnectionError): 1021s raise ConnectTimeout(e, request=request) 1021s 1021s if isinstance(e.reason, ResponseError): 1021s raise RetryError(e, request=request) 1021s 1021s if isinstance(e.reason, _ProxyError): 1021s raise ProxyError(e, request=request) 1021s 1021s if isinstance(e.reason, _SSLError): 1021s # This branch is for urllib3 v1.22 and later. 1021s raise SSLError(e, request=request) 1021s 1021s > raise ConnectionError(e, request=request) 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1021s ______________________________ test_simple_regex _______________________________ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s > sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1021s raise err 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1021s source_address = None, socket_options = [(6, 1, 1)] 1021s 1021s def create_connection( 1021s address: tuple[str, int], 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s source_address: tuple[str, int] | None = None, 1021s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1021s ) -> socket.socket: 1021s """Connect to *address* and return the socket object. 1021s 1021s Convenience function. Connect to *address* (a 2-tuple ``(host, 1021s port)``) and return the socket object. Passing the optional 1021s *timeout* parameter will set the timeout on the socket instance 1021s before attempting to connect. If no *timeout* is supplied, the 1021s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1021s is used. If *source_address* is set it must be a tuple of (host, port) 1021s for the socket to bind as a source address before making the connection. 1021s An host of '' or port 0 tells the OS to use the default. 1021s """ 1021s 1021s host, port = address 1021s if host.startswith("["): 1021s host = host.strip("[]") 1021s err = None 1021s 1021s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1021s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1021s # The original create_connection function always returns all records. 1021s family = allowed_gai_family() 1021s 1021s try: 1021s host.encode("idna") 1021s except UnicodeError: 1021s raise LocationParseError(f"'{host}', label empty or too long") from None 1021s 1021s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1021s af, socktype, proto, canonname, sa = res 1021s sock = None 1021s try: 1021s sock = socket.socket(af, socktype, proto) 1021s 1021s # If provided, set socket level options before connecting. 1021s _set_socket_options(sock, socket_options) 1021s 1021s if timeout is not _DEFAULT_TIMEOUT: 1021s sock.settimeout(timeout) 1021s if source_address: 1021s sock.bind(source_address) 1021s > sock.connect(sa) 1021s E ConnectionRefusedError: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 1021s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1021s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s redirect = False, assert_same_host = False 1021s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1021s release_conn = False, chunked = False, body_pos = None, preload_content = False 1021s decode_content = False, response_kw = {} 1021s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 1021s destination_scheme = None, conn = None, release_this_conn = True 1021s http_tunnel_required = False, err = None, clean_exit = False 1021s 1021s def urlopen( # type: ignore[override] 1021s self, 1021s method: str, 1021s url: str, 1021s body: _TYPE_BODY | None = None, 1021s headers: typing.Mapping[str, str] | None = None, 1021s retries: Retry | bool | int | None = None, 1021s redirect: bool = True, 1021s assert_same_host: bool = True, 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s pool_timeout: int | None = None, 1021s release_conn: bool | None = None, 1021s chunked: bool = False, 1021s body_pos: _TYPE_BODY_POSITION | None = None, 1021s preload_content: bool = True, 1021s decode_content: bool = True, 1021s **response_kw: typing.Any, 1021s ) -> BaseHTTPResponse: 1021s """ 1021s Get a connection from the pool and perform an HTTP request. This is the 1021s lowest level call for making a request, so you'll need to specify all 1021s the raw details. 1021s 1021s .. note:: 1021s 1021s More commonly, it's appropriate to use a convenience method 1021s such as :meth:`request`. 1021s 1021s .. note:: 1021s 1021s `release_conn` will only behave as expected if 1021s `preload_content=False` because we want to make 1021s `preload_content=False` the default behaviour someday soon without 1021s breaking backwards compatibility. 1021s 1021s :param method: 1021s HTTP request method (such as GET, POST, PUT, etc.) 1021s 1021s :param url: 1021s The URL to perform the request on. 1021s 1021s :param body: 1021s Data to send in the request body, either :class:`str`, :class:`bytes`, 1021s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1021s 1021s :param headers: 1021s Dictionary of custom headers to send, such as User-Agent, 1021s If-None-Match, etc. If None, pool headers are used. If provided, 1021s these headers completely replace any pool-specific headers. 1021s 1021s :param retries: 1021s Configure the number of retries to allow before raising a 1021s :class:`~urllib3.exceptions.MaxRetryError` exception. 1021s 1021s Pass ``None`` to retry until you receive a response. Pass a 1021s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1021s over different types of retries. 1021s Pass an integer number to retry connection errors that many times, 1021s but no other types of errors. Pass zero to never retry. 1021s 1021s If ``False``, then retries are disabled and any exception is raised 1021s immediately. Also, instead of raising a MaxRetryError on redirects, 1021s the redirect response will be returned. 1021s 1021s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1021s 1021s :param redirect: 1021s If True, automatically handle redirects (status codes 301, 302, 1021s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1021s will disable redirect, too. 1021s 1021s :param assert_same_host: 1021s If ``True``, will make sure that the host of the pool requests is 1021s consistent else will raise HostChangedError. When ``False``, you can 1021s use the pool on an HTTP proxy and request foreign hosts. 1021s 1021s :param timeout: 1021s If specified, overrides the default timeout for this one 1021s request. It may be a float (in seconds) or an instance of 1021s :class:`urllib3.util.Timeout`. 1021s 1021s :param pool_timeout: 1021s If set and the pool is set to block=True, then this method will 1021s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1021s connection is available within the time period. 1021s 1021s :param bool preload_content: 1021s If True, the response's body will be preloaded into memory. 1021s 1021s :param bool decode_content: 1021s If True, will attempt to decode the body based on the 1021s 'content-encoding' header. 1021s 1021s :param release_conn: 1021s If False, then the urlopen call will not release the connection 1021s back into the pool once a response is received (but will release if 1021s you read the entire contents of the response such as when 1021s `preload_content=True`). This is useful if you're not preloading 1021s the response's content immediately. You will need to call 1021s ``r.release_conn()`` on the response ``r`` to return the connection 1021s back into the pool. If None, it takes the value of ``preload_content`` 1021s which defaults to ``True``. 1021s 1021s :param bool chunked: 1021s If True, urllib3 will send the body using chunked transfer 1021s encoding. Otherwise, urllib3 will send the body using the standard 1021s content-length form. Defaults to False. 1021s 1021s :param int body_pos: 1021s Position to seek to in file-like body in the event of a retry or 1021s redirect. Typically this won't need to be set because urllib3 will 1021s auto-populate the value when needed. 1021s """ 1021s parsed_url = parse_url(url) 1021s destination_scheme = parsed_url.scheme 1021s 1021s if headers is None: 1021s headers = self.headers 1021s 1021s if not isinstance(retries, Retry): 1021s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1021s 1021s if release_conn is None: 1021s release_conn = preload_content 1021s 1021s # Check host 1021s if assert_same_host and not self.is_same_host(url): 1021s raise HostChangedError(self, url, retries) 1021s 1021s # Ensure that the URL we're connecting to is properly encoded 1021s if url.startswith("/"): 1021s url = to_str(_encode_target(url)) 1021s else: 1021s url = to_str(parsed_url.url) 1021s 1021s conn = None 1021s 1021s # Track whether `conn` needs to be released before 1021s # returning/raising/recursing. Update this variable if necessary, and 1021s # leave `release_conn` constant throughout the function. That way, if 1021s # the function recurses, the original value of `release_conn` will be 1021s # passed down into the recursive call, and its value will be respected. 1021s # 1021s # See issue #651 [1] for details. 1021s # 1021s # [1] 1021s release_this_conn = release_conn 1021s 1021s http_tunnel_required = connection_requires_http_tunnel( 1021s self.proxy, self.proxy_config, destination_scheme 1021s ) 1021s 1021s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1021s # have to copy the headers dict so we can safely change it without those 1021s # changes being reflected in anyone else's copy. 1021s if not http_tunnel_required: 1021s headers = headers.copy() # type: ignore[attr-defined] 1021s headers.update(self.proxy_headers) # type: ignore[union-attr] 1021s 1021s # Must keep the exception bound to a separate variable or else Python 3 1021s # complains about UnboundLocalError. 1021s err = None 1021s 1021s # Keep track of whether we cleanly exited the except block. This 1021s # ensures we do proper cleanup in finally. 1021s clean_exit = False 1021s 1021s # Rewind body position, if needed. Record current position 1021s # for future rewinds in the event of a redirect/retry. 1021s body_pos = set_file_position(body, body_pos) 1021s 1021s try: 1021s # Request a connection from the queue. 1021s timeout_obj = self._get_timeout(timeout) 1021s conn = self._get_conn(timeout=pool_timeout) 1021s 1021s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1021s 1021s # Is this a closed/new connection that requires CONNECT tunnelling? 1021s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1021s try: 1021s self._prepare_proxy(conn) 1021s except (BaseSSLError, OSError, SocketTimeout) as e: 1021s self._raise_timeout( 1021s err=e, url=self.proxy.url, timeout_value=conn.timeout 1021s ) 1021s raise 1021s 1021s # If we're going to release the connection in ``finally:``, then 1021s # the response doesn't need to know about the connection. Otherwise 1021s # it will also try to release it and we'll have a double-release 1021s # mess. 1021s response_conn = conn if not release_conn else None 1021s 1021s # Make the request on the HTTPConnection object 1021s > response = self._make_request( 1021s conn, 1021s method, 1021s url, 1021s timeout=timeout_obj, 1021s body=body, 1021s headers=headers, 1021s chunked=chunked, 1021s retries=retries, 1021s response_conn=response_conn, 1021s preload_content=preload_content, 1021s decode_content=decode_content, 1021s **response_kw, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1021s raise new_e 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1021s self._validate_conn(conn) 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1021s conn.connect() 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1021s self.sock = sock = self._new_conn() 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s except socket.gaierror as e: 1021s raise NameResolutionError(self.host, self, e) from e 1021s except SocketTimeout as e: 1021s raise ConnectTimeoutError( 1021s self, 1021s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1021s ) from e 1021s 1021s except OSError as e: 1021s > raise NewConnectionError( 1021s self, f"Failed to establish a new connection: {e}" 1021s ) from e 1021s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s > resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1021s retries = retries.increment( 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 1021s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1021s _pool = 1021s _stacktrace = 1021s 1021s def increment( 1021s self, 1021s method: str | None = None, 1021s url: str | None = None, 1021s response: BaseHTTPResponse | None = None, 1021s error: Exception | None = None, 1021s _pool: ConnectionPool | None = None, 1021s _stacktrace: TracebackType | None = None, 1021s ) -> Retry: 1021s """Return a new Retry object with incremented retry counters. 1021s 1021s :param response: A response object, or None, if the server did not 1021s return a response. 1021s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1021s :param Exception error: An error encountered during the request, or 1021s None if the response was received successfully. 1021s 1021s :return: A new ``Retry`` object. 1021s """ 1021s if self.total is False and error: 1021s # Disabled, indicate to re-raise the error. 1021s raise reraise(type(error), error, _stacktrace) 1021s 1021s total = self.total 1021s if total is not None: 1021s total -= 1 1021s 1021s connect = self.connect 1021s read = self.read 1021s redirect = self.redirect 1021s status_count = self.status 1021s other = self.other 1021s cause = "unknown" 1021s status = None 1021s redirect_location = None 1021s 1021s if error and self._is_connection_error(error): 1021s # Connect retry? 1021s if connect is False: 1021s raise reraise(type(error), error, _stacktrace) 1021s elif connect is not None: 1021s connect -= 1 1021s 1021s elif error and self._is_read_error(error): 1021s # Read retry? 1021s if read is False or method is None or not self._is_method_retryable(method): 1021s raise reraise(type(error), error, _stacktrace) 1021s elif read is not None: 1021s read -= 1 1021s 1021s elif error: 1021s # Other retry? 1021s if other is not None: 1021s other -= 1 1021s 1021s elif response and response.get_redirect_location(): 1021s # Redirect retry? 1021s if redirect is not None: 1021s redirect -= 1 1021s cause = "too many redirects" 1021s response_redirect_location = response.get_redirect_location() 1021s if response_redirect_location: 1021s redirect_location = response_redirect_location 1021s status = response.status 1021s 1021s else: 1021s # Incrementing because of a server error like a 500 in 1021s # status_forcelist and the given method is in the allowed_methods 1021s cause = ResponseError.GENERIC_ERROR 1021s if response and response.status: 1021s if status_count is not None: 1021s status_count -= 1 1021s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1021s status = response.status 1021s 1021s history = self.history + ( 1021s RequestHistory(method, url, error, status, redirect_location), 1021s ) 1021s 1021s new_retry = self.new( 1021s total=total, 1021s connect=connect, 1021s read=read, 1021s redirect=redirect, 1021s status=status_count, 1021s other=other, 1021s history=history, 1021s ) 1021s 1021s if new_retry.is_exhausted(): 1021s reason = error or ResponseError(cause) 1021s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1021s 1021s During handling of the above exception, another exception occurred: 1021s 1021s def test_simple_regex(): 1021s > enc = tiktoken.get_encoding("cl100k_base") 1021s 1021s tests/test_encoding.py:53: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1021s enc = Encoding(**constructor()) 1021s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 1021s mergeable_ranks = load_tiktoken_bpe( 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1021s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1021s contents = read_file(blobpath) 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1021s resp = requests.get(blobpath) 1021s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1021s return request("get", url, params=params, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1021s return session.request(method=method, url=url, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1021s resp = self.send(prep, **send_kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1021s r = adapter.send(request, **kwargs) 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s except (ProtocolError, OSError) as err: 1021s raise ConnectionError(err, request=request) 1021s 1021s except MaxRetryError as e: 1021s if isinstance(e.reason, ConnectTimeoutError): 1021s # TODO: Remove this in 3.0.0: see #2811 1021s if not isinstance(e.reason, NewConnectionError): 1021s raise ConnectTimeout(e, request=request) 1021s 1021s if isinstance(e.reason, ResponseError): 1021s raise RetryError(e, request=request) 1021s 1021s if isinstance(e.reason, _ProxyError): 1021s raise ProxyError(e, request=request) 1021s 1021s if isinstance(e.reason, _SSLError): 1021s # This branch is for urllib3 v1.22 and later. 1021s raise SSLError(e, request=request) 1021s 1021s > raise ConnectionError(e, request=request) 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1021s ______________________________ test_basic_encode _______________________________ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s > sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1021s raise err 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1021s source_address = None, socket_options = [(6, 1, 1)] 1021s 1021s def create_connection( 1021s address: tuple[str, int], 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s source_address: tuple[str, int] | None = None, 1021s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1021s ) -> socket.socket: 1021s """Connect to *address* and return the socket object. 1021s 1021s Convenience function. Connect to *address* (a 2-tuple ``(host, 1021s port)``) and return the socket object. Passing the optional 1021s *timeout* parameter will set the timeout on the socket instance 1021s before attempting to connect. If no *timeout* is supplied, the 1021s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1021s is used. If *source_address* is set it must be a tuple of (host, port) 1021s for the socket to bind as a source address before making the connection. 1021s An host of '' or port 0 tells the OS to use the default. 1021s """ 1021s 1021s host, port = address 1021s if host.startswith("["): 1021s host = host.strip("[]") 1021s err = None 1021s 1021s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1021s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1021s # The original create_connection function always returns all records. 1021s family = allowed_gai_family() 1021s 1021s try: 1021s host.encode("idna") 1021s except UnicodeError: 1021s raise LocationParseError(f"'{host}', label empty or too long") from None 1021s 1021s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1021s af, socktype, proto, canonname, sa = res 1021s sock = None 1021s try: 1021s sock = socket.socket(af, socktype, proto) 1021s 1021s # If provided, set socket level options before connecting. 1021s _set_socket_options(sock, socket_options) 1021s 1021s if timeout is not _DEFAULT_TIMEOUT: 1021s sock.settimeout(timeout) 1021s if source_address: 1021s sock.bind(source_address) 1021s > sock.connect(sa) 1021s E ConnectionRefusedError: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 1021s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1021s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s redirect = False, assert_same_host = False 1021s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1021s release_conn = False, chunked = False, body_pos = None, preload_content = False 1021s decode_content = False, response_kw = {} 1021s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 1021s destination_scheme = None, conn = None, release_this_conn = True 1021s http_tunnel_required = False, err = None, clean_exit = False 1021s 1021s def urlopen( # type: ignore[override] 1021s self, 1021s method: str, 1021s url: str, 1021s body: _TYPE_BODY | None = None, 1021s headers: typing.Mapping[str, str] | None = None, 1021s retries: Retry | bool | int | None = None, 1021s redirect: bool = True, 1021s assert_same_host: bool = True, 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s pool_timeout: int | None = None, 1021s release_conn: bool | None = None, 1021s chunked: bool = False, 1021s body_pos: _TYPE_BODY_POSITION | None = None, 1021s preload_content: bool = True, 1021s decode_content: bool = True, 1021s **response_kw: typing.Any, 1021s ) -> BaseHTTPResponse: 1021s """ 1021s Get a connection from the pool and perform an HTTP request. This is the 1021s lowest level call for making a request, so you'll need to specify all 1021s the raw details. 1021s 1021s .. note:: 1021s 1021s More commonly, it's appropriate to use a convenience method 1021s such as :meth:`request`. 1021s 1021s .. note:: 1021s 1021s `release_conn` will only behave as expected if 1021s `preload_content=False` because we want to make 1021s `preload_content=False` the default behaviour someday soon without 1021s breaking backwards compatibility. 1021s 1021s :param method: 1021s HTTP request method (such as GET, POST, PUT, etc.) 1021s 1021s :param url: 1021s The URL to perform the request on. 1021s 1021s :param body: 1021s Data to send in the request body, either :class:`str`, :class:`bytes`, 1021s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1021s 1021s :param headers: 1021s Dictionary of custom headers to send, such as User-Agent, 1021s If-None-Match, etc. If None, pool headers are used. If provided, 1021s these headers completely replace any pool-specific headers. 1021s 1021s :param retries: 1021s Configure the number of retries to allow before raising a 1021s :class:`~urllib3.exceptions.MaxRetryError` exception. 1021s 1021s Pass ``None`` to retry until you receive a response. Pass a 1021s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1021s over different types of retries. 1021s Pass an integer number to retry connection errors that many times, 1021s but no other types of errors. Pass zero to never retry. 1021s 1021s If ``False``, then retries are disabled and any exception is raised 1021s immediately. Also, instead of raising a MaxRetryError on redirects, 1021s the redirect response will be returned. 1021s 1021s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1021s 1021s :param redirect: 1021s If True, automatically handle redirects (status codes 301, 302, 1021s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1021s will disable redirect, too. 1021s 1021s :param assert_same_host: 1021s If ``True``, will make sure that the host of the pool requests is 1021s consistent else will raise HostChangedError. When ``False``, you can 1021s use the pool on an HTTP proxy and request foreign hosts. 1021s 1021s :param timeout: 1021s If specified, overrides the default timeout for this one 1021s request. It may be a float (in seconds) or an instance of 1021s :class:`urllib3.util.Timeout`. 1021s 1021s :param pool_timeout: 1021s If set and the pool is set to block=True, then this method will 1021s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1021s connection is available within the time period. 1021s 1021s :param bool preload_content: 1021s If True, the response's body will be preloaded into memory. 1021s 1021s :param bool decode_content: 1021s If True, will attempt to decode the body based on the 1021s 'content-encoding' header. 1021s 1021s :param release_conn: 1021s If False, then the urlopen call will not release the connection 1021s back into the pool once a response is received (but will release if 1021s you read the entire contents of the response such as when 1021s `preload_content=True`). This is useful if you're not preloading 1021s the response's content immediately. You will need to call 1021s ``r.release_conn()`` on the response ``r`` to return the connection 1021s back into the pool. If None, it takes the value of ``preload_content`` 1021s which defaults to ``True``. 1021s 1021s :param bool chunked: 1021s If True, urllib3 will send the body using chunked transfer 1021s encoding. Otherwise, urllib3 will send the body using the standard 1021s content-length form. Defaults to False. 1021s 1021s :param int body_pos: 1021s Position to seek to in file-like body in the event of a retry or 1021s redirect. Typically this won't need to be set because urllib3 will 1021s auto-populate the value when needed. 1021s """ 1021s parsed_url = parse_url(url) 1021s destination_scheme = parsed_url.scheme 1021s 1021s if headers is None: 1021s headers = self.headers 1021s 1021s if not isinstance(retries, Retry): 1021s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1021s 1021s if release_conn is None: 1021s release_conn = preload_content 1021s 1021s # Check host 1021s if assert_same_host and not self.is_same_host(url): 1021s raise HostChangedError(self, url, retries) 1021s 1021s # Ensure that the URL we're connecting to is properly encoded 1021s if url.startswith("/"): 1021s url = to_str(_encode_target(url)) 1021s else: 1021s url = to_str(parsed_url.url) 1021s 1021s conn = None 1021s 1021s # Track whether `conn` needs to be released before 1021s # returning/raising/recursing. Update this variable if necessary, and 1021s # leave `release_conn` constant throughout the function. That way, if 1021s # the function recurses, the original value of `release_conn` will be 1021s # passed down into the recursive call, and its value will be respected. 1021s # 1021s # See issue #651 [1] for details. 1021s # 1021s # [1] 1021s release_this_conn = release_conn 1021s 1021s http_tunnel_required = connection_requires_http_tunnel( 1021s self.proxy, self.proxy_config, destination_scheme 1021s ) 1021s 1021s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1021s # have to copy the headers dict so we can safely change it without those 1021s # changes being reflected in anyone else's copy. 1021s if not http_tunnel_required: 1021s headers = headers.copy() # type: ignore[attr-defined] 1021s headers.update(self.proxy_headers) # type: ignore[union-attr] 1021s 1021s # Must keep the exception bound to a separate variable or else Python 3 1021s # complains about UnboundLocalError. 1021s err = None 1021s 1021s # Keep track of whether we cleanly exited the except block. This 1021s # ensures we do proper cleanup in finally. 1021s clean_exit = False 1021s 1021s # Rewind body position, if needed. Record current position 1021s # for future rewinds in the event of a redirect/retry. 1021s body_pos = set_file_position(body, body_pos) 1021s 1021s try: 1021s # Request a connection from the queue. 1021s timeout_obj = self._get_timeout(timeout) 1021s conn = self._get_conn(timeout=pool_timeout) 1021s 1021s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1021s 1021s # Is this a closed/new connection that requires CONNECT tunnelling? 1021s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1021s try: 1021s self._prepare_proxy(conn) 1021s except (BaseSSLError, OSError, SocketTimeout) as e: 1021s self._raise_timeout( 1021s err=e, url=self.proxy.url, timeout_value=conn.timeout 1021s ) 1021s raise 1021s 1021s # If we're going to release the connection in ``finally:``, then 1021s # the response doesn't need to know about the connection. Otherwise 1021s # it will also try to release it and we'll have a double-release 1021s # mess. 1021s response_conn = conn if not release_conn else None 1021s 1021s # Make the request on the HTTPConnection object 1021s > response = self._make_request( 1021s conn, 1021s method, 1021s url, 1021s timeout=timeout_obj, 1021s body=body, 1021s headers=headers, 1021s chunked=chunked, 1021s retries=retries, 1021s response_conn=response_conn, 1021s preload_content=preload_content, 1021s decode_content=decode_content, 1021s **response_kw, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1021s raise new_e 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1021s self._validate_conn(conn) 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1021s conn.connect() 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1021s self.sock = sock = self._new_conn() 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s except socket.gaierror as e: 1021s raise NameResolutionError(self.host, self, e) from e 1021s except SocketTimeout as e: 1021s raise ConnectTimeoutError( 1021s self, 1021s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1021s ) from e 1021s 1021s except OSError as e: 1021s > raise NewConnectionError( 1021s self, f"Failed to establish a new connection: {e}"E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.e6n6Yl/autopkgtest_tmp/build; python3.12 -m pytest tests 1021s pybuild-autopkgtest: error: pybuild --autopkgtest --test-pytest -i python{version} -p "3.13 3.12" returned exit code 13 1021s make: *** [/tmp/B7FZkYBCDj/run:4: pybuild-autopkgtest] Error 25 1021s pybuild-autopkgtest: error: /tmp/B7FZkYBCDj/run pybuild-autopkgtest returned exit code 2 1021s 1021s ) from e 1021s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s > resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1021s retries = retries.increment( 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 1021s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1021s _pool = 1021s _stacktrace = 1021s 1021s def increment( 1021s self, 1021s method: str | None = None, 1021s url: str | None = None, 1021s response: BaseHTTPResponse | None = None, 1021s error: Exception | None = None, 1021s _pool: ConnectionPool | None = None, 1021s _stacktrace: TracebackType | None = None, 1021s ) -> Retry: 1021s """Return a new Retry object with incremented retry counters. 1021s 1021s :param response: A response object, or None, if the server did not 1021s return a response. 1021s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1021s :param Exception error: An error encountered during the request, or 1021s None if the response was received successfully. 1021s 1021s :return: A new ``Retry`` object. 1021s """ 1021s if self.total is False and error: 1021s # Disabled, indicate to re-raise the error. 1021s raise reraise(type(error), error, _stacktrace) 1021s 1021s total = self.total 1021s if total is not None: 1021s total -= 1 1021s 1021s connect = self.connect 1021s read = self.read 1021s redirect = self.redirect 1021s status_count = self.status 1021s other = self.other 1021s cause = "unknown" 1021s status = None 1021s redirect_location = None 1021s 1021s if error and self._is_connection_error(error): 1021s # Connect retry? 1021s if connect is False: 1021s raise reraise(type(error), error, _stacktrace) 1021s elif connect is not None: 1021s connect -= 1 1021s 1021s elif error and self._is_read_error(error): 1021s # Read retry? 1021s if read is False or method is None or not self._is_method_retryable(method): 1021s raise reraise(type(error), error, _stacktrace) 1021s elif read is not None: 1021s read -= 1 1021s 1021s elif error: 1021s # Other retry? 1021s if other is not None: 1021s other -= 1 1021s 1021s elif response and response.get_redirect_location(): 1021s # Redirect retry? 1021s if redirect is not None: 1021s redirect -= 1 1021s cause = "too many redirects" 1021s response_redirect_location = response.get_redirect_location() 1021s if response_redirect_location: 1021s redirect_location = response_redirect_location 1021s status = response.status 1021s 1021s else: 1021s # Incrementing because of a server error like a 500 in 1021s # status_forcelist and the given method is in the allowed_methods 1021s cause = ResponseError.GENERIC_ERROR 1021s if response and response.status: 1021s if status_count is not None: 1021s status_count -= 1 1021s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1021s status = response.status 1021s 1021s history = self.history + ( 1021s RequestHistory(method, url, error, status, redirect_location), 1021s ) 1021s 1021s new_retry = self.new( 1021s total=total, 1021s connect=connect, 1021s read=read, 1021s redirect=redirect, 1021s status=status_count, 1021s other=other, 1021s history=history, 1021s ) 1021s 1021s if new_retry.is_exhausted(): 1021s reason = error or ResponseError(cause) 1021s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1021s 1021s During handling of the above exception, another exception occurred: 1021s 1021s def test_basic_encode(): 1021s > enc = tiktoken.get_encoding("r50k_base") 1021s 1021s tests/test_encoding.py:62: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1021s enc = Encoding(**constructor()) 1021s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 1021s mergeable_ranks = load_tiktoken_bpe( 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1021s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1021s contents = read_file(blobpath) 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1021s resp = requests.get(blobpath) 1021s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1021s return request("get", url, params=params, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1021s return session.request(method=method, url=url, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1021s resp = self.send(prep, **send_kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1021s r = adapter.send(request, **kwargs) 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s except (ProtocolError, OSError) as err: 1021s raise ConnectionError(err, request=request) 1021s 1021s except MaxRetryError as e: 1021s if isinstance(e.reason, ConnectTimeoutError): 1021s # TODO: Remove this in 3.0.0: see #2811 1021s if not isinstance(e.reason, NewConnectionError): 1021s raise ConnectTimeout(e, request=request) 1021s 1021s if isinstance(e.reason, ResponseError): 1021s raise RetryError(e, request=request) 1021s 1021s if isinstance(e.reason, _ProxyError): 1021s raise ProxyError(e, request=request) 1021s 1021s if isinstance(e.reason, _SSLError): 1021s # This branch is for urllib3 v1.22 and later. 1021s raise SSLError(e, request=request) 1021s 1021s > raise ConnectionError(e, request=request) 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1021s ______________________________ test_encode_empty _______________________________ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s > sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1021s raise err 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1021s source_address = None, socket_options = [(6, 1, 1)] 1021s 1021s def create_connection( 1021s address: tuple[str, int], 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s source_address: tuple[str, int] | None = None, 1021s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1021s ) -> socket.socket: 1021s """Connect to *address* and return the socket object. 1021s 1021s Convenience function. Connect to *address* (a 2-tuple ``(host, 1021s port)``) and return the socket object. Passing the optional 1021s *timeout* parameter will set the timeout on the socket instance 1021s before attempting to connect. If no *timeout* is supplied, the 1021s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1021s is used. If *source_address* is set it must be a tuple of (host, port) 1021s for the socket to bind as a source address before making the connection. 1021s An host of '' or port 0 tells the OS to use the default. 1021s """ 1021s 1021s host, port = address 1021s if host.startswith("["): 1021s host = host.strip("[]") 1021s err = None 1021s 1021s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1021s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1021s # The original create_connection function always returns all records. 1021s family = allowed_gai_family() 1021s 1021s try: 1021s host.encode("idna") 1021s except UnicodeError: 1021s raise LocationParseError(f"'{host}', label empty or too long") from None 1021s 1021s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1021s af, socktype, proto, canonname, sa = res 1021s sock = None 1021s try: 1021s sock = socket.socket(af, socktype, proto) 1021s 1021s # If provided, set socket level options before connecting. 1021s _set_socket_options(sock, socket_options) 1021s 1021s if timeout is not _DEFAULT_TIMEOUT: 1021s sock.settimeout(timeout) 1021s if source_address: 1021s sock.bind(source_address) 1021s > sock.connect(sa) 1021s E ConnectionRefusedError: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 1021s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1021s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s redirect = False, assert_same_host = False 1021s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1021s release_conn = False, chunked = False, body_pos = None, preload_content = False 1021s decode_content = False, response_kw = {} 1021s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 1021s destination_scheme = None, conn = None, release_this_conn = True 1021s http_tunnel_required = False, err = None, clean_exit = False 1021s 1021s def urlopen( # type: ignore[override] 1021s self, 1021s method: str, 1021s url: str, 1021s body: _TYPE_BODY | None = None, 1021s headers: typing.Mapping[str, str] | None = None, 1021s retries: Retry | bool | int | None = None, 1021s redirect: bool = True, 1021s assert_same_host: bool = True, 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s pool_timeout: int | None = None, 1021s release_conn: bool | None = None, 1021s chunked: bool = False, 1021s body_pos: _TYPE_BODY_POSITION | None = None, 1021s preload_content: bool = True, 1021s decode_content: bool = True, 1021s **response_kw: typing.Any, 1021s ) -> BaseHTTPResponse: 1021s """ 1021s Get a connection from the pool and perform an HTTP request. This is the 1021s lowest level call for making a request, so you'll need to specify all 1021s the raw details. 1021s 1021s .. note:: 1021s 1021s More commonly, it's appropriate to use a convenience method 1021s such as :meth:`request`. 1021s 1021s .. note:: 1021s 1021s `release_conn` will only behave as expected if 1021s `preload_content=False` because we want to make 1021s `preload_content=False` the default behaviour someday soon without 1021s breaking backwards compatibility. 1021s 1021s :param method: 1021s HTTP request method (such as GET, POST, PUT, etc.) 1021s 1021s :param url: 1021s The URL to perform the request on. 1021s 1021s :param body: 1021s Data to send in the request body, either :class:`str`, :class:`bytes`, 1021s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1021s 1021s :param headers: 1021s Dictionary of custom headers to send, such as User-Agent, 1021s If-None-Match, etc. If None, pool headers are used. If provided, 1021s these headers completely replace any pool-specific headers. 1021s 1021s :param retries: 1021s Configure the number of retries to allow before raising a 1021s :class:`~urllib3.exceptions.MaxRetryError` exception. 1021s 1021s Pass ``None`` to retry until you receive a response. Pass a 1021s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1021s over different types of retries. 1021s Pass an integer number to retry connection errors that many times, 1021s but no other types of errors. Pass zero to never retry. 1021s 1021s If ``False``, then retries are disabled and any exception is raised 1021s immediately. Also, instead of raising a MaxRetryError on redirects, 1021s the redirect response will be returned. 1021s 1021s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1021s 1021s :param redirect: 1021s If True, automatically handle redirects (status codes 301, 302, 1021s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1021s will disable redirect, too. 1021s 1021s :param assert_same_host: 1021s If ``True``, will make sure that the host of the pool requests is 1021s consistent else will raise HostChangedError. When ``False``, you can 1021s use the pool on an HTTP proxy and request foreign hosts. 1021s 1021s :param timeout: 1021s If specified, overrides the default timeout for this one 1021s request. It may be a float (in seconds) or an instance of 1021s :class:`urllib3.util.Timeout`. 1021s 1021s :param pool_timeout: 1021s If set and the pool is set to block=True, then this method will 1021s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1021s connection is available within the time period. 1021s 1021s :param bool preload_content: 1021s If True, the response's body will be preloaded into memory. 1021s 1021s :param bool decode_content: 1021s If True, will attempt to decode the body based on the 1021s 'content-encoding' header. 1021s 1021s :param release_conn: 1021s If False, then the urlopen call will not release the connection 1021s back into the pool once a response is received (but will release if 1021s you read the entire contents of the response such as when 1021s `preload_content=True`). This is useful if you're not preloading 1021s the response's content immediately. You will need to call 1021s ``r.release_conn()`` on the response ``r`` to return the connection 1021s back into the pool. If None, it takes the value of ``preload_content`` 1021s which defaults to ``True``. 1021s 1021s :param bool chunked: 1021s If True, urllib3 will send the body using chunked transfer 1021s encoding. Otherwise, urllib3 will send the body using the standard 1021s content-length form. Defaults to False. 1021s 1021s :param int body_pos: 1021s Position to seek to in file-like body in the event of a retry or 1021s redirect. Typically this won't need to be set because urllib3 will 1021s auto-populate the value when needed. 1021s """ 1021s parsed_url = parse_url(url) 1021s destination_scheme = parsed_url.scheme 1021s 1021s if headers is None: 1021s headers = self.headers 1021s 1021s if not isinstance(retries, Retry): 1021s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1021s 1021s if release_conn is None: 1021s release_conn = preload_content 1021s 1021s # Check host 1021s if assert_same_host and not self.is_same_host(url): 1021s raise HostChangedError(self, url, retries) 1021s 1021s # Ensure that the URL we're connecting to is properly encoded 1021s if url.startswith("/"): 1021s url = to_str(_encode_target(url)) 1021s else: 1021s url = to_str(parsed_url.url) 1021s 1021s conn = None 1021s 1021s # Track whether `conn` needs to be released before 1021s # returning/raising/recursing. Update this variable if necessary, and 1021s # leave `release_conn` constant throughout the function. That way, if 1021s # the function recurses, the original value of `release_conn` will be 1021s # passed down into the recursive call, and its value will be respected. 1021s # 1021s # See issue #651 [1] for details. 1021s # 1021s # [1] 1021s release_this_conn = release_conn 1021s 1021s http_tunnel_required = connection_requires_http_tunnel( 1021s self.proxy, self.proxy_config, destination_scheme 1021s ) 1021s 1021s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1021s # have to copy the headers dict so we can safely change it without those 1021s # changes being reflected in anyone else's copy. 1021s if not http_tunnel_required: 1021s headers = headers.copy() # type: ignore[attr-defined] 1021s headers.update(self.proxy_headers) # type: ignore[union-attr] 1021s 1021s # Must keep the exception bound to a separate variable or else Python 3 1021s # complains about UnboundLocalError. 1021s err = None 1021s 1021s # Keep track of whether we cleanly exited the except block. This 1021s # ensures we do proper cleanup in finally. 1021s clean_exit = False 1021s 1021s # Rewind body position, if needed. Record current position 1021s # for future rewinds in the event of a redirect/retry. 1021s body_pos = set_file_position(body, body_pos) 1021s 1021s try: 1021s # Request a connection from the queue. 1021s timeout_obj = self._get_timeout(timeout) 1021s conn = self._get_conn(timeout=pool_timeout) 1021s 1021s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1021s 1021s # Is this a closed/new connection that requires CONNECT tunnelling? 1021s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1021s try: 1021s self._prepare_proxy(conn) 1021s except (BaseSSLError, OSError, SocketTimeout) as e: 1021s self._raise_timeout( 1021s err=e, url=self.proxy.url, timeout_value=conn.timeout 1021s ) 1021s raise 1021s 1021s # If we're going to release the connection in ``finally:``, then 1021s # the response doesn't need to know about the connection. Otherwise 1021s # it will also try to release it and we'll have a double-release 1021s # mess. 1021s response_conn = conn if not release_conn else None 1021s 1021s # Make the request on the HTTPConnection object 1021s > response = self._make_request( 1021s conn, 1021s method, 1021s url, 1021s timeout=timeout_obj, 1021s body=body, 1021s headers=headers, 1021s chunked=chunked, 1021s retries=retries, 1021s response_conn=response_conn, 1021s preload_content=preload_content, 1021s decode_content=decode_content, 1021s **response_kw, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1021s raise new_e 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1021s self._validate_conn(conn) 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1021s conn.connect() 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1021s self.sock = sock = self._new_conn() 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s except socket.gaierror as e: 1021s raise NameResolutionError(self.host, self, e) from e 1021s except SocketTimeout as e: 1021s raise ConnectTimeoutError( 1021s self, 1021s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1021s ) from e 1021s 1021s except OSError as e: 1021s > raise NewConnectionError( 1021s self, f"Failed to establish a new connection: {e}" 1021s ) from e 1021s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s > resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1021s retries = retries.increment( 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 1021s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1021s _pool = 1021s _stacktrace = 1021s 1021s def increment( 1021s self, 1021s method: str | None = None, 1021s url: str | None = None, 1021s response: BaseHTTPResponse | None = None, 1021s error: Exception | None = None, 1021s _pool: ConnectionPool | None = None, 1021s _stacktrace: TracebackType | None = None, 1021s ) -> Retry: 1021s """Return a new Retry object with incremented retry counters. 1021s 1021s :param response: A response object, or None, if the server did not 1021s return a response. 1021s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1021s :param Exception error: An error encountered during the request, or 1021s None if the response was received successfully. 1021s 1021s :return: A new ``Retry`` object. 1021s """ 1021s if self.total is False and error: 1021s # Disabled, indicate to re-raise the error. 1021s raise reraise(type(error), error, _stacktrace) 1021s 1021s total = self.total 1021s if total is not None: 1021s total -= 1 1021s 1021s connect = self.connect 1021s read = self.read 1021s redirect = self.redirect 1021s status_count = self.status 1021s other = self.other 1021s cause = "unknown" 1021s status = None 1021s redirect_location = None 1021s 1021s if error and self._is_connection_error(error): 1021s # Connect retry? 1021s if connect is False: 1021s raise reraise(type(error), error, _stacktrace) 1021s elif connect is not None: 1021s connect -= 1 1021s 1021s elif error and self._is_read_error(error): 1021s # Read retry? 1021s if read is False or method is None or not self._is_method_retryable(method): 1021s raise reraise(type(error), error, _stacktrace) 1021s elif read is not None: 1021s read -= 1 1021s 1021s elif error: 1021s # Other retry? 1021s if other is not None: 1021s other -= 1 1021s 1021s elif response and response.get_redirect_location(): 1021s # Redirect retry? 1021s if redirect is not None: 1021s redirect -= 1 1021s cause = "too many redirects" 1021s response_redirect_location = response.get_redirect_location() 1021s if response_redirect_location: 1021s redirect_location = response_redirect_location 1021s status = response.status 1021s 1021s else: 1021s # Incrementing because of a server error like a 500 in 1021s # status_forcelist and the given method is in the allowed_methods 1021s cause = ResponseError.GENERIC_ERROR 1021s if response and response.status: 1021s if status_count is not None: 1021s status_count -= 1 1021s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1021s status = response.status 1021s 1021s history = self.history + ( 1021s RequestHistory(method, url, error, status, redirect_location), 1021s ) 1021s 1021s new_retry = self.new( 1021s total=total, 1021s connect=connect, 1021s read=read, 1021s redirect=redirect, 1021s status=status_count, 1021s other=other, 1021s history=history, 1021s ) 1021s 1021s if new_retry.is_exhausted(): 1021s reason = error or ResponseError(cause) 1021s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1021s 1021s During handling of the above exception, another exception occurred: 1021s 1021s def test_encode_empty(): 1021s > enc = tiktoken.get_encoding("r50k_base") 1021s 1021s tests/test_encoding.py:74: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1021s enc = Encoding(**constructor()) 1021s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 1021s mergeable_ranks = load_tiktoken_bpe( 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1021s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1021s contents = read_file(blobpath) 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1021s resp = requests.get(blobpath) 1021s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1021s return request("get", url, params=params, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1021s return session.request(method=method, url=url, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1021s resp = self.send(prep, **send_kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1021s r = adapter.send(request, **kwargs) 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s except (ProtocolError, OSError) as err: 1021s raise ConnectionError(err, request=request) 1021s 1021s except MaxRetryError as e: 1021s if isinstance(e.reason, ConnectTimeoutError): 1021s # TODO: Remove this in 3.0.0: see #2811 1021s if not isinstance(e.reason, NewConnectionError): 1021s raise ConnectTimeout(e, request=request) 1021s 1021s if isinstance(e.reason, ResponseError): 1021s raise RetryError(e, request=request) 1021s 1021s if isinstance(e.reason, _ProxyError): 1021s raise ProxyError(e, request=request) 1021s 1021s if isinstance(e.reason, _SSLError): 1021s # This branch is for urllib3 v1.22 and later. 1021s raise SSLError(e, request=request) 1021s 1021s > raise ConnectionError(e, request=request) 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1021s ______________________________ test_encode_bytes _______________________________ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s > sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1021s raise err 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1021s source_address = None, socket_options = [(6, 1, 1)] 1021s 1021s def create_connection( 1021s address: tuple[str, int], 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s source_address: tuple[str, int] | None = None, 1021s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1021s ) -> socket.socket: 1021s """Connect to *address* and return the socket object. 1021s 1021s Convenience function. Connect to *address* (a 2-tuple ``(host, 1021s port)``) and return the socket object. Passing the optional 1021s *timeout* parameter will set the timeout on the socket instance 1021s before attempting to connect. If no *timeout* is supplied, the 1021s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1021s is used. If *source_address* is set it must be a tuple of (host, port) 1021s for the socket to bind as a source address before making the connection. 1021s An host of '' or port 0 tells the OS to use the default. 1021s """ 1021s 1021s host, port = address 1021s if host.startswith("["): 1021s host = host.strip("[]") 1021s err = None 1021s 1021s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1021s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1021s # The original create_connection function always returns all records. 1021s family = allowed_gai_family() 1021s 1021s try: 1021s host.encode("idna") 1021s except UnicodeError: 1021s raise LocationParseError(f"'{host}', label empty or too long") from None 1021s 1021s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1021s af, socktype, proto, canonname, sa = res 1021s sock = None 1021s try: 1021s sock = socket.socket(af, socktype, proto) 1021s 1021s # If provided, set socket level options before connecting. 1021s _set_socket_options(sock, socket_options) 1021s 1021s if timeout is not _DEFAULT_TIMEOUT: 1021s sock.settimeout(timeout) 1021s if source_address: 1021s sock.bind(source_address) 1021s > sock.connect(sa) 1021s E ConnectionRefusedError: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 1021s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1021s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s redirect = False, assert_same_host = False 1021s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1021s release_conn = False, chunked = False, body_pos = None, preload_content = False 1021s decode_content = False, response_kw = {} 1021s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 1021s destination_scheme = None, conn = None, release_this_conn = True 1021s http_tunnel_required = False, err = None, clean_exit = False 1021s 1021s def urlopen( # type: ignore[override] 1021s self, 1021s method: str, 1021s url: str, 1021s body: _TYPE_BODY | None = None, 1021s headers: typing.Mapping[str, str] | None = None, 1021s retries: Retry | bool | int | None = None, 1021s redirect: bool = True, 1021s assert_same_host: bool = True, 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s pool_timeout: int | None = None, 1021s release_conn: bool | None = None, 1021s chunked: bool = False, 1021s body_pos: _TYPE_BODY_POSITION | None = None, 1021s preload_content: bool = True, 1021s decode_content: bool = True, 1021s **response_kw: typing.Any, 1021s ) -> BaseHTTPResponse: 1021s """ 1021s Get a connection from the pool and perform an HTTP request. This is the 1021s lowest level call for making a request, so you'll need to specify all 1021s the raw details. 1021s 1021s .. note:: 1021s 1021s More commonly, it's appropriate to use a convenience method 1021s such as :meth:`request`. 1021s 1021s .. note:: 1021s 1021s `release_conn` will only behave as expected if 1021s `preload_content=False` because we want to make 1021s `preload_content=False` the default behaviour someday soon without 1021s breaking backwards compatibility. 1021s 1021s :param method: 1021s HTTP request method (such as GET, POST, PUT, etc.) 1021s 1021s :param url: 1021s The URL to perform the request on. 1021s 1021s :param body: 1021s Data to send in the request body, either :class:`str`, :class:`bytes`, 1021s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1021s 1021s :param headers: 1021s Dictionary of custom headers to send, such as User-Agent, 1021s If-None-Match, etc. If None, pool headers are used. If provided, 1021s these headers completely replace any pool-specific headers. 1021s 1021s :param retries: 1021s Configure the number of retries to allow before raising a 1021s :class:`~urllib3.exceptions.MaxRetryError` exception. 1021s 1021s Pass ``None`` to retry until you receive a response. Pass a 1021s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1021s over different types of retries. 1021s Pass an integer number to retry connection errors that many times, 1021s but no other types of errors. Pass zero to never retry. 1021s 1021s If ``False``, then retries are disabled and any exception is raised 1021s immediately. Also, instead of raising a MaxRetryError on redirects, 1021s the redirect response will be returned. 1021s 1021s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1021s 1021s :param redirect: 1021s If True, automatically handle redirects (status codes 301, 302, 1021s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1021s will disable redirect, too. 1021s 1021s :param assert_same_host: 1021s If ``True``, will make sure that the host of the pool requests is 1021s consistent else will raise HostChangedError. When ``False``, you can 1021s use the pool on an HTTP proxy and request foreign hosts. 1021s 1021s :param timeout: 1021s If specified, overrides the default timeout for this one 1021s request. It may be a float (in seconds) or an instance of 1021s :class:`urllib3.util.Timeout`. 1021s 1021s :param pool_timeout: 1021s If set and the pool is set to block=True, then this method will 1021s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1021s connection is available within the time period. 1021s 1021s :param bool preload_content: 1021s If True, the response's body will be preloaded into memory. 1021s 1021s :param bool decode_content: 1021s If True, will attempt to decode the body based on the 1021s 'content-encoding' header. 1021s 1021s :param release_conn: 1021s If False, then the urlopen call will not release the connection 1021s back into the pool once a response is received (but will release if 1021s you read the entire contents of the response such as when 1021s `preload_content=True`). This is useful if you're not preloading 1021s the response's content immediately. You will need to call 1021s ``r.release_conn()`` on the response ``r`` to return the connection 1021s back into the pool. If None, it takes the value of ``preload_content`` 1021s which defaults to ``True``. 1021s 1021s :param bool chunked: 1021s If True, urllib3 will send the body using chunked transfer 1021s encoding. Otherwise, urllib3 will send the body using the standard 1021s content-length form. Defaults to False. 1021s 1021s :param int body_pos: 1021s Position to seek to in file-like body in the event of a retry or 1021s redirect. Typically this won't need to be set because urllib3 will 1021s auto-populate the value when needed. 1021s """ 1021s parsed_url = parse_url(url) 1021s destination_scheme = parsed_url.scheme 1021s 1021s if headers is None: 1021s headers = self.headers 1021s 1021s if not isinstance(retries, Retry): 1021s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1021s 1021s if release_conn is None: 1021s release_conn = preload_content 1021s 1021s # Check host 1021s if assert_same_host and not self.is_same_host(url): 1021s raise HostChangedError(self, url, retries) 1021s 1021s # Ensure that the URL we're connecting to is properly encoded 1021s if url.startswith("/"): 1021s url = to_str(_encode_target(url)) 1021s else: 1021s url = to_str(parsed_url.url) 1021s 1021s conn = None 1021s 1021s # Track whether `conn` needs to be released before 1021s # returning/raising/recursing. Update this variable if necessary, and 1021s # leave `release_conn` constant throughout the function. That way, if 1021s # the function recurses, the original value of `release_conn` will be 1021s # passed down into the recursive call, and its value will be respected. 1021s # 1021s # See issue #651 [1] for details. 1021s # 1021s # [1] 1021s release_this_conn = release_conn 1021s 1021s http_tunnel_required = connection_requires_http_tunnel( 1021s self.proxy, self.proxy_config, destination_scheme 1021s ) 1021s 1021s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1021s # have to copy the headers dict so we can safely change it without those 1021s # changes being reflected in anyone else's copy. 1021s if not http_tunnel_required: 1021s headers = headers.copy() # type: ignore[attr-defined] 1021s headers.update(self.proxy_headers) # type: ignore[union-attr] 1021s 1021s # Must keep the exception bound to a separate variable or else Python 3 1021s # complains about UnboundLocalError. 1021s err = None 1021s 1021s # Keep track of whether we cleanly exited the except block. This 1021s # ensures we do proper cleanup in finally. 1021s clean_exit = False 1021s 1021s # Rewind body position, if needed. Record current position 1021s # for future rewinds in the event of a redirect/retry. 1021s body_pos = set_file_position(body, body_pos) 1021s 1021s try: 1021s # Request a connection from the queue. 1021s timeout_obj = self._get_timeout(timeout) 1021s conn = self._get_conn(timeout=pool_timeout) 1021s 1021s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1021s 1021s # Is this a closed/new connection that requires CONNECT tunnelling? 1021s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1021s try: 1021s self._prepare_proxy(conn) 1021s except (BaseSSLError, OSError, SocketTimeout) as e: 1021s self._raise_timeout( 1021s err=e, url=self.proxy.url, timeout_value=conn.timeout 1021s ) 1021s raise 1021s 1021s # If we're going to release the connection in ``finally:``, then 1021s # the response doesn't need to know about the connection. Otherwise 1021s # it will also try to release it and we'll have a double-release 1021s # mess. 1021s response_conn = conn if not release_conn else None 1021s 1021s # Make the request on the HTTPConnection object 1021s > response = self._make_request( 1021s conn, 1021s method, 1021s url, 1021s timeout=timeout_obj, 1021s body=body, 1021s headers=headers, 1021s chunked=chunked, 1021s retries=retries, 1021s response_conn=response_conn, 1021s preload_content=preload_content, 1021s decode_content=decode_content, 1021s **response_kw, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1021s raise new_e 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1021s self._validate_conn(conn) 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1021s conn.connect() 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1021s self.sock = sock = self._new_conn() 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s except socket.gaierror as e: 1021s raise NameResolutionError(self.host, self, e) from e 1021s except SocketTimeout as e: 1021s raise ConnectTimeoutError( 1021s self, 1021s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1021s ) from e 1021s 1021s except OSError as e: 1021s > raise NewConnectionError( 1021s self, f"Failed to establish a new connection: {e}" 1021s ) from e 1021s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s > resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1021s retries = retries.increment( 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 1021s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1021s _pool = 1021s _stacktrace = 1021s 1021s def increment( 1021s self, 1021s method: str | None = None, 1021s url: str | None = None, 1021s response: BaseHTTPResponse | None = None, 1021s error: Exception | None = None, 1021s _pool: ConnectionPool | None = None, 1021s _stacktrace: TracebackType | None = None, 1021s ) -> Retry: 1021s """Return a new Retry object with incremented retry counters. 1021s 1021s :param response: A response object, or None, if the server did not 1021s return a response. 1021s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1021s :param Exception error: An error encountered during the request, or 1021s None if the response was received successfully. 1021s 1021s :return: A new ``Retry`` object. 1021s """ 1021s if self.total is False and error: 1021s # Disabled, indicate to re-raise the error. 1021s raise reraise(type(error), error, _stacktrace) 1021s 1021s total = self.total 1021s if total is not None: 1021s total -= 1 1021s 1021s connect = self.connect 1021s read = self.read 1021s redirect = self.redirect 1021s status_count = self.status 1021s other = self.other 1021s cause = "unknown" 1021s status = None 1021s redirect_location = None 1021s 1021s if error and self._is_connection_error(error): 1021s # Connect retry? 1021s if connect is False: 1021s raise reraise(type(error), error, _stacktrace) 1021s elif connect is not None: 1021s connect -= 1 1021s 1021s elif error and self._is_read_error(error): 1021s # Read retry? 1021s if read is False or method is None or not self._is_method_retryable(method): 1021s raise reraise(type(error), error, _stacktrace) 1021s elif read is not None: 1021s read -= 1 1021s 1021s elif error: 1021s # Other retry? 1021s if other is not None: 1021s other -= 1 1021s 1021s elif response and response.get_redirect_location(): 1021s # Redirect retry? 1021s if redirect is not None: 1021s redirect -= 1 1021s cause = "too many redirects" 1021s response_redirect_location = response.get_redirect_location() 1021s if response_redirect_location: 1021s redirect_location = response_redirect_location 1021s status = response.status 1021s 1021s else: 1021s # Incrementing because of a server error like a 500 in 1021s # status_forcelist and the given method is in the allowed_methods 1021s cause = ResponseError.GENERIC_ERROR 1021s if response and response.status: 1021s if status_count is not None: 1021s status_count -= 1 1021s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1021s status = response.status 1021s 1021s history = self.history + ( 1021s RequestHistory(method, url, error, status, redirect_location), 1021s ) 1021s 1021s new_retry = self.new( 1021s total=total, 1021s connect=connect, 1021s read=read, 1021s redirect=redirect, 1021s status=status_count, 1021s other=other, 1021s history=history, 1021s ) 1021s 1021s if new_retry.is_exhausted(): 1021s reason = error or ResponseError(cause) 1021s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1021s 1021s During handling of the above exception, another exception occurred: 1021s 1021s def test_encode_bytes(): 1021s > enc = tiktoken.get_encoding("cl100k_base") 1021s 1021s tests/test_encoding.py:79: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1021s enc = Encoding(**constructor()) 1021s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 1021s mergeable_ranks = load_tiktoken_bpe( 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1021s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1021s contents = read_file(blobpath) 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1021s resp = requests.get(blobpath) 1021s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1021s return request("get", url, params=params, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1021s return session.request(method=method, url=url, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1021s resp = self.send(prep, **send_kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1021s r = adapter.send(request, **kwargs) 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s except (ProtocolError, OSError) as err: 1021s raise ConnectionError(err, request=request) 1021s 1021s except MaxRetryError as e: 1021s if isinstance(e.reason, ConnectTimeoutError): 1021s # TODO: Remove this in 3.0.0: see #2811 1021s if not isinstance(e.reason, NewConnectionError): 1021s raise ConnectTimeout(e, request=request) 1021s 1021s if isinstance(e.reason, ResponseError): 1021s raise RetryError(e, request=request) 1021s 1021s if isinstance(e.reason, _ProxyError): 1021s raise ProxyError(e, request=request) 1021s 1021s if isinstance(e.reason, _SSLError): 1021s # This branch is for urllib3 v1.22 and later. 1021s raise SSLError(e, request=request) 1021s 1021s > raise ConnectionError(e, request=request) 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1021s _________________________ test_encode_surrogate_pairs __________________________ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s > sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1021s raise err 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1021s source_address = None, socket_options = [(6, 1, 1)] 1021s 1021s def create_connection( 1021s address: tuple[str, int], 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s source_address: tuple[str, int] | None = None, 1021s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1021s ) -> socket.socket: 1021s """Connect to *address* and return the socket object. 1021s 1021s Convenience function. Connect to *address* (a 2-tuple ``(host, 1021s port)``) and return the socket object. Passing the optional 1021s *timeout* parameter will set the timeout on the socket instance 1021s before attempting to connect. If no *timeout* is supplied, the 1021s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1021s is used. If *source_address* is set it must be a tuple of (host, port) 1021s for the socket to bind as a source address before making the connection. 1021s An host of '' or port 0 tells the OS to use the default. 1021s """ 1021s 1021s host, port = address 1021s if host.startswith("["): 1021s host = host.strip("[]") 1021s err = None 1021s 1021s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1021s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1021s # The original create_connection function always returns all records. 1021s family = allowed_gai_family() 1021s 1021s try: 1021s host.encode("idna") 1021s except UnicodeError: 1021s raise LocationParseError(f"'{host}', label empty or too long") from None 1021s 1021s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1021s af, socktype, proto, canonname, sa = res 1021s sock = None 1021s try: 1021s sock = socket.socket(af, socktype, proto) 1021s 1021s # If provided, set socket level options before connecting. 1021s _set_socket_options(sock, socket_options) 1021s 1021s if timeout is not _DEFAULT_TIMEOUT: 1021s sock.settimeout(timeout) 1021s if source_address: 1021s sock.bind(source_address) 1021s > sock.connect(sa) 1021s E ConnectionRefusedError: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 1021s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1021s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s redirect = False, assert_same_host = False 1021s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1021s release_conn = False, chunked = False, body_pos = None, preload_content = False 1021s decode_content = False, response_kw = {} 1021s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 1021s destination_scheme = None, conn = None, release_this_conn = True 1021s http_tunnel_required = False, err = None, clean_exit = False 1021s 1021s def urlopen( # type: ignore[override] 1021s self, 1021s method: str, 1021s url: str, 1021s body: _TYPE_BODY | None = None, 1021s headers: typing.Mapping[str, str] | None = None, 1021s retries: Retry | bool | int | None = None, 1021s redirect: bool = True, 1021s assert_same_host: bool = True, 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s pool_timeout: int | None = None, 1021s release_conn: bool | None = None, 1021s chunked: bool = False, 1021s body_pos: _TYPE_BODY_POSITION | None = None, 1021s preload_content: bool = True, 1021s decode_content: bool = True, 1021s **response_kw: typing.Any, 1021s ) -> BaseHTTPResponse: 1021s """ 1021s Get a connection from the pool and perform an HTTP request. This is the 1021s lowest level call for making a request, so you'll need to specify all 1021s the raw details. 1021s 1021s .. note:: 1021s 1021s More commonly, it's appropriate to use a convenience method 1021s such as :meth:`request`. 1021s 1021s .. note:: 1021s 1021s `release_conn` will only behave as expected if 1021s `preload_content=False` because we want to make 1021s `preload_content=False` the default behaviour someday soon without 1021s breaking backwards compatibility. 1021s 1021s :param method: 1021s HTTP request method (such as GET, POST, PUT, etc.) 1021s 1021s :param url: 1021s The URL to perform the request on. 1021s 1021s :param body: 1021s Data to send in the request body, either :class:`str`, :class:`bytes`, 1021s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1021s 1021s :param headers: 1021s Dictionary of custom headers to send, such as User-Agent, 1021s If-None-Match, etc. If None, pool headers are used. If provided, 1021s these headers completely replace any pool-specific headers. 1021s 1021s :param retries: 1021s Configure the number of retries to allow before raising a 1021s :class:`~urllib3.exceptions.MaxRetryError` exception. 1021s 1021s Pass ``None`` to retry until you receive a response. Pass a 1021s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1021s over different types of retries. 1021s Pass an integer number to retry connection errors that many times, 1021s but no other types of errors. Pass zero to never retry. 1021s 1021s If ``False``, then retries are disabled and any exception is raised 1021s immediately. Also, instead of raising a MaxRetryError on redirects, 1021s the redirect response will be returned. 1021s 1021s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1021s 1021s :param redirect: 1021s If True, automatically handle redirects (status codes 301, 302, 1021s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1021s will disable redirect, too. 1021s 1021s :param assert_same_host: 1021s If ``True``, will make sure that the host of the pool requests is 1021s consistent else will raise HostChangedError. When ``False``, you can 1021s use the pool on an HTTP proxy and request foreign hosts. 1021s 1021s :param timeout: 1021s If specified, overrides the default timeout for this one 1021s request. It may be a float (in seconds) or an instance of 1021s :class:`urllib3.util.Timeout`. 1021s 1021s :param pool_timeout: 1021s If set and the pool is set to block=True, then this method will 1021s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1021s connection is available within the time period. 1021s 1021s :param bool preload_content: 1021s If True, the response's body will be preloaded into memory. 1021s 1021s :param bool decode_content: 1021s If True, will attempt to decode the body based on the 1021s 'content-encoding' header. 1021s 1021s :param release_conn: 1021s If False, then the urlopen call will not release the connection 1021s back into the pool once a response is received (but will release if 1021s you read the entire contents of the response such as when 1021s `preload_content=True`). This is useful if you're not preloading 1021s the response's content immediately. You will need to call 1021s ``r.release_conn()`` on the response ``r`` to return the connection 1021s back into the pool. If None, it takes the value of ``preload_content`` 1021s which defaults to ``True``. 1021s 1021s :param bool chunked: 1021s If True, urllib3 will send the body using chunked transfer 1021s encoding. Otherwise, urllib3 will send the body using the standard 1021s content-length form. Defaults to False. 1021s 1021s :param int body_pos: 1021s Position to seek to in file-like body in the event of a retry or 1021s redirect. Typically this won't need to be set because urllib3 will 1021s auto-populate the value when needed. 1021s """ 1021s parsed_url = parse_url(url) 1021s destination_scheme = parsed_url.scheme 1021s 1021s if headers is None: 1021s headers = self.headers 1021s 1021s if not isinstance(retries, Retry): 1021s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1021s 1021s if release_conn is None: 1021s release_conn = preload_content 1021s 1021s # Check host 1021s if assert_same_host and not self.is_same_host(url): 1021s raise HostChangedError(self, url, retries) 1021s 1021s # Ensure that the URL we're connecting to is properly encoded 1021s if url.startswith("/"): 1021s url = to_str(_encode_target(url)) 1021s else: 1021s url = to_str(parsed_url.url) 1021s 1021s conn = None 1021s 1021s # Track whether `conn` needs to be released before 1021s # returning/raising/recursing. Update this variable if necessary, and 1021s # leave `release_conn` constant throughout the function. That way, if 1021s # the function recurses, the original value of `release_conn` will be 1021s # passed down into the recursive call, and its value will be respected. 1021s # 1021s # See issue #651 [1] for details. 1021s # 1021s # [1] 1021s release_this_conn = release_conn 1021s 1021s http_tunnel_required = connection_requires_http_tunnel( 1021s self.proxy, self.proxy_config, destination_scheme 1021s ) 1021s 1021s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1021s # have to copy the headers dict so we can safely change it without those 1021s # changes being reflected in anyone else's copy. 1021s if not http_tunnel_required: 1021s headers = headers.copy() # type: ignore[attr-defined] 1021s headers.update(self.proxy_headers) # type: ignore[union-attr] 1021s 1021s # Must keep the exception bound to a separate variable or else Python 3 1021s # complains about UnboundLocalError. 1021s err = None 1021s 1021s # Keep track of whether we cleanly exited the except block. This 1021s # ensures we do proper cleanup in finally. 1021s clean_exit = False 1021s 1021s # Rewind body position, if needed. Record current position 1021s # for future rewinds in the event of a redirect/retry. 1021s body_pos = set_file_position(body, body_pos) 1021s 1021s try: 1021s # Request a connection from the queue. 1021s timeout_obj = self._get_timeout(timeout) 1021s conn = self._get_conn(timeout=pool_timeout) 1021s 1021s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1021s 1021s # Is this a closed/new connection that requires CONNECT tunnelling? 1021s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1021s try: 1021s self._prepare_proxy(conn) 1021s except (BaseSSLError, OSError, SocketTimeout) as e: 1021s self._raise_timeout( 1021s err=e, url=self.proxy.url, timeout_value=conn.timeout 1021s ) 1021s raise 1021s 1021s # If we're going to release the connection in ``finally:``, then 1021s # the response doesn't need to know about the connection. Otherwise 1021s # it will also try to release it and we'll have a double-release 1021s # mess. 1021s response_conn = conn if not release_conn else None 1021s 1021s # Make the request on the HTTPConnection object 1021s > response = self._make_request( 1021s conn, 1021s method, 1021s url, 1021s timeout=timeout_obj, 1021s body=body, 1021s headers=headers, 1021s chunked=chunked, 1021s retries=retries, 1021s response_conn=response_conn, 1021s preload_content=preload_content, 1021s decode_content=decode_content, 1021s **response_kw, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1021s raise new_e 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1021s self._validate_conn(conn) 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1021s conn.connect() 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1021s self.sock = sock = self._new_conn() 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s except socket.gaierror as e: 1021s raise NameResolutionError(self.host, self, e) from e 1021s except SocketTimeout as e: 1021s raise ConnectTimeoutError( 1021s self, 1021s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1021s ) from e 1021s 1021s except OSError as e: 1021s > raise NewConnectionError( 1021s self, f"Failed to establish a new connection: {e}" 1021s ) from e 1021s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s > resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1021s retries = retries.increment( 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 1021s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1021s _pool = 1021s _stacktrace = 1021s 1021s def increment( 1021s self, 1021s method: str | None = None, 1021s url: str | None = None, 1021s response: BaseHTTPResponse | None = None, 1021s error: Exception | None = None, 1021s _pool: ConnectionPool | None = None, 1021s _stacktrace: TracebackType | None = None, 1021s ) -> Retry: 1021s """Return a new Retry object with incremented retry counters. 1021s 1021s :param response: A response object, or None, if the server did not 1021s return a response. 1021s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1021s :param Exception error: An error encountered during the request, or 1021s None if the response was received successfully. 1021s 1021s :return: A new ``Retry`` object. 1021s """ 1021s if self.total is False and error: 1021s # Disabled, indicate to re-raise the error. 1021s raise reraise(type(error), error, _stacktrace) 1021s 1021s total = self.total 1021s if total is not None: 1021s total -= 1 1021s 1021s connect = self.connect 1021s read = self.read 1021s redirect = self.redirect 1021s status_count = self.status 1021s other = self.other 1021s cause = "unknown" 1021s status = None 1021s redirect_location = None 1021s 1021s if error and self._is_connection_error(error): 1021s # Connect retry? 1021s if connect is False: 1021s raise reraise(type(error), error, _stacktrace) 1021s elif connect is not None: 1021s connect -= 1 1021s 1021s elif error and self._is_read_error(error): 1021s # Read retry? 1021s if read is False or method is None or not self._is_method_retryable(method): 1021s raise reraise(type(error), error, _stacktrace) 1021s elif read is not None: 1021s read -= 1 1021s 1021s elif error: 1021s # Other retry? 1021s if other is not None: 1021s other -= 1 1021s 1021s elif response and response.get_redirect_location(): 1021s # Redirect retry? 1021s if redirect is not None: 1021s redirect -= 1 1021s cause = "too many redirects" 1021s response_redirect_location = response.get_redirect_location() 1021s if response_redirect_location: 1021s redirect_location = response_redirect_location 1021s status = response.status 1021s 1021s else: 1021s # Incrementing because of a server error like a 500 in 1021s # status_forcelist and the given method is in the allowed_methods 1021s cause = ResponseError.GENERIC_ERROR 1021s if response and response.status: 1021s if status_count is not None: 1021s status_count -= 1 1021s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1021s status = response.status 1021s 1021s history = self.history + ( 1021s RequestHistory(method, url, error, status, redirect_location), 1021s ) 1021s 1021s new_retry = self.new( 1021s total=total, 1021s connect=connect, 1021s read=read, 1021s redirect=redirect, 1021s status=status_count, 1021s other=other, 1021s history=history, 1021s ) 1021s 1021s if new_retry.is_exhausted(): 1021s reason = error or ResponseError(cause) 1021s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1021s 1021s During handling of the above exception, another exception occurred: 1021s 1021s def test_encode_surrogate_pairs(): 1021s > enc = tiktoken.get_encoding("cl100k_base") 1021s 1021s tests/test_encoding.py:84: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1021s enc = Encoding(**constructor()) 1021s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 1021s mergeable_ranks = load_tiktoken_bpe( 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1021s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1021s contents = read_file(blobpath) 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1021s resp = requests.get(blobpath) 1021s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1021s return request("get", url, params=params, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1021s return session.request(method=method, url=url, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1021s resp = self.send(prep, **send_kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1021s r = adapter.send(request, **kwargs) 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s except (ProtocolError, OSError) as err: 1021s raise ConnectionError(err, request=request) 1021s 1021s except MaxRetryError as e: 1021s if isinstance(e.reason, ConnectTimeoutError): 1021s # TODO: Remove this in 3.0.0: see #2811 1021s if not isinstance(e.reason, NewConnectionError): 1021s raise ConnectTimeout(e, request=request) 1021s 1021s if isinstance(e.reason, ResponseError): 1021s raise RetryError(e, request=request) 1021s 1021s if isinstance(e.reason, _ProxyError): 1021s raise ProxyError(e, request=request) 1021s 1021s if isinstance(e.reason, _SSLError): 1021s # This branch is for urllib3 v1.22 and later. 1021s raise SSLError(e, request=request) 1021s 1021s > raise ConnectionError(e, request=request) 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1021s _________________ test_catastrophically_repetitive[r50k_base] __________________ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s > sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1021s raise err 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1021s source_address = None, socket_options = [(6, 1, 1)] 1021s 1021s def create_connection( 1021s address: tuple[str, int], 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s source_address: tuple[str, int] | None = None, 1021s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1021s ) -> socket.socket: 1021s """Connect to *address* and return the socket object. 1021s 1021s Convenience function. Connect to *address* (a 2-tuple ``(host, 1021s port)``) and return the socket object. Passing the optional 1021s *timeout* parameter will set the timeout on the socket instance 1021s before attempting to connect. If no *timeout* is supplied, the 1021s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1021s is used. If *source_address* is set it must be a tuple of (host, port) 1021s for the socket to bind as a source address before making the connection. 1021s An host of '' or port 0 tells the OS to use the default. 1021s """ 1021s 1021s host, port = address 1021s if host.startswith("["): 1021s host = host.strip("[]") 1021s err = None 1021s 1021s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1021s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1021s # The original create_connection function always returns all records. 1021s family = allowed_gai_family() 1021s 1021s try: 1021s host.encode("idna") 1021s except UnicodeError: 1021s raise LocationParseError(f"'{host}', label empty or too long") from None 1021s 1021s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1021s af, socktype, proto, canonname, sa = res 1021s sock = None 1021s try: 1021s sock = socket.socket(af, socktype, proto) 1021s 1021s # If provided, set socket level options before connecting. 1021s _set_socket_options(sock, socket_options) 1021s 1021s if timeout is not _DEFAULT_TIMEOUT: 1021s sock.settimeout(timeout) 1021s if source_address: 1021s sock.bind(source_address) 1021s > sock.connect(sa) 1021s E ConnectionRefusedError: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 1021s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1021s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s redirect = False, assert_same_host = False 1021s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1021s release_conn = False, chunked = False, body_pos = None, preload_content = False 1021s decode_content = False, response_kw = {} 1021s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 1021s destination_scheme = None, conn = None, release_this_conn = True 1021s http_tunnel_required = False, err = None, clean_exit = False 1021s 1021s def urlopen( # type: ignore[override] 1021s self, 1021s method: str, 1021s url: str, 1021s body: _TYPE_BODY | None = None, 1021s headers: typing.Mapping[str, str] | None = None, 1021s retries: Retry | bool | int | None = None, 1021s redirect: bool = True, 1021s assert_same_host: bool = True, 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s pool_timeout: int | None = None, 1021s release_conn: bool | None = None, 1021s chunked: bool = False, 1021s body_pos: _TYPE_BODY_POSITION | None = None, 1021s preload_content: bool = True, 1021s decode_content: bool = True, 1021s **response_kw: typing.Any, 1021s ) -> BaseHTTPResponse: 1021s """ 1021s Get a connection from the pool and perform an HTTP request. This is the 1021s lowest level call for making a request, so you'll need to specify all 1021s the raw details. 1021s 1021s .. note:: 1021s 1021s More commonly, it's appropriate to use a convenience method 1021s such as :meth:`request`. 1021s 1021s .. note:: 1021s 1021s `release_conn` will only behave as expected if 1021s `preload_content=False` because we want to make 1021s `preload_content=False` the default behaviour someday soon without 1021s breaking backwards compatibility. 1021s 1021s :param method: 1021s HTTP request method (such as GET, POST, PUT, etc.) 1021s 1021s :param url: 1021s The URL to perform the request on. 1021s 1021s :param body: 1021s Data to send in the request body, either :class:`str`, :class:`bytes`, 1021s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1021s 1021s :param headers: 1021s Dictionary of custom headers to send, such as User-Agent, 1021s If-None-Match, etc. If None, pool headers are used. If provided, 1021s these headers completely replace any pool-specific headers. 1021s 1021s :param retries: 1021s Configure the number of retries to allow before raising a 1021s :class:`~urllib3.exceptions.MaxRetryError` exception. 1021s 1021s Pass ``None`` to retry until you receive a response. Pass a 1021s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1021s over different types of retries. 1021s Pass an integer number to retry connection errors that many times, 1021s but no other types of errors. Pass zero to never retry. 1021s 1021s If ``False``, then retries are disabled and any exception is raised 1021s immediately. Also, instead of raising a MaxRetryError on redirects, 1021s the redirect response will be returned. 1021s 1021s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1021s 1021s :param redirect: 1021s If True, automatically handle redirects (status codes 301, 302, 1021s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1021s will disable redirect, too. 1021s 1021s :param assert_same_host: 1021s If ``True``, will make sure that the host of the pool requests is 1021s consistent else will raise HostChangedError. When ``False``, you can 1021s use the pool on an HTTP proxy and request foreign hosts. 1021s 1021s :param timeout: 1021s If specified, overrides the default timeout for this one 1021s request. It may be a float (in seconds) or an instance of 1021s :class:`urllib3.util.Timeout`. 1021s 1021s :param pool_timeout: 1021s If set and the pool is set to block=True, then this method will 1021s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1021s connection is available within the time period. 1021s 1021s :param bool preload_content: 1021s If True, the response's body will be preloaded into memory. 1021s 1021s :param bool decode_content: 1021s If True, will attempt to decode the body based on the 1021s 'content-encoding' header. 1021s 1021s :param release_conn: 1021s If False, then the urlopen call will not release the connection 1021s back into the pool once a response is received (but will release if 1021s you read the entire contents of the response such as when 1021s `preload_content=True`). This is useful if you're not preloading 1021s the response's content immediately. You will need to call 1021s ``r.release_conn()`` on the response ``r`` to return the connection 1021s back into the pool. If None, it takes the value of ``preload_content`` 1021s which defaults to ``True``. 1021s 1021s :param bool chunked: 1021s If True, urllib3 will send the body using chunked transfer 1021s encoding. Otherwise, urllib3 will send the body using the standard 1021s content-length form. Defaults to False. 1021s 1021s :param int body_pos: 1021s Position to seek to in file-like body in the event of a retry or 1021s redirect. Typically this won't need to be set because urllib3 will 1021s auto-populate the value when needed. 1021s """ 1021s parsed_url = parse_url(url) 1021s destination_scheme = parsed_url.scheme 1021s 1021s if headers is None: 1021s headers = self.headers 1021s 1021s if not isinstance(retries, Retry): 1021s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1021s 1021s if release_conn is None: 1021s release_conn = preload_content 1021s 1021s # Check host 1021s if assert_same_host and not self.is_same_host(url): 1021s raise HostChangedError(self, url, retries) 1021s 1021s # Ensure that the URL we're connecting to is properly encoded 1021s if url.startswith("/"): 1021s url = to_str(_encode_target(url)) 1021s else: 1021s url = to_str(parsed_url.url) 1021s 1021s conn = None 1021s 1021s # Track whether `conn` needs to be released before 1021s # returning/raising/recursing. Update this variable if necessary, and 1021s # leave `release_conn` constant throughout the function. That way, if 1021s # the function recurses, the original value of `release_conn` will be 1021s # passed down into the recursive call, and its value will be respected. 1021s # 1021s # See issue #651 [1] for details. 1021s # 1021s # [1] 1021s release_this_conn = release_conn 1021s 1021s http_tunnel_required = connection_requires_http_tunnel( 1021s self.proxy, self.proxy_config, destination_scheme 1021s ) 1021s 1021s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1021s # have to copy the headers dict so we can safely change it without those 1021s # changes being reflected in anyone else's copy. 1021s if not http_tunnel_required: 1021s headers = headers.copy() # type: ignore[attr-defined] 1021s headers.update(self.proxy_headers) # type: ignore[union-attr] 1021s 1021s # Must keep the exception bound to a separate variable or else Python 3 1021s # complains about UnboundLocalError. 1021s err = None 1021s 1021s # Keep track of whether we cleanly exited the except block. This 1021s # ensures we do proper cleanup in finally. 1021s clean_exit = False 1021s 1021s # Rewind body position, if needed. Record current position 1021s # for future rewinds in the event of a redirect/retry. 1021s body_pos = set_file_position(body, body_pos) 1021s 1021s try: 1021s # Request a connection from the queue. 1021s timeout_obj = self._get_timeout(timeout) 1021s conn = self._get_conn(timeout=pool_timeout) 1021s 1021s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1021s 1021s # Is this a closed/new connection that requires CONNECT tunnelling? 1021s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1021s try: 1021s self._prepare_proxy(conn) 1021s except (BaseSSLError, OSError, SocketTimeout) as e: 1021s self._raise_timeout( 1021s err=e, url=self.proxy.url, timeout_value=conn.timeout 1021s ) 1021s raise 1021s 1021s # If we're going to release the connection in ``finally:``, then 1021s # the response doesn't need to know about the connection. Otherwise 1021s # it will also try to release it and we'll have a double-release 1021s # mess. 1021s response_conn = conn if not release_conn else None 1021s 1021s # Make the request on the HTTPConnection object 1021s > response = self._make_request( 1021s conn, 1021s method, 1021s url, 1021s timeout=timeout_obj, 1021s body=body, 1021s headers=headers, 1021s chunked=chunked, 1021s retries=retries, 1021s response_conn=response_conn, 1021s preload_content=preload_content, 1021s decode_content=decode_content, 1021s **response_kw, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1021s raise new_e 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1021s self._validate_conn(conn) 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1021s conn.connect() 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1021s self.sock = sock = self._new_conn() 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s except socket.gaierror as e: 1021s raise NameResolutionError(self.host, self, e) from e 1021s except SocketTimeout as e: 1021s raise ConnectTimeoutError( 1021s self, 1021s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1021s ) from e 1021s 1021s except OSError as e: 1021s > raise NewConnectionError( 1021s self, f"Failed to establish a new connection: {e}" 1021s ) from e 1021s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1021s 1021s The above exception was the direct cause of the following exception: 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s > resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1021s retries = retries.increment( 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1021s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 1021s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1021s _pool = 1021s _stacktrace = 1021s 1021s def increment( 1021s self, 1021s method: str | None = None, 1021s url: str | None = None, 1021s response: BaseHTTPResponse | None = None, 1021s error: Exception | None = None, 1021s _pool: ConnectionPool | None = None, 1021s _stacktrace: TracebackType | None = None, 1021s ) -> Retry: 1021s """Return a new Retry object with incremented retry counters. 1021s 1021s :param response: A response object, or None, if the server did not 1021s return a response. 1021s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1021s :param Exception error: An error encountered during the request, or 1021s None if the response was received successfully. 1021s 1021s :return: A new ``Retry`` object. 1021s """ 1021s if self.total is False and error: 1021s # Disabled, indicate to re-raise the error. 1021s raise reraise(type(error), error, _stacktrace) 1021s 1021s total = self.total 1021s if total is not None: 1021s total -= 1 1021s 1021s connect = self.connect 1021s read = self.read 1021s redirect = self.redirect 1021s status_count = self.status 1021s other = self.other 1021s cause = "unknown" 1021s status = None 1021s redirect_location = None 1021s 1021s if error and self._is_connection_error(error): 1021s # Connect retry? 1021s if connect is False: 1021s raise reraise(type(error), error, _stacktrace) 1021s elif connect is not None: 1021s connect -= 1 1021s 1021s elif error and self._is_read_error(error): 1021s # Read retry? 1021s if read is False or method is None or not self._is_method_retryable(method): 1021s raise reraise(type(error), error, _stacktrace) 1021s elif read is not None: 1021s read -= 1 1021s 1021s elif error: 1021s # Other retry? 1021s if other is not None: 1021s other -= 1 1021s 1021s elif response and response.get_redirect_location(): 1021s # Redirect retry? 1021s if redirect is not None: 1021s redirect -= 1 1021s cause = "too many redirects" 1021s response_redirect_location = response.get_redirect_location() 1021s if response_redirect_location: 1021s redirect_location = response_redirect_location 1021s status = response.status 1021s 1021s else: 1021s # Incrementing because of a server error like a 500 in 1021s # status_forcelist and the given method is in the allowed_methods 1021s cause = ResponseError.GENERIC_ERROR 1021s if response and response.status: 1021s if status_count is not None: 1021s status_count -= 1 1021s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1021s status = response.status 1021s 1021s history = self.history + ( 1021s RequestHistory(method, url, error, status, redirect_location), 1021s ) 1021s 1021s new_retry = self.new( 1021s total=total, 1021s connect=connect, 1021s read=read, 1021s redirect=redirect, 1021s status=status_count, 1021s other=other, 1021s history=history, 1021s ) 1021s 1021s if new_retry.is_exhausted(): 1021s reason = error or ResponseError(cause) 1021s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1021s 1021s During handling of the above exception, another exception occurred: 1021s 1021s make_enc = functools.partial(, 'r50k_base') 1021s 1021s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 1021s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 1021s > enc = make_enc() 1021s 1021s tests/test_encoding.py:96: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1021s enc = Encoding(**constructor()) 1021s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 1021s mergeable_ranks = load_tiktoken_bpe( 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1021s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1021s contents = read_file(blobpath) 1021s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1021s resp = requests.get(blobpath) 1021s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1021s return request("get", url, params=params, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1021s return session.request(method=method, url=url, **kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1021s resp = self.send(prep, **send_kwargs) 1021s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1021s r = adapter.send(request, **kwargs) 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s self = 1021s request = , stream = False 1021s timeout = Timeout(connect=None, read=None, total=None), verify = True 1021s cert = None, proxies = OrderedDict() 1021s 1021s def send( 1021s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1021s ): 1021s """Sends PreparedRequest object. Returns Response object. 1021s 1021s :param request: The :class:`PreparedRequest ` being sent. 1021s :param stream: (optional) Whether to stream the request content. 1021s :param timeout: (optional) How long to wait for the server to send 1021s data before giving up, as a float, or a :ref:`(connect timeout, 1021s read timeout) ` tuple. 1021s :type timeout: float or tuple or urllib3 Timeout object 1021s :param verify: (optional) Either a boolean, in which case it controls whether 1021s we verify the server's TLS certificate, or a string, in which case it 1021s must be a path to a CA bundle to use 1021s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1021s :param proxies: (optional) The proxies dictionary to apply to the request. 1021s :rtype: requests.Response 1021s """ 1021s 1021s try: 1021s conn = self.get_connection_with_tls_context( 1021s request, verify, proxies=proxies, cert=cert 1021s ) 1021s except LocationValueError as e: 1021s raise InvalidURL(e, request=request) 1021s 1021s self.cert_verify(conn, request.url, verify, cert) 1021s url = self.request_url(request, proxies) 1021s self.add_headers( 1021s request, 1021s stream=stream, 1021s timeout=timeout, 1021s verify=verify, 1021s cert=cert, 1021s proxies=proxies, 1021s ) 1021s 1021s chunked = not (request.body is None or "Content-Length" in request.headers) 1021s 1021s if isinstance(timeout, tuple): 1021s try: 1021s connect, read = timeout 1021s timeout = TimeoutSauce(connect=connect, read=read) 1021s except ValueError: 1021s raise ValueError( 1021s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1021s f"or a single float to set both timeouts to the same value." 1021s ) 1021s elif isinstance(timeout, TimeoutSauce): 1021s pass 1021s else: 1021s timeout = TimeoutSauce(connect=timeout, read=timeout) 1021s 1021s try: 1021s resp = conn.urlopen( 1021s method=request.method, 1021s url=url, 1021s body=request.body, 1021s headers=request.headers, 1021s redirect=False, 1021s assert_same_host=False, 1021s preload_content=False, 1021s decode_content=False, 1021s retries=self.max_retries, 1021s timeout=timeout, 1021s chunked=chunked, 1021s ) 1021s 1021s except (ProtocolError, OSError) as err: 1021s raise ConnectionError(err, request=request) 1021s 1021s except MaxRetryError as e: 1021s if isinstance(e.reason, ConnectTimeoutError): 1021s # TODO: Remove this in 3.0.0: see #2811 1021s if not isinstance(e.reason, NewConnectionError): 1021s raise ConnectTimeout(e, request=request) 1021s 1021s if isinstance(e.reason, ResponseError): 1021s raise RetryError(e, request=request) 1021s 1021s if isinstance(e.reason, _ProxyError): 1021s raise ProxyError(e, request=request) 1021s 1021s if isinstance(e.reason, _SSLError): 1021s # This branch is for urllib3 v1.22 and later. 1021s raise SSLError(e, request=request) 1021s 1021s > raise ConnectionError(e, request=request) 1021s 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')) 1021s 1021s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1021s ________________ test_catastrophically_repetitive[cl100k_base] _________________ 1021s 1021s self = 1021s 1021s def _new_conn(self) -> socket.socket: 1021s """Establish a socket connection and set nodelay settings on it. 1021s 1021s :return: New socket connection. 1021s """ 1021s try: 1021s > sock = connection.create_connection( 1021s (self._dns_host, self.port), 1021s self.timeout, 1021s source_address=self.source_address, 1021s socket_options=self.socket_options, 1021s ) 1021s 1021s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1021s raise err 1021s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1021s 1021s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1021s source_address = None, socket_options = [(6, 1, 1)] 1021s 1021s def create_connection( 1021s address: tuple[str, int], 1021s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1021s source_address: tuple[str, int] | None = None, 1021s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1021s ) -> socket.socket: 1021s """Connect to *address* and return the socket object. 1021s 1021s Convenience function. Connect to *address* (a 2-tuple ``(host, 1021s port)``) and return the socket object. Passing the optional 1021s *timeout* parameter will set the timeout on the socket instance 1021s before attempting to connect. If no *timeout* is supplied, the 1021s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1021s is used. If *source_address* is set it must be a tuple of (host, port) 1021s for the socket to bind as a source address before making the connection. 1021s An host of '' or port 0 tells the OS to use the default. 1021s """ 1021s 1021s host, port = address 1021s if host.startswith("["): 1021s host = host.strip("[]") 1021s err = None 1021s 1021s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1021s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1021s # The original create_connection function always returns all records. 1021s family = allowed_gai_family() 1021s 1021s try: 1021s host.encode("idna") 1021s except UnicodeError: 1021s raise LocationParseError(f"'{host}', label empty or too long") from None 1021s 1021s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1021s af, socktype, proto, canonname, sa = res 1021s sock = None 1021s try: 1021s sock = socket.socket(af, socktype, proto) 1021s 1021s # If provided, set socket level options before connecting. 1021s _set_socket_options(sock, socket_options) 1021s 1021s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s make_enc = functools.partial(, 'cl100k_base') 1022s 1022s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 1022s def test_catastrophically_repetitive(make_enc: Callable[[], tiktoken.Encoding]): 1022s > enc = make_enc() 1022s 1022s tests/test_encoding.py:96: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s _______________________ test_basic_roundtrip[r50k_base] ________________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s make_enc = functools.partial(, 'r50k_base') 1022s 1022s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 1022s def test_basic_roundtrip(make_enc): 1022s > enc = make_enc() 1022s 1022s tests/test_encoding.py:115: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s ______________________ test_basic_roundtrip[cl100k_base] _______________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s make_enc = functools.partial(, 'cl100k_base') 1022s 1022s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 1022s def test_basic_roundtrip(make_enc): 1022s > enc = make_enc() 1022s 1022s tests/test_encoding.py:115: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s ________________________ test_hyp_roundtrip[r50k_base] _________________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s make_enc = functools.partial(, 'r50k_base') 1022s 1022s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 1022s > @hypothesis.given(text=st.text()) 1022s 1022s tests/test_encoding.py:131: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s tests/test_encoding.py:134: in test_hyp_roundtrip 1022s enc = make_enc() 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s E Falsifying example: test_hyp_roundtrip( 1022s E make_enc=functools.partial(get_encoding, 'r50k_base'), 1022s E text='', 1022s E ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s _______________________ test_hyp_roundtrip[cl100k_base] ________________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s make_enc = functools.partial(, 'cl100k_base') 1022s 1022s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 1022s > @hypothesis.given(text=st.text()) 1022s 1022s tests/test_encoding.py:131: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s tests/test_encoding.py:134: in test_hyp_roundtrip 1022s enc = make_enc() 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s E Falsifying example: test_hyp_roundtrip( 1022s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 1022s E text='', 1022s E ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s ____________________ test_single_token_roundtrip[r50k_base] ____________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s make_enc = functools.partial(, 'r50k_base') 1022s 1022s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 1022s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 1022s > enc = make_enc() 1022s 1022s tests/test_encoding.py:141: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s ___________________ test_single_token_roundtrip[cl100k_base] ___________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s make_enc = functools.partial(, 'cl100k_base') 1022s 1022s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 1022s def test_single_token_roundtrip(make_enc: Callable[[], tiktoken.Encoding]): 1022s > enc = make_enc() 1022s 1022s tests/test_encoding.py:141: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s ______________________________ test_special_token ______________________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s def test_special_token(): 1022s > enc = tiktoken.get_encoding("cl100k_base") 1022s 1022s tests/test_encoding.py:157: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s _____________________ test_hyp_special_ordinary[r50k_base] _____________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s make_enc = functools.partial(, 'r50k_base') 1022s 1022s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 1022s > @hypothesis.given(text=st.text()) 1022s 1022s tests/test_encoding.py:208: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s tests/test_encoding.py:211: in test_hyp_special_ordinary 1022s enc = make_enc() 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s E Falsifying example: test_hyp_special_ordinary( 1022s E make_enc=functools.partial(get_encoding, 'r50k_base'), 1022s E text='', 1022s E ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s ____________________ test_hyp_special_ordinary[cl100k_base] ____________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s make_enc = functools.partial(, 'cl100k_base') 1022s 1022s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 1022s > @hypothesis.given(text=st.text()) 1022s 1022s tests/test_encoding.py:208: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s tests/test_encoding.py:211: in test_hyp_special_ordinary 1022s enc = make_enc() 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s E Falsifying example: test_hyp_special_ordinary( 1022s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 1022s E text='', 1022s E ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s _________________________ test_batch_encode[r50k_base] _________________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s make_enc = functools.partial(, 'r50k_base') 1022s 1022s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 1022s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 1022s > enc = make_enc() 1022s 1022s tests/test_encoding.py:222: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s ________________________ test_batch_encode[cl100k_base] ________________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s make_enc = functools.partial(, 'cl100k_base') 1022s 1022s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 1022s def test_batch_encode(make_enc: Callable[[], tiktoken.Encoding]): 1022s > enc = make_enc() 1022s 1022s tests/test_encoding.py:222: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s _____________________ test_hyp_batch_roundtrip[r50k_base] ______________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s make_enc = functools.partial(, 'r50k_base') 1022s 1022s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 1022s > @hypothesis.given(batch=st.lists(st.text())) 1022s 1022s tests/test_encoding.py:237: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 1022s enc = make_enc() 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s E Falsifying example: test_hyp_batch_roundtrip( 1022s E make_enc=functools.partial(get_encoding, 'r50k_base'), 1022s E batch=[], 1022s E ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s ____________________ test_hyp_batch_roundtrip[cl100k_base] _____________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s make_enc = functools.partial(, 'cl100k_base') 1022s 1022s @pytest.mark.parametrize("make_enc", ENCODING_FACTORIES) 1022s > @hypothesis.given(batch=st.lists(st.text())) 1022s 1022s tests/test_encoding.py:237: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s tests/test_encoding.py:240: in test_hyp_batch_roundtrip 1022s enc = make_enc() 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s E Falsifying example: test_hyp_batch_roundtrip( 1022s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 1022s E batch=[], 1022s E ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s ___________________________ test_encoding_for_model ____________________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s def test_encoding_for_model(): 1022s > enc = tiktoken.encoding_for_model("gpt2") 1022s 1022s tests/test_misc.py:8: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 1022s return get_encoding(encoding_name_for_model(model_name)) 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 1022s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 1022s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s ________________________ test_hyp_offsets[cl100k_base] _________________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s make_enc = functools.partial(, 'cl100k_base') 1022s 1022s @pytest.mark.parametrize("make_enc", SOME_ENCODING_FACTORIES) 1022s > @hypothesis.given(data=st.data()) 1022s 1022s tests/test_offsets.py:29: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s tests/test_offsets.py:32: in test_hyp_offsets 1022s enc = make_enc() 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s E Falsifying example: test_hyp_offsets( 1022s E make_enc=functools.partial(get_encoding, 'cl100k_base'), 1022s E data=data(...), 1022s E ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s ______________________________ test_basic_offsets ______________________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/cl100k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/cl100k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s def test_basic_offsets(): 1022s > enc = tiktoken.get_encoding("cl100k_base") 1022s 1022s tests/test_offsets.py:50: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:76: in cl100k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s _________________________________ test_pickle __________________________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/encodings/r50k_base.tiktoken', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/encodings/r50k_base.tiktoken', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/encodings/r50k_base.tiktoken', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s def test_pickle(): 1022s import pickle 1022s 1022s > enc_old = tiktoken.get_encoding("r50k_base") 1022s 1022s tests/test_pickle.py:7: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:34: in r50k_base 1022s mergeable_ranks = load_tiktoken_bpe( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:144: in load_tiktoken_bpe 1022s contents = read_file_cached(tiktoken_bpe_file, expected_hash) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s _________________________________ test_simple __________________________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s def test_simple(): 1022s # Note that there are more actual tests, they're just not currently public :-) 1022s > enc = tiktoken.get_encoding("gpt2") 1022s 1022s tests/test_simple_public.py:9: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 1022s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 1022s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s ___________________________ test_encoding_for_model ____________________________ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s > sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:203: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:85: in create_connection 1022s raise err 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s address = ('openaipublic.blob.core.windows.net', 443), timeout = None 1022s source_address = None, socket_options = [(6, 1, 1)] 1022s 1022s def create_connection( 1022s address: tuple[str, int], 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s source_address: tuple[str, int] | None = None, 1022s socket_options: _TYPE_SOCKET_OPTIONS | None = None, 1022s ) -> socket.socket: 1022s """Connect to *address* and return the socket object. 1022s 1022s Convenience function. Connect to *address* (a 2-tuple ``(host, 1022s port)``) and return the socket object. Passing the optional 1022s *timeout* parameter will set the timeout on the socket instance 1022s before attempting to connect. If no *timeout* is supplied, the 1022s global default timeout setting returned by :func:`socket.getdefaulttimeout` 1022s is used. If *source_address* is set it must be a tuple of (host, port) 1022s for the socket to bind as a source address before making the connection. 1022s An host of '' or port 0 tells the OS to use the default. 1022s """ 1022s 1022s host, port = address 1022s if host.startswith("["): 1022s host = host.strip("[]") 1022s err = None 1022s 1022s # Using the value from allowed_gai_family() in the context of getaddrinfo lets 1022s # us select whether to work with IPv4 DNS records, IPv6 records, or both. 1022s # The original create_connection function always returns all records. 1022s family = allowed_gai_family() 1022s 1022s try: 1022s host.encode("idna") 1022s except UnicodeError: 1022s raise LocationParseError(f"'{host}', label empty or too long") from None 1022s 1022s for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 1022s af, socktype, proto, canonname, sa = res 1022s sock = None 1022s try: 1022s sock = socket.socket(af, socktype, proto) 1022s 1022s # If provided, set socket level options before connecting. 1022s _set_socket_options(sock, socket_options) 1022s 1022s if timeout is not _DEFAULT_TIMEOUT: 1022s sock.settimeout(timeout) 1022s if source_address: 1022s sock.bind(source_address) 1022s > sock.connect(sa) 1022s E ConnectionRefusedError: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/connection.py:73: ConnectionRefusedError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', body = None 1022s headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 1022s retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s redirect = False, assert_same_host = False 1022s timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None 1022s release_conn = False, chunked = False, body_pos = None, preload_content = False 1022s decode_content = False, response_kw = {} 1022s parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/gpt-2/encodings/main/vocab.bpe', query=None, fragment=None) 1022s destination_scheme = None, conn = None, release_this_conn = True 1022s http_tunnel_required = False, err = None, clean_exit = False 1022s 1022s def urlopen( # type: ignore[override] 1022s self, 1022s method: str, 1022s url: str, 1022s body: _TYPE_BODY | None = None, 1022s headers: typing.Mapping[str, str] | None = None, 1022s retries: Retry | bool | int | None = None, 1022s redirect: bool = True, 1022s assert_same_host: bool = True, 1022s timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 1022s pool_timeout: int | None = None, 1022s release_conn: bool | None = None, 1022s chunked: bool = False, 1022s body_pos: _TYPE_BODY_POSITION | None = None, 1022s preload_content: bool = True, 1022s decode_content: bool = True, 1022s **response_kw: typing.Any, 1022s ) -> BaseHTTPResponse: 1022s """ 1022s Get a connection from the pool and perform an HTTP request. This is the 1022s lowest level call for making a request, so you'll need to specify all 1022s the raw details. 1022s 1022s .. note:: 1022s 1022s More commonly, it's appropriate to use a convenience method 1022s such as :meth:`request`. 1022s 1022s .. note:: 1022s 1022s `release_conn` will only behave as expected if 1022s `preload_content=False` because we want to make 1022s `preload_content=False` the default behaviour someday soon without 1022s breaking backwards compatibility. 1022s 1022s :param method: 1022s HTTP request method (such as GET, POST, PUT, etc.) 1022s 1022s :param url: 1022s The URL to perform the request on. 1022s 1022s :param body: 1022s Data to send in the request body, either :class:`str`, :class:`bytes`, 1022s an iterable of :class:`str`/:class:`bytes`, or a file-like object. 1022s 1022s :param headers: 1022s Dictionary of custom headers to send, such as User-Agent, 1022s If-None-Match, etc. If None, pool headers are used. If provided, 1022s these headers completely replace any pool-specific headers. 1022s 1022s :param retries: 1022s Configure the number of retries to allow before raising a 1022s :class:`~urllib3.exceptions.MaxRetryError` exception. 1022s 1022s Pass ``None`` to retry until you receive a response. Pass a 1022s :class:`~urllib3.util.retry.Retry` object for fine-grained control 1022s over different types of retries. 1022s Pass an integer number to retry connection errors that many times, 1022s but no other types of errors. Pass zero to never retry. 1022s 1022s If ``False``, then retries are disabled and any exception is raised 1022s immediately. Also, instead of raising a MaxRetryError on redirects, 1022s the redirect response will be returned. 1022s 1022s :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 1022s 1022s :param redirect: 1022s If True, automatically handle redirects (status codes 301, 302, 1022s 303, 307, 308). Each redirect counts as a retry. Disabling retries 1022s will disable redirect, too. 1022s 1022s :param assert_same_host: 1022s If ``True``, will make sure that the host of the pool requests is 1022s consistent else will raise HostChangedError. When ``False``, you can 1022s use the pool on an HTTP proxy and request foreign hosts. 1022s 1022s :param timeout: 1022s If specified, overrides the default timeout for this one 1022s request. It may be a float (in seconds) or an instance of 1022s :class:`urllib3.util.Timeout`. 1022s 1022s :param pool_timeout: 1022s If set and the pool is set to block=True, then this method will 1022s block for ``pool_timeout`` seconds and raise EmptyPoolError if no 1022s connection is available within the time period. 1022s 1022s :param bool preload_content: 1022s If True, the response's body will be preloaded into memory. 1022s 1022s :param bool decode_content: 1022s If True, will attempt to decode the body based on the 1022s 'content-encoding' header. 1022s 1022s :param release_conn: 1022s If False, then the urlopen call will not release the connection 1022s back into the pool once a response is received (but will release if 1022s you read the entire contents of the response such as when 1022s `preload_content=True`). This is useful if you're not preloading 1022s the response's content immediately. You will need to call 1022s ``r.release_conn()`` on the response ``r`` to return the connection 1022s back into the pool. If None, it takes the value of ``preload_content`` 1022s which defaults to ``True``. 1022s 1022s :param bool chunked: 1022s If True, urllib3 will send the body using chunked transfer 1022s encoding. Otherwise, urllib3 will send the body using the standard 1022s content-length form. Defaults to False. 1022s 1022s :param int body_pos: 1022s Position to seek to in file-like body in the event of a retry or 1022s redirect. Typically this won't need to be set because urllib3 will 1022s auto-populate the value when needed. 1022s """ 1022s parsed_url = parse_url(url) 1022s destination_scheme = parsed_url.scheme 1022s 1022s if headers is None: 1022s headers = self.headers 1022s 1022s if not isinstance(retries, Retry): 1022s retries = Retry.from_int(retries, redirect=redirect, default=self.retries) 1022s 1022s if release_conn is None: 1022s release_conn = preload_content 1022s 1022s # Check host 1022s if assert_same_host and not self.is_same_host(url): 1022s raise HostChangedError(self, url, retries) 1022s 1022s # Ensure that the URL we're connecting to is properly encoded 1022s if url.startswith("/"): 1022s url = to_str(_encode_target(url)) 1022s else: 1022s url = to_str(parsed_url.url) 1022s 1022s conn = None 1022s 1022s # Track whether `conn` needs to be released before 1022s # returning/raising/recursing. Update this variable if necessary, and 1022s # leave `release_conn` constant throughout the function. That way, if 1022s # the function recurses, the original value of `release_conn` will be 1022s # passed down into the recursive call, and its value will be respected. 1022s # 1022s # See issue #651 [1] for details. 1022s # 1022s # [1] 1022s release_this_conn = release_conn 1022s 1022s http_tunnel_required = connection_requires_http_tunnel( 1022s self.proxy, self.proxy_config, destination_scheme 1022s ) 1022s 1022s # Merge the proxy headers. Only done when not using HTTP CONNECT. We 1022s # have to copy the headers dict so we can safely change it without those 1022s # changes being reflected in anyone else's copy. 1022s if not http_tunnel_required: 1022s headers = headers.copy() # type: ignore[attr-defined] 1022s headers.update(self.proxy_headers) # type: ignore[union-attr] 1022s 1022s # Must keep the exception bound to a separate variable or else Python 3 1022s # complains about UnboundLocalError. 1022s err = None 1022s 1022s # Keep track of whether we cleanly exited the except block. This 1022s # ensures we do proper cleanup in finally. 1022s clean_exit = False 1022s 1022s # Rewind body position, if needed. Record current position 1022s # for future rewinds in the event of a redirect/retry. 1022s body_pos = set_file_position(body, body_pos) 1022s 1022s try: 1022s # Request a connection from the queue. 1022s timeout_obj = self._get_timeout(timeout) 1022s conn = self._get_conn(timeout=pool_timeout) 1022s 1022s conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] 1022s 1022s # Is this a closed/new connection that requires CONNECT tunnelling? 1022s if self.proxy is not None and http_tunnel_required and conn.is_closed: 1022s try: 1022s self._prepare_proxy(conn) 1022s except (BaseSSLError, OSError, SocketTimeout) as e: 1022s self._raise_timeout( 1022s err=e, url=self.proxy.url, timeout_value=conn.timeout 1022s ) 1022s raise 1022s 1022s # If we're going to release the connection in ``finally:``, then 1022s # the response doesn't need to know about the connection. Otherwise 1022s # it will also try to release it and we'll have a double-release 1022s # mess. 1022s response_conn = conn if not release_conn else None 1022s 1022s # Make the request on the HTTPConnection object 1022s > response = self._make_request( 1022s conn, 1022s method, 1022s url, 1022s timeout=timeout_obj, 1022s body=body, 1022s headers=headers, 1022s chunked=chunked, 1022s retries=retries, 1022s response_conn=response_conn, 1022s preload_content=preload_content, 1022s decode_content=decode_content, 1022s **response_kw, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:791: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:492: in _make_request 1022s raise new_e 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:468: in _make_request 1022s self._validate_conn(conn) 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:1097: in _validate_conn 1022s conn.connect() 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:611: in connect 1022s self.sock = sock = self._new_conn() 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s 1022s def _new_conn(self) -> socket.socket: 1022s """Establish a socket connection and set nodelay settings on it. 1022s 1022s :return: New socket connection. 1022s """ 1022s try: 1022s sock = connection.create_connection( 1022s (self._dns_host, self.port), 1022s self.timeout, 1022s source_address=self.source_address, 1022s socket_options=self.socket_options, 1022s ) 1022s except socket.gaierror as e: 1022s raise NameResolutionError(self.host, self, e) from e 1022s except SocketTimeout as e: 1022s raise ConnectTimeoutError( 1022s self, 1022s f"Connection to {self.host} timed out. (connect timeout={self.timeout})", 1022s ) from e 1022s 1022s except OSError as e: 1022s > raise NewConnectionError( 1022s self, f"Failed to establish a new connection: {e}" 1022s ) from e 1022s E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused 1022s 1022s /usr/lib/python3/dist-packages/urllib3/connection.py:218: NewConnectionError 1022s 1022s The above exception was the direct cause of the following exception: 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s > resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:667: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/urllib3/connectionpool.py:845: in urlopen 1022s retries = retries.increment( 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = Retry(total=0, connect=None, read=False, redirect=None, status=None) 1022s method = 'GET', url = '/gpt-2/encodings/main/vocab.bpe', response = None 1022s error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') 1022s _pool = 1022s _stacktrace = 1022s 1022s def increment( 1022s self, 1022s method: str | None = None, 1022s url: str | None = None, 1022s response: BaseHTTPResponse | None = None, 1022s error: Exception | None = None, 1022s _pool: ConnectionPool | None = None, 1022s _stacktrace: TracebackType | None = None, 1022s ) -> Retry: 1022s """Return a new Retry object with incremented retry counters. 1022s 1022s :param response: A response object, or None, if the server did not 1022s return a response. 1022s :type response: :class:`~urllib3.response.BaseHTTPResponse` 1022s :param Exception error: An error encountered during the request, or 1022s None if the response was received successfully. 1022s 1022s :return: A new ``Retry`` object. 1022s """ 1022s if self.total is False and error: 1022s # Disabled, indicate to re-raise the error. 1022s raise reraise(type(error), error, _stacktrace) 1022s 1022s total = self.total 1022s if total is not None: 1022s total -= 1 1022s 1022s connect = self.connect 1022s read = self.read 1022s redirect = self.redirect 1022s status_count = self.status 1022s other = self.other 1022s cause = "unknown" 1022s status = None 1022s redirect_location = None 1022s 1022s if error and self._is_connection_error(error): 1022s # Connect retry? 1022s if connect is False: 1022s raise reraise(type(error), error, _stacktrace) 1022s elif connect is not None: 1022s connect -= 1 1022s 1022s elif error and self._is_read_error(error): 1022s # Read retry? 1022s if read is False or method is None or not self._is_method_retryable(method): 1022s raise reraise(type(error), error, _stacktrace) 1022s elif read is not None: 1022s read -= 1 1022s 1022s elif error: 1022s # Other retry? 1022s if other is not None: 1022s other -= 1 1022s 1022s elif response and response.get_redirect_location(): 1022s # Redirect retry? 1022s if redirect is not None: 1022s redirect -= 1 1022s cause = "too many redirects" 1022s response_redirect_location = response.get_redirect_location() 1022s if response_redirect_location: 1022s redirect_location = response_redirect_location 1022s status = response.status 1022s 1022s else: 1022s # Incrementing because of a server error like a 500 in 1022s # status_forcelist and the given method is in the allowed_methods 1022s cause = ResponseError.GENERIC_ERROR 1022s if response and response.status: 1022s if status_count is not None: 1022s status_count -= 1 1022s cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) 1022s status = response.status 1022s 1022s history = self.history + ( 1022s RequestHistory(method, url, error, status, redirect_location), 1022s ) 1022s 1022s new_retry = self.new( 1022s total=total, 1022s connect=connect, 1022s read=read, 1022s redirect=redirect, 1022s status=status_count, 1022s other=other, 1022s history=history, 1022s ) 1022s 1022s if new_retry.is_exhausted(): 1022s reason = error or ResponseError(cause) 1022s > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/urllib3/util/retry.py:517: MaxRetryError 1022s 1022s During handling of the above exception, another exception occurred: 1022s 1022s def test_encoding_for_model(): 1022s > enc = tiktoken.encoding_for_model("gpt2") 1022s 1022s tests/test_simple_public.py:26: 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s /usr/lib/python3/dist-packages/tiktoken/model.py:105: in encoding_for_model 1022s return get_encoding(encoding_name_for_model(model_name)) 1022s /usr/lib/python3/dist-packages/tiktoken/registry.py:86: in get_encoding 1022s enc = Encoding(**constructor()) 1022s /usr/lib/python3/dist-packages/tiktoken_ext/openai_public.py:18: in gpt2 1022s mergeable_ranks = data_gym_to_mergeable_bpe_ranks( 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:103: in data_gym_to_mergeable_bpe_ranks 1022s vocab_bpe_contents = read_file_cached(vocab_bpe_file, vocab_bpe_hash).decode() 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:63: in read_file_cached 1022s contents = read_file(blobpath) 1022s /usr/lib/python3/dist-packages/tiktoken/load.py:24: in read_file 1022s resp = requests.get(blobpath) 1022s /usr/lib/python3/dist-packages/requests/api.py:73: in get 1022s return request("get", url, params=params, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/api.py:59: in request 1022s return session.request(method=method, url=url, **kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:589: in request 1022s resp = self.send(prep, **send_kwargs) 1022s /usr/lib/python3/dist-packages/requests/sessions.py:703: in send 1022s r = adapter.send(request, **kwargs) 1022s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1022s 1022s self = 1022s request = , stream = False 1022s timeout = Timeout(connect=None, read=None, total=None), verify = True 1022s cert = None, proxies = OrderedDict() 1022s 1022s def send( 1022s self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 1022s ): 1022s """Sends PreparedRequest object. Returns Response object. 1022s 1022s :param request: The :class:`PreparedRequest ` being sent. 1022s :param stream: (optional) Whether to stream the request content. 1022s :param timeout: (optional) How long to wait for the server to send 1022s data before giving up, as a float, or a :ref:`(connect timeout, 1022s read timeout) ` tuple. 1022s :type timeout: float or tuple or urllib3 Timeout object 1022s :param verify: (optional) Either a boolean, in which case it controls whether 1022s we verify the server's TLS certificate, or a string, in which case it 1022s must be a path to a CA bundle to use 1022s :param cert: (optional) Any user-provided SSL certificate to be trusted. 1022s :param proxies: (optional) The proxies dictionary to apply to the request. 1022s :rtype: requests.Response 1022s """ 1022s 1022s try: 1022s conn = self.get_connection_with_tls_context( 1022s request, verify, proxies=proxies, cert=cert 1022s ) 1022s except LocationValueError as e: 1022s raise InvalidURL(e, request=request) 1022s 1022s self.cert_verify(conn, request.url, verify, cert) 1022s url = self.request_url(request, proxies) 1022s self.add_headers( 1022s request, 1022s stream=stream, 1022s timeout=timeout, 1022s verify=verify, 1022s cert=cert, 1022s proxies=proxies, 1022s ) 1022s 1022s chunked = not (request.body is None or "Content-Length" in request.headers) 1022s 1022s if isinstance(timeout, tuple): 1022s try: 1022s connect, read = timeout 1022s timeout = TimeoutSauce(connect=connect, read=read) 1022s except ValueError: 1022s raise ValueError( 1022s f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 1022s f"or a single float to set both timeouts to the same value." 1022s ) 1022s elif isinstance(timeout, TimeoutSauce): 1022s pass 1022s else: 1022s timeout = TimeoutSauce(connect=timeout, read=timeout) 1022s 1022s try: 1022s resp = conn.urlopen( 1022s method=request.method, 1022s url=url, 1022s body=request.body, 1022s headers=request.headers, 1022s redirect=False, 1022s assert_same_host=False, 1022s preload_content=False, 1022s decode_content=False, 1022s retries=self.max_retries, 1022s timeout=timeout, 1022s chunked=chunked, 1022s ) 1022s 1022s except (ProtocolError, OSError) as err: 1022s raise ConnectionError(err, request=request) 1022s 1022s except MaxRetryError as e: 1022s if isinstance(e.reason, ConnectTimeoutError): 1022s # TODO: Remove this in 3.0.0: see #2811 1022s if not isinstance(e.reason, NewConnectionError): 1022s raise ConnectTimeout(e, request=request) 1022s 1022s if isinstance(e.reason, ResponseError): 1022s raise RetryError(e, request=request) 1022s 1022s if isinstance(e.reason, _ProxyError): 1022s raise ProxyError(e, request=request) 1022s 1022s if isinstance(e.reason, _SSLError): 1022s # This branch is for urllib3 v1.22 and later. 1022s raise SSLError(e, request=request) 1022s 1022s > raise ConnectionError(e, request=request) 1022s 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')) 1022s 1022s /usr/lib/python3/dist-packages/requests/adapters.py:700: ConnectionError 1022s =========================== short test summary info ============================ 1022s FAILED tests/test_encoding.py::test_simple - requests.exceptions.ConnectionEr... 1022s FAILED tests/test_encoding.py::test_simple_repeated - requests.exceptions.Con... 1022s FAILED tests/test_encoding.py::test_simple_regex - requests.exceptions.Connec... 1022s FAILED tests/test_encoding.py::test_basic_encode - requests.exceptions.Connec... 1022s FAILED tests/test_encoding.py::test_encode_empty - requests.exceptions.Connec... 1022s FAILED tests/test_encoding.py::test_encode_bytes - requests.exceptions.Connec... 1022s FAILED tests/test_encoding.py::test_encode_surrogate_pairs - requests.excepti... 1022s FAILED tests/test_encoding.py::test_catastrophically_repetitive[r50k_base] - ... 1022s FAILED tests/test_encoding.py::test_catastrophically_repetitive[cl100k_base] 1022s FAILED tests/test_encoding.py::test_basic_roundtrip[r50k_base] - requests.exc... 1022s FAILED tests/test_encoding.py::test_basic_roundtrip[cl100k_base] - requests.e... 1022s FAILED tests/test_encoding.py::test_hyp_roundtrip[r50k_base] - requests.excep... 1022s FAILED tests/test_encoding.py::test_hyp_roundtrip[cl100k_base] - requests.exc... 1022s FAILED tests/test_encoding.py::test_single_token_roundtrip[r50k_base] - reque... 1022s FAILED tests/test_encoding.py::test_single_token_roundtrip[cl100k_base] - req... 1022s FAILED tests/test_encoding.py::test_special_token - requests.exceptions.Conne... 1022s FAILED tests/test_encoding.py::test_hyp_special_ordinary[r50k_base] - request... 1022s FAILED tests/test_encoding.py::test_hyp_special_ordinary[cl100k_base] - reque... 1022s FAILED tests/test_encoding.py::test_batch_encode[r50k_base] - requests.except... 1022s FAILED tests/test_encoding.py::test_batch_encode[cl100k_base] - requests.exce... 1022s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[r50k_base] - requests... 1022s FAILED tests/test_encoding.py::test_hyp_batch_roundtrip[cl100k_base] - reques... 1022s FAILED tests/test_misc.py::test_encoding_for_model - requests.exceptions.Conn... 1022s FAILED tests/test_offsets.py::test_hyp_offsets[cl100k_base] - requests.except... 1022s FAILED tests/test_offsets.py::test_basic_offsets - requests.exceptions.Connec... 1022s FAILED tests/test_pickle.py::test_pickle - requests.exceptions.ConnectionErro... 1022s FAILED tests/test_simple_public.py::test_simple - requests.exceptions.Connect... 1022s FAILED tests/test_simple_public.py::test_encoding_for_model - requests.except... 1022s ======================== 28 failed, 2 passed in 34.36s ========================= 1022s autopkgtest [20:48:02]: test pybuild-autopkgtest: -----------------------] 1026s autopkgtest [20:48:06]: test pybuild-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 1026s pybuild-autopkgtest FAIL non-zero exit status 25 1030s autopkgtest [20:48:10]: @@@@@@@@@@@@@@@@@@@@ summary 1030s pybuild-autopkgtest FAIL non-zero exit status 25