<86>Aug 3 09:38:23 userdel[4062463]: delete user 'rooter' <86>Aug 3 09:38:23 userdel[4062463]: removed group 'rooter' owned by 'rooter' <86>Aug 3 09:38:23 userdel[4062463]: removed shadow group 'rooter' owned by 'rooter' <86>Aug 3 09:38:23 groupadd[4062602]: group added to /etc/group: name=rooter, GID=1862 <86>Aug 3 09:38:23 groupadd[4062602]: group added to /etc/gshadow: name=rooter <86>Aug 3 09:38:23 groupadd[4062602]: new group: name=rooter, GID=1862 <86>Aug 3 09:38:23 useradd[4062673]: new user: name=rooter, UID=1862, GID=1862, home=/root, shell=/bin/bash, from=none <86>Aug 3 09:38:23 userdel[4062798]: delete user 'builder' <86>Aug 3 09:38:23 userdel[4062798]: removed group 'builder' owned by 'builder' <86>Aug 3 09:38:23 userdel[4062798]: removed shadow group 'builder' owned by 'builder' <86>Aug 3 09:38:23 groupadd[4062895]: group added to /etc/group: name=builder, GID=1863 <86>Aug 3 09:38:23 groupadd[4062895]: group added to /etc/gshadow: name=builder <86>Aug 3 09:38:23 groupadd[4062895]: new group: name=builder, GID=1863 <86>Aug 3 09:38:23 useradd[4062970]: new user: name=builder, UID=1863, GID=1863, home=/usr/src, shell=/bin/bash, from=none <13>Aug 3 09:38:31 rpmi: libmpdec3-2.5.1-alt3 sisyphus+314490.500.5.1 1675432004 installed <13>Aug 3 09:38:31 rpmi: libgdbm-1.8.3-alt10 sisyphus+346222.200.3.2 1716468404 installed <13>Aug 3 09:38:31 rpmi: libexpat-2.7.1-alt1 sisyphus+379929.100.1.1 1743519381 installed <13>Aug 3 09:38:31 rpmi: openssl-config-3.2.0-alt1 sisyphus+366659.140.4.1 1736956949 installed <13>Aug 3 09:38:31 rpmi: libb2-0.98.1-alt1_1 sisyphus+291614.100.1.1 1638962877 installed <13>Aug 3 09:38:31 rpmi: libp11-kit-1:0.25.5-alt1 sisyphus+352553.100.1.1 1720622573 installed <13>Aug 3 09:38:31 rpmi: libtasn1-4.20.0-alt2 sisyphus+375829.100.1.1 1740299335 installed <13>Aug 3 09:38:31 rpmi: rpm-macros-alternatives-0.5.3-alt1 sisyphus+371878.100.1.1 1737988822 installed <13>Aug 3 09:38:31 rpmi: alternatives-0.5.3-alt1 sisyphus+371878.100.1.1 1737988822 installed <13>Aug 3 09:38:31 rpmi: ca-certificates-2025.07.29-alt1 sisyphus+391139.200.2.1 1753801312 installed <13>Aug 3 09:38:31 rpmi: ca-trust-0.2.0-alt1 sisyphus+344843.100.1.1 1712743326 installed <13>Aug 3 09:38:31 rpmi: p11-kit-trust-1:0.25.5-alt1 sisyphus+352553.100.1.1 1720622573 installed <13>Aug 3 09:38:31 rpmi: libcrypto3-3.3.3-alt1 sisyphus+374381.40.2.1 1739299401 installed <13>Aug 3 09:38:31 rpmi: libssl3-3.3.3-alt1 sisyphus+374381.40.2.1 1739299401 installed <13>Aug 3 09:38:31 rpmi: python3-3.12.11-alt1 sisyphus+389751.100.1.1 1752340459 installed <13>Aug 3 09:38:31 rpmi: python3-base-3.12.11-alt1 sisyphus+389751.100.1.1 1752340459 installed <13>Aug 3 09:38:31 rpmi: python3-module-py3dephell-0.3.1-alt1 sisyphus+365261.200.1.1 1734463433 installed <13>Aug 3 09:38:32 rpmi: python3-module-pyproject-installer-0.5.5-alt2 sisyphus+366395.100.1.1 1735032014 installed <13>Aug 3 09:38:32 rpmi: rpm-macros-pyproject-0.0.9-alt1 sisyphus+362541.300.2.1 1731671840 installed <13>Aug 3 09:38:32 rpmi: tests-for-installed-python3-pkgs-0.1.28-alt1 sisyphus+375953.100.2.1 1740855713 installed <13>Aug 3 09:38:32 rpmi: rpm-build-python3-0.1.28-alt1 sisyphus+375953.100.2.1 1740855713 installed <13>Aug 3 09:38:32 rpmi: rpm-build-pyproject-0.0.9-alt1 sisyphus+362541.300.2.1 1731671840 installed <13>Aug 3 09:38:35 rpmi: python3-module-typing_extensions-4.14.1-alt1 sisyphus+389153.100.1.1 1751831689 installed <13>Aug 3 09:38:35 rpmi: python3-module-pluggy-1.6.0-alt1 sisyphus+384666.100.2.1 1747813604 installed <13>Aug 3 09:38:35 rpmi: python3-module-packaging-25.0-alt1 sisyphus+382195.100.1.1 1745223121 installed <13>Aug 3 09:38:35 rpmi: python3-module-more-itertools-10.7.0-alt1 sisyphus+384072.100.2.1 1747647538 installed <13>Aug 3 09:38:35 rpmi: python3-module-click-8.2.1-alt1 sisyphus+384735.300.4.1 1747996175 installed <13>Aug 3 09:38:35 rpmi: python3-module-idna-3.10-alt1 sisyphus+358681.100.1.1 1727701241 installed <13>Aug 3 09:38:35 rpmi: libtcl-8.6.13-alt1 sisyphus+310696.100.1.1 1669548266 installed <13>Aug 3 09:38:35 rpmi: python3-module-jaraco.functools-4.2.1-alt1 sisyphus+387893.100.1.1 1750561999 installed <13>Aug 3 09:38:35 rpmi: python3-module-certifi-2024.12.14-alt1 sisyphus+369729.200.2.2 1737050219 installed <13>Aug 3 09:38:35 rpmi: python3-module-sniffio-1.3.1-alt1 sisyphus+341424.100.1.1 1708941879 installed <13>Aug 3 09:38:35 rpmi: libopenblas-0.3.30-alt1 sisyphus+387628.100.1.1 1750361105 installed <13>Aug 3 09:38:35 rpmi: tcl-8.6.13-alt1 sisyphus+310696.100.1.1 1669548266 installed <13>Aug 3 09:38:35 rpmi: python3-module-click-default-group-1.2.4-alt1 sisyphus+337380.60.2.1 1703719884 installed <13>Aug 3 09:38:35 rpmi: python3-module-wheel-0.45.1-alt4 sisyphus+384227.100.3.1 1747487276 installed <13>Aug 3 09:38:35 rpmi: python3-module-pydantic-core-2.33.2-alt1 sisyphus+383374.100.3.1 1746561227 installed <13>Aug 3 09:38:35 rpmi: python3-module-typing-inspection-0.4.1-alt1 sisyphus+386814.300.2.1 1749543502 installed <13>Aug 3 09:38:35 rpmi: python3-module-tabulate-0.9.0-alt1 sisyphus+309729.100.1.1 1667927256 installed <13>Aug 3 09:38:35 rpmi: python3-module-sqlite-fts4-1.0.3-alt1 sisyphus+376787.100.1.1 1741081692 installed <13>Aug 3 09:38:35 rpmi: python3-module-platformdirs-4.3.8-alt1 sisyphus+384104.100.2.1 1747728597 installed <13>Aug 3 09:38:35 rpmi: python3-module-urllib3-2:2.5.0-alt1 sisyphus+387543.100.2.1 1750405108 installed <13>Aug 3 09:38:35 rpmi: python3-module-jiter-0.9.0-alt1 sisyphus+377604.100.1.1 1741679214 installed <13>Aug 3 09:38:35 rpmi: python3-module-jaraco.context-6.0.1-alt1.1 sisyphus+376369.6200.10.1 1746628448 installed <13>Aug 3 09:38:35 rpmi: python3-module-iniconfig-2.1.0-alt1 sisyphus+378658.100.2.1 1742493599 installed <13>Aug 3 09:38:35 rpmi: python3-module-pytest-8.3.5-alt3 sisyphus+385748.200.2.1 1748862411 installed <13>Aug 3 09:38:35 rpmi: python3-module-socksio-1.0.0-alt1 sisyphus+295017.1500.2.1 1644498004 installed <13>Aug 3 09:38:35 rpmi: python3-module-h11-0.16.0-alt1 sisyphus+388872.40.2.1 1751609067 installed <13>Aug 3 09:38:35 rpmi: python3-module-httpcore-1.0.7-alt1 sisyphus+378468.100.1.1 1742318664 installed <13>Aug 3 09:38:35 rpmi: python3-module-distro-1.9.0-alt1 sisyphus+388537.340.4.1 1751371947 installed <13>Aug 3 09:38:35 rpmi: python3-module-six-1.17.0-alt1.1 sisyphus+373470.100.1.1 1738920023 installed <13>Aug 3 09:38:35 rpmi: python3-module-dateutil-2.9.0.post0-alt1 sisyphus+378451.100.1.1 1742313746 installed <13>Aug 3 09:38:35 rpmi: python3-module-charset-normalizer-3.2.0-alt1 sisyphus+347396.200.2.1 1714733155 installed <13>Aug 3 09:38:35 rpmi: python3-module-requests-2.32.4-alt1 sisyphus+386815.100.1.1 1749543206 installed <13>Aug 3 09:38:35 rpmi: python3-module-autocommand-2.2.2-alt1.1 sisyphus+339714.100.1.1 1706968174 installed <13>Aug 3 09:38:35 rpmi: python3-module-jaraco.text-4.0.0-alt1.1 sisyphus+376369.7300.10.1 1746628739 installed <13>Aug 3 09:38:35 rpmi: python3-module-pkg_resources-1:80.9.0-alt1 sisyphus+385748.100.2.1 1748862263 installed <13>Aug 3 09:38:35 rpmi: python3-module-attrs-25.3.0-alt1 sisyphus+378700.100.1.1 1742472992 installed <13>Aug 3 09:38:35 rpmi: python3-module-outcome-1.3.0-alt1 sisyphus+332382.100.1.1 1697882349 installed <13>Aug 3 09:38:35 rpmi: python3-module-anyio-4.9.0-alt1 sisyphus+380033.1100.6.1 1743624903 installed <13>Aug 3 09:38:36 rpmi: python3-module-httpx-0.28.1-alt1 sisyphus+388844.100.2.1 1752501566 installed <13>Aug 3 09:38:36 rpmi: python3-module-annotated-types-0.7.0-alt1 sisyphus+349932.100.1.1 1717043663 installed <13>Aug 3 09:38:36 rpmi: python3-module-pydantic-2.11.7-alt1 sisyphus+387540.200.3.1 1750336895 installed <13>Aug 3 09:38:36 rpmi: libyaml2-0.2.5-alt1 sisyphus+278391.100.1.1 1626094928 installed <13>Aug 3 09:38:36 rpmi: libsqlite3-3.50.0-alt1 sisyphus+391032.300.3.1 1753725492 installed <13>Aug 3 09:38:36 rpmi: python3-modules-sqlite3-3.12.11-alt1 sisyphus+389751.100.1.1 1752340459 installed <13>Aug 3 09:38:36 rpmi: python3-module-sqlite-utils-3.38-alt1 sisyphus+376787.200.2.3 1741087435 installed <13>Aug 3 09:38:36 rpmi: libpython3-3.12.11-alt1 sisyphus+389751.100.1.1 1752340459 installed <13>Aug 3 09:38:36 rpmi: libncurses6-6.5.20250705-alt1 sisyphus+389752.100.1.1 1752343158 installed <13>Aug 3 09:38:36 rpmi: libtinfo-devel-6.5.20250705-alt1 sisyphus+389752.100.1.1 1752343158 installed <13>Aug 3 09:38:36 rpmi: libncurses-devel-6.5.20250705-alt1 sisyphus+389752.100.1.1 1752343158 installed <13>Aug 3 09:38:37 rpmi: python3-dev-3.12.11-alt1 sisyphus+389751.100.1.1 1752340459 installed <13>Aug 3 09:38:37 rpmi: libxblas-1.0.248-alt2 sisyphus+285045.40.2.1 1631388330 installed <13>Aug 3 09:38:37 rpmi: libquadmath0-14.2.1-alt1 sisyphus+360995.100.1.1 1730131018 installed <13>Aug 3 09:38:37 rpmi: libgfortran5-14.2.1-alt1 sisyphus+360995.100.1.1 1730131018 installed <13>Aug 3 09:38:37 rpmi: liblapack-1:3.8.0-alt9 sisyphus+390064.100.1.1 1752950817 installed <13>Aug 3 09:38:37 rpmi: libpng16-1.6.50-alt1 sisyphus+388718.100.1.1 1751445245 installed <13>Aug 3 09:38:37 rpmi: libbrotlicommon-1.1.0-alt1 sisyphus+328501.100.1.1 1693598419 installed <13>Aug 3 09:38:37 rpmi: libbrotlidec-1.1.0-alt1 sisyphus+328501.100.1.1 1693598419 installed <13>Aug 3 09:38:37 rpmi: libgraphite2-1.3.14-alt2.1 sisyphus+279571.100.1.2 1626605111 installed <13>Aug 3 09:38:37 rpmi: libharfbuzz-11.3.3-alt1 sisyphus+390995.100.1.1 1753635404 installed <13>Aug 3 09:38:37 rpmi: libfreetype-2.13.3-alt1 sisyphus+355656.100.1.1 1724221064 installed <13>Aug 3 09:38:37 rpmi: libfontconfig1-2.16.0-alt1 sisyphus+374470.100.1.1 1739370046 installed <13>Aug 3 09:38:37 rpmi: libXdmcp-1.1.5-alt1 sisyphus+343583.700.1.1 1711441061 installed <13>Aug 3 09:38:37 rpmi: libXau-1.0.11-alt1 sisyphus+311428.100.1.1 1670577439 installed <13>Aug 3 09:38:37 rpmi: libxcb-1.17.0-alt1 sisyphus+345308.200.1.1 1713342004 installed <13>Aug 3 09:38:37 rpmi: libX11-locales-3:1.8.11-alt1 sisyphus+373040.100.1.1 1738571640 installed <13>Aug 3 09:38:37 rpmi: libX11-3:1.8.11-alt1 sisyphus+373040.100.1.1 1738571640 installed <13>Aug 3 09:38:37 rpmi: libXrender-0.9.12-alt1 sisyphus+373121.100.1.1 1738654919 installed <13>Aug 3 09:38:37 rpmi: libXft-2.3.8-alt1 sisyphus+331490.400.1.1 1697023269 installed <13>Aug 3 09:38:38 rpmi: libtk-8.6.13-alt1 sisyphus+310696.200.1.1 1669548530 installed <13>Aug 3 09:38:38 rpmi: tk-8.6.13-alt1 sisyphus+310696.200.1.1 1669548530 installed <13>Aug 3 09:38:38 rpmi: tcl-tix-8.4.3-alt5 sisyphus+371748.200.2.1 1738070355 installed <13>Aug 3 09:38:38 rpmi: python3-modules-tkinter-3.12.11-alt1 sisyphus+389751.100.1.1 1752340459 installed <13>Aug 3 09:38:38 rpmi: python3-module-tqdm-4.67.1-alt1 sisyphus+372965.100.1.1 1738483076 installed <13>Aug 3 09:38:38 rpmi: python3-module-openai-1.91.0-alt1 sisyphus+388039.300.3.1 1750753816 installed <13>Aug 3 09:38:38 rpmi: python3-module-numpy-1:2.2.6-alt1 sisyphus+386197.10.10.1 1749584507 installed <13>Aug 3 09:38:38 rpmi: python3-module-setuptools-1:80.9.0-alt1 sisyphus+385748.100.2.1 1748862263 installed <13>Aug 3 09:38:38 rpmi: python3-module-sqlite-migrate-0.1b0-alt1.7.g2dc1485 sisyphus+376787.300.2.3 1741087466 installed <13>Aug 3 09:38:39 rpmi: python3-module-yaml-6.0.2-alt1.1 sisyphus+376369.16600.10.1 1746631034 installed <13>Aug 3 09:38:39 rpmi: python3-module-pytest-httpx-0.35.0-alt2 sisyphus+388844.1400.2.1 1752502009 installed <13>Aug 3 09:38:39 rpmi: python3-module-pytest-asyncio-0.26.0-alt1 sisyphus+385060.100.2.1 1747992525 installed <13>Aug 3 09:38:39 rpmi: python3-module-python-ulid-3.0.0-alt1 sisyphus+360285.100.1.1 1729498046 installed <13>Aug 3 09:38:39 rpmi: python3-module-puremagic-1.30-alt1 sisyphus+389110.100.1.1 1751709167 installed <13>Aug 3 09:38:39 rpmi: python3-module-pip-25.2-alt1 sisyphus+391268.200.2.1 1753966927 installed <13>Aug 3 09:38:39 rpmi: python3-module-condense-json-0.1.2-alt1 sisyphus+380782.100.1.1 1744093576 installed <13>Aug 3 09:38:39 rpmi: python3-module-cogapp-3.5.1-alt1 sisyphus+387243.400.1.1 1749927143 installed warning: File /usr/src/in/source/python3-module-llm-0.24.2-alt.patch is smaller than 8 bytes Building target platforms: x86_64 Building for target x86_64 Wrote: /usr/src/in/nosrpm/python3-module-llm-0.24.2-alt1.nosrc.rpm (w1.gzdio) warning: File /usr/src/RPM/SOURCES/python3-module-llm-0.24.2-alt.patch is smaller than 8 bytes Installing python3-module-llm-0.24.2-alt1.src.rpm Building target platforms: x86_64 Building for target x86_64 Executing(%prep): /bin/sh -e /usr/src/tmp/rpm-tmp.21293 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + rm -rf python3-module-llm-0.24.2 + echo 'Source #0 (python3-module-llm-0.24.2.tar):' Source #0 (python3-module-llm-0.24.2.tar): + /bin/tar -xf /usr/src/RPM/SOURCES/python3-module-llm-0.24.2.tar + cd python3-module-llm-0.24.2 + /bin/chmod -c -Rf u+rwX,go-w . + echo 'Patch #0 (python3-module-llm-0.24.2-alt.patch):' Patch #0 (python3-module-llm-0.24.2-alt.patch): + /usr/bin/patch -p1 + /usr/bin/python3 -m pyproject_installer deps --depsconfig /usr/src/RPM/SOURCES/pyproject_deps.json show pep518 + /usr/bin/python3 -m pyproject_installer deps --depsconfig /usr/src/RPM/SOURCES/pyproject_deps.json sync pep518 --verify --verify-exclude 'wheel$' INFO : pyproject.toml was not found, using defaults + /usr/bin/python3 -m pyproject_installer deps --depsconfig /usr/src/RPM/SOURCES/pyproject_deps.json show pep517 + /usr/bin/python3 -m pyproject_installer deps --depsconfig /usr/src/RPM/SOURCES/pyproject_deps.json sync pep517 --verify --verify-exclude 'wheel$' INFO : pyproject.toml was not found, using defaults + /usr/bin/python3 -m pyproject_installer deps --depsconfig /usr/src/RPM/SOURCES/pyproject_deps.json show metadata + /usr/bin/python3 -m pyproject_installer deps --depsconfig /usr/src/RPM/SOURCES/pyproject_deps.json sync metadata --verify INFO : Building metadata INFO : Building metadata with prepare_metadata_for_build_wheel INFO : Source tree: /usr/src/RPM/BUILD/python3-module-llm-0.24.2 INFO : Output dir: /usr/src/tmp/tmp7h_r785o INFO : pyproject.toml was not found, using defaults + exit 0 Executing(%build): /bin/sh -e /usr/src/tmp/rpm-tmp.39944 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd python3-module-llm-0.24.2 + export 'CFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + export 'CXXFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + export 'FFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + /usr/bin/python3 -m pyproject_installer -v build INFO : pyproject_installer.build_cmd._build : Building wheel INFO : pyproject_installer.build_cmd._build : Source tree: /usr/src/RPM/BUILD/python3-module-llm-0.24.2 INFO : pyproject_installer.build_cmd._build : Output dir: /usr/src/RPM/BUILD/python3-module-llm-0.24.2/dist DEBUG : pyproject_installer.lib.build_backend : Validating source path DEBUG : pyproject_installer.lib.build_backend : Checking for PEP517 spec INFO : pyproject_installer.lib.build_backend : pyproject.toml was not found, using defaults INFO : backend_caller.py : Calling hook build_wheel in subprocess INFO : backend_caller.py : Build backend: setuptools.build_meta:__legacy__ INFO : backend_caller.py : Hook args: ['/usr/src/RPM/BUILD/python3-module-llm-0.24.2/dist'] INFO : backend_caller.py : Hook kwargs: {'config_settings': None} INFO : root : running bdist_wheel INFO : root : running build INFO : root : running build_py INFO : root : creating build/lib/llm INFO : root : copying llm/utils.py -> build/lib/llm INFO : root : copying llm/templates.py -> build/lib/llm INFO : root : copying llm/plugins.py -> build/lib/llm INFO : root : copying llm/models.py -> build/lib/llm INFO : root : copying llm/migrations.py -> build/lib/llm INFO : root : copying llm/hookspecs.py -> build/lib/llm INFO : root : copying llm/errors.py -> build/lib/llm INFO : root : copying llm/embeddings_migrations.py -> build/lib/llm INFO : root : copying llm/embeddings.py -> build/lib/llm INFO : root : copying llm/cli.py -> build/lib/llm INFO : root : copying llm/__main__.py -> build/lib/llm INFO : root : copying llm/__init__.py -> build/lib/llm INFO : root : creating build/lib/llm/default_plugins INFO : root : copying llm/default_plugins/openai_models.py -> build/lib/llm/default_plugins INFO : root : copying llm/default_plugins/__init__.py -> build/lib/llm/default_plugins INFO : root : installing to build/bdist.linux-x86_64/wheel INFO : root : running install INFO : root : running install_lib INFO : root : creating build/bdist.linux-x86_64/wheel INFO : root : creating build/bdist.linux-x86_64/wheel/llm INFO : root : creating build/bdist.linux-x86_64/wheel/llm/default_plugins INFO : root : copying build/lib/llm/default_plugins/__init__.py -> build/bdist.linux-x86_64/wheel/./llm/default_plugins INFO : root : copying build/lib/llm/default_plugins/openai_models.py -> build/bdist.linux-x86_64/wheel/./llm/default_plugins INFO : root : copying build/lib/llm/__init__.py -> build/bdist.linux-x86_64/wheel/./llm INFO : root : copying build/lib/llm/__main__.py -> build/bdist.linux-x86_64/wheel/./llm INFO : root : copying build/lib/llm/cli.py -> build/bdist.linux-x86_64/wheel/./llm INFO : root : copying build/lib/llm/embeddings.py -> build/bdist.linux-x86_64/wheel/./llm INFO : root : copying build/lib/llm/embeddings_migrations.py -> build/bdist.linux-x86_64/wheel/./llm INFO : root : copying build/lib/llm/errors.py -> build/bdist.linux-x86_64/wheel/./llm INFO : root : copying build/lib/llm/hookspecs.py -> build/bdist.linux-x86_64/wheel/./llm INFO : root : copying build/lib/llm/migrations.py -> build/bdist.linux-x86_64/wheel/./llm INFO : root : copying build/lib/llm/models.py -> build/bdist.linux-x86_64/wheel/./llm INFO : root : copying build/lib/llm/plugins.py -> build/bdist.linux-x86_64/wheel/./llm INFO : root : copying build/lib/llm/templates.py -> build/bdist.linux-x86_64/wheel/./llm INFO : root : copying build/lib/llm/utils.py -> build/bdist.linux-x86_64/wheel/./llm INFO : root : running install_egg_info INFO : root : running egg_info INFO : root : writing llm.egg-info/PKG-INFO INFO : root : writing dependency_links to llm.egg-info/dependency_links.txt INFO : root : writing entry points to llm.egg-info/entry_points.txt INFO : root : writing requirements to llm.egg-info/requires.txt INFO : root : writing top-level names to llm.egg-info/top_level.txt INFO : root : reading manifest file 'llm.egg-info/SOURCES.txt' INFO : root : reading manifest template 'MANIFEST.in' INFO : root : adding license file 'LICENSE' INFO : root : writing manifest file 'llm.egg-info/SOURCES.txt' INFO : root : Copying llm.egg-info to build/bdist.linux-x86_64/wheel/./llm-0.24.2-py3.12.egg-info INFO : root : running install_scripts INFO : root : creating build/bdist.linux-x86_64/wheel/llm-0.24.2.dist-info/WHEEL INFO : wheel : creating '/usr/src/RPM/BUILD/python3-module-llm-0.24.2/dist/.tmp-y1cknv6a/llm-0.24.2-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it INFO : wheel : adding 'llm/__init__.py' INFO : wheel : adding 'llm/__main__.py' INFO : wheel : adding 'llm/cli.py' INFO : wheel : adding 'llm/embeddings.py' INFO : wheel : adding 'llm/embeddings_migrations.py' INFO : wheel : adding 'llm/errors.py' INFO : wheel : adding 'llm/hookspecs.py' INFO : wheel : adding 'llm/migrations.py' INFO : wheel : adding 'llm/models.py' INFO : wheel : adding 'llm/plugins.py' INFO : wheel : adding 'llm/templates.py' INFO : wheel : adding 'llm/utils.py' INFO : wheel : adding 'llm/default_plugins/__init__.py' INFO : wheel : adding 'llm/default_plugins/openai_models.py' INFO : wheel : adding 'llm-0.24.2.dist-info/licenses/LICENSE' INFO : wheel : adding 'llm-0.24.2.dist-info/METADATA' INFO : wheel : adding 'llm-0.24.2.dist-info/WHEEL' INFO : wheel : adding 'llm-0.24.2.dist-info/entry_points.txt' INFO : wheel : adding 'llm-0.24.2.dist-info/top_level.txt' INFO : wheel : adding 'llm-0.24.2.dist-info/RECORD' INFO : root : removing build/bdist.linux-x86_64/wheel INFO : pyproject_installer.build_cmd._build : Built wheel: llm-0.24.2-py3-none-any.whl + exit 0 Executing(%install): /bin/sh -e /usr/src/tmp/rpm-tmp.39944 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + /bin/chmod -Rf u+rwX -- /usr/src/tmp/python3-module-llm-buildroot + : + /bin/rm -rf -- /usr/src/tmp/python3-module-llm-buildroot + PATH=/usr/libexec/rpm-build:/usr/src/bin:/usr/bin:/bin:/usr/local/bin:/usr/games + cd python3-module-llm-0.24.2 + /usr/bin/python3 -m pyproject_installer -v install --destdir=/usr/src/tmp/python3-module-llm-buildroot INFO : pyproject_installer.install_cmd._install : Installing wheel INFO : pyproject_installer.install_cmd._install : Wheel directory: /usr/src/RPM/BUILD/python3-module-llm-0.24.2/dist INFO : pyproject_installer.install_cmd._install : Wheel filename: llm-0.24.2-py3-none-any.whl INFO : pyproject_installer.install_cmd._install : Destination: /usr/src/tmp/python3-module-llm-buildroot DEBUG : pyproject_installer.lib.wheel : Parsing wheel filename DEBUG : pyproject_installer.lib.wheel : Validating wheel file DEBUG : pyproject_installer.lib.wheel : Validating wheel spec version DEBUG : pyproject_installer.lib.wheel : Parsing wheel spec metadata DEBUG : pyproject_installer.lib.wheel : Validating RECORD INFO : pyproject_installer.install_cmd._install : Wheel installation root: /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages INFO : pyproject_installer.install_cmd._install : Extracting wheel DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: llm-0.24.2.dist-info/licenses/LICENSE DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: llm-0.24.2.dist-info/WHEEL DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: llm-0.24.2.dist-info/top_level.txt DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: llm-0.24.2.dist-info/RECORD INFO : pyproject_installer.install_cmd._install : Generating entrypoints scripts DEBUG : pyproject_installer.lib.scripts : Installing console script: llm INFO : pyproject_installer.install_cmd._install : Wheel was installed + /usr/lib/rpm/brp-alt Cleaning files in /usr/src/tmp/python3-module-llm-buildroot (auto) Verifying and fixing files in /usr/src/tmp/python3-module-llm-buildroot (binconfig,pkgconfig,libtool,desktop,gnuconfig) Checking contents of files in /usr/src/tmp/python3-module-llm-buildroot/ (default) Compressing files in /usr/src/tmp/python3-module-llm-buildroot (auto) Adjusting library links in /usr/src/tmp/python3-module-llm-buildroot ./usr/lib: (from :0) Verifying ELF objects in /usr/src/tmp/python3-module-llm-buildroot (arch=normal,fhs=normal,lfs=relaxed,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal) Splitting links to aliased files under /{,s}bin in /usr/src/tmp/python3-module-llm-buildroot Bytecompiling python3 modules in /usr/src/tmp/python3-module-llm-buildroot using /usr/bin/python3 compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/default_plugins/__init__.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/default_plugins/openai_models.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/__init__.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/__main__.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/cli.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/embeddings.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/embeddings_migrations.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/errors.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/hookspecs.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/migrations.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/models.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/plugins.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/templates.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/utils.py Bytecompiling python3 modules with optimization in /usr/src/tmp/python3-module-llm-buildroot using /usr/bin/python3 -O compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/default_plugins/__init__.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/default_plugins/openai_models.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/__init__.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/__main__.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/cli.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/embeddings.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/embeddings_migrations.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/errors.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/hookspecs.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/migrations.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/models.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/plugins.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/templates.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/utils.py Bytecompiling python3 modules with optimization-2 in /usr/src/tmp/python3-module-llm-buildroot using /usr/bin/python3 -OO compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/default_plugins/__init__.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/default_plugins/openai_models.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/__init__.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/__main__.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/cli.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/embeddings.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/embeddings_migrations.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/errors.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/hookspecs.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/migrations.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/models.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/plugins.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/templates.py compile /usr/src/tmp/python3-module-llm-buildroot/usr/lib/python3/site-packages/llm/utils.py Hardlinking identical .pyc and .opt-?.pyc files './usr/lib/python3/site-packages/llm/__pycache__/__init__.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/__init__.cpython-312.pyc' './usr/lib/python3/site-packages/llm/__pycache__/__main__.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/__main__.cpython-312.pyc' './usr/lib/python3/site-packages/llm/__pycache__/__main__.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/__main__.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/llm/__pycache__/cli.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/cli.cpython-312.pyc' './usr/lib/python3/site-packages/llm/__pycache__/embeddings.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/embeddings.cpython-312.pyc' './usr/lib/python3/site-packages/llm/__pycache__/embeddings_migrations.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/embeddings_migrations.cpython-312.pyc' './usr/lib/python3/site-packages/llm/__pycache__/embeddings_migrations.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/embeddings_migrations.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/llm/__pycache__/errors.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/errors.cpython-312.pyc' './usr/lib/python3/site-packages/llm/__pycache__/hookspecs.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/hookspecs.cpython-312.pyc' './usr/lib/python3/site-packages/llm/__pycache__/migrations.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/migrations.cpython-312.pyc' './usr/lib/python3/site-packages/llm/__pycache__/migrations.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/migrations.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/llm/__pycache__/models.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/models.cpython-312.pyc' './usr/lib/python3/site-packages/llm/__pycache__/plugins.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/plugins.cpython-312.pyc' './usr/lib/python3/site-packages/llm/__pycache__/plugins.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/plugins.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/llm/__pycache__/templates.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/templates.cpython-312.pyc' './usr/lib/python3/site-packages/llm/__pycache__/templates.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/templates.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/llm/__pycache__/utils.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/llm/__pycache__/utils.cpython-312.pyc' './usr/lib/python3/site-packages/llm/default_plugins/__pycache__/__init__.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/llm/default_plugins/__pycache__/__init__.cpython-312.pyc' './usr/lib/python3/site-packages/llm/default_plugins/__pycache__/__init__.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/llm/default_plugins/__pycache__/__init__.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/llm/default_plugins/__pycache__/openai_models.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/llm/default_plugins/__pycache__/openai_models.cpython-312.pyc' Executing(%check): /bin/sh -e /usr/src/tmp/rpm-tmp.43922 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd python3-module-llm-0.24.2 + export 'CFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + export 'CXXFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + export 'FFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + export NO_INTERNET=YES + NO_INTERNET=YES + /usr/bin/python3 -m pyproject_installer run -- python3 -m pytest -vra -o=addopts=-Wignore INFO : Creating venv INFO : Installing console scripts INFO : Installing package: /usr/src/RPM/BUILD/python3-module-llm-0.24.2/dist/llm-0.24.2-py3-none-any.whl INFO : Running command: ['/usr/src/RPM/BUILD/python3-module-llm-0.24.2/.run_venv/bin/python3', '-m', 'pyproject_installer', 'install', '/usr/src/RPM/BUILD/python3-module-llm-0.24.2/dist/llm-0.24.2-py3-none-any.whl'] INFO : Running command: ['python3', '-m', 'pytest', '-vra', '-o=addopts=-Wignore'] ============================= test session starts ============================== platform linux -- Python 3.12.11, pytest-8.3.5, pluggy-1.6.0 -- /usr/src/RPM/BUILD/python3-module-llm-0.24.2/.run_venv/bin/python3 cachedir: .pytest_cache rootdir: /usr/src/RPM/BUILD/python3-module-llm-0.24.2 configfile: pytest.ini plugins: asyncio-0.26.0, httpx-0.35.0, anyio-4.9.0 asyncio: mode=Mode.STRICT, asyncio_default_fixture_loop_scope=function, asyncio_default_test_loop_scope=function collecting ... collected 388 items tests/test_aliases.py::test_set_alias[gpt-3.5-turbo] PASSED [ 0%] tests/test_aliases.py::test_set_alias[chatgpt] PASSED [ 0%] tests/test_aliases.py::test_remove_alias PASSED [ 0%] tests/test_aliases.py::test_cli_aliases_list[args0] PASSED [ 1%] tests/test_aliases.py::test_cli_aliases_list[args1] PASSED [ 1%] tests/test_aliases.py::test_cli_aliases_list_json[args0] PASSED [ 1%] tests/test_aliases.py::test_cli_aliases_list_json[args1] PASSED [ 1%] tests/test_aliases.py::test_cli_aliases_set[args0-expected0-None] PASSED [ 2%] tests/test_aliases.py::test_cli_aliases_set[args1-expected1-None] PASSED [ 2%] tests/test_aliases.py::test_cli_aliases_set[args2-None-No model found matching query: mog] PASSED [ 2%] tests/test_aliases.py::test_cli_aliases_path PASSED [ 2%] tests/test_aliases.py::test_cli_aliases_remove PASSED [ 3%] tests/test_aliases.py::test_cli_aliases_remove_invalid PASSED [ 3%] tests/test_aliases.py::test_cli_aliases_are_registered[args0] PASSED [ 3%] tests/test_aliases.py::test_cli_aliases_are_registered[args1] PASSED [ 3%] tests/test_async.py::test_async_model PASSED [ 4%] tests/test_async.py::test_async_model_conversation PASSED [ 4%] tests/test_async.py::test_async_on_done PASSED [ 4%] tests/test_async.py::test_async_conversation PASSED [ 4%] tests/test_attachments.py::test_prompt_attachment[image/png-\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\xa6\x00\x00\x01\x1a\x02\x03\x00\x00\x00\xe6\x99\xc4^\x00\x00\x00\tPLTE\xff\xff\xff\x00\xff\x00\xfe\x01\x00\x12t\x01J\x00\x00\x00GIDATx\xda\xed\xd81\x11\x000\x08\xc0\xc0.]\xea\xaf&Q\x89\x04V\xe0>\xf3+\xc8\x91Z\xf4\xa2\x08EQ\x14EQ\x14EQ\x14EQ\xd4B\x91$I3\xbb\xbf\x08EQ\x14EQ\x14EQ\x14E\xd1\xa5\xd4\x17\x91\xc6\x95\x05\x15\x0f\x9f\xc5\t\x9f\xa4\x00\x00\x00\x00IEND\xaeB`\x82] PASSED [ 5%] tests/test_attachments.py::test_prompt_attachment[audio/wav-RIFF$\x00\x00\x00WAVEfmt \x10\x00\x00\x00\x01\x00\x01\x00D\xac\x00\x00] PASSED [ 5%] tests/test_chat.py::test_chat_basic PASSED [ 5%] tests/test_chat.py::test_chat_system PASSED [ 5%] tests/test_chat.py::test_chat_options PASSED [ 6%] tests/test_chat.py::test_chat_multi[Hi\n!multi\nthis is multiple lines\nuntil the !end\n!end\nquit\n-expected0] PASSED [ 6%] tests/test_chat.py::test_chat_multi[!multi\nthis is multiple lines\nquit\nuntil the !end\n!end\nquit\n-expected1] PASSED [ 6%] tests/test_chat.py::test_chat_multi[!multi abc\nCustom delimiter\n!end\n!end 123\n!end abc\nquit\n-expected2] PASSED [ 6%] tests/test_cli_openai_models.py::test_openai_models PASSED [ 7%] tests/test_cli_openai_models.py::test_openai_options_min_max PASSED [ 7%] tests/test_cli_openai_models.py::test_only_gpt4_audio_preview_allows_mp3_or_wav[mp3-gpt-4o-mini] PASSED [ 7%] tests/test_cli_openai_models.py::test_only_gpt4_audio_preview_allows_mp3_or_wav[mp3-gpt-4o-audio-preview] PASSED [ 7%] tests/test_cli_openai_models.py::test_only_gpt4_audio_preview_allows_mp3_or_wav[wav-gpt-4o-mini] PASSED [ 8%] tests/test_cli_openai_models.py::test_only_gpt4_audio_preview_allows_mp3_or_wav[wav-gpt-4o-audio-preview] PASSED [ 8%] tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[None-False] FAILED [ 8%] tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[None-False] ERROR [ 8%] tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[None-True] FAILED [ 9%] tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[None-True] ERROR [ 9%] tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[-u-False] FAILED [ 9%] tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[-u-False] ERROR [ 9%] tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[-u-True] FAILED [ 9%] tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[-u-True] ERROR [ 9%] tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[--usage-False] FAILED [ 9%] tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[--usage-False] ERROR [ 9%] tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[--usage-True] FAILED [ 10%] tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[--usage-True] ERROR [ 10%] tests/test_cli_options.py::test_set_model_default_options[args0-expected_options0-None] PASSED [ 10%] tests/test_cli_options.py::test_set_model_default_options[args1-expected_options1-Error: temperature\n Input should be a valid number] PASSED [ 10%] tests/test_cli_options.py::test_set_model_default_options[args2-expected_options2-Extra inputs are not permitted] PASSED [ 10%] tests/test_cli_options.py::test_model_options_list_and_show PASSED [ 11%] tests/test_cli_options.py::test_model_options_clear PASSED [ 11%] tests/test_embed.py::test_demo_plugin PASSED [ 11%] tests/test_embed.py::test_embed_huge_list[None-100] PASSED [ 11%] tests/test_embed.py::test_embed_huge_list[10-100] PASSED [ 12%] tests/test_embed.py::test_embed_store PASSED [ 12%] tests/test_embed.py::test_embed_metadata PASSED [ 12%] tests/test_embed.py::test_collection PASSED [ 12%] tests/test_embed.py::test_similar PASSED [ 13%] tests/test_embed.py::test_similar_by_id PASSED [ 13%] tests/test_embed.py::test_embed_multi[False-None-100] PASSED [ 13%] tests/test_embed.py::test_embed_multi[False-5-200] PASSED [ 13%] tests/test_embed.py::test_embed_multi[True-None-100] PASSED [ 14%] tests/test_embed.py::test_embed_multi[True-5-200] PASSED [ 14%] tests/test_embed.py::test_collection_delete PASSED [ 14%] tests/test_embed.py::test_binary_only_and_text_only_embedding_models PASSED [ 14%] tests/test_embed_cli.py::test_embed_output_format[argument-json-[5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n] PASSED [ 15%] tests/test_embed_cli.py::test_embed_output_format[argument-base64-AACgQAAAoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n] PASSED [ 15%] tests/test_embed_cli.py::test_embed_output_format[argument-hex-0000a0400000a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\n] PASSED [ 15%] tests/test_embed_cli.py::test_embed_output_format[argument-blob-\x00\x00\ufffd@\x00\x00\ufffd@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n] PASSED [ 15%] tests/test_embed_cli.py::test_embed_output_format[file-json-[5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n] PASSED [ 16%] tests/test_embed_cli.py::test_embed_output_format[file-base64-AACgQAAAoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n] PASSED [ 16%] tests/test_embed_cli.py::test_embed_output_format[file-hex-0000a0400000a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\n] PASSED [ 16%] tests/test_embed_cli.py::test_embed_output_format[file-blob-\x00\x00\ufffd@\x00\x00\ufffd@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n] PASSED [ 17%] tests/test_embed_cli.py::test_embed_output_format[stdin-json-[5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n] PASSED [ 17%] tests/test_embed_cli.py::test_embed_output_format[stdin-base64-AACgQAAAoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n] PASSED [ 17%] tests/test_embed_cli.py::test_embed_output_format[stdin-hex-0000a0400000a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\n] PASSED [ 17%] tests/test_embed_cli.py::test_embed_output_format[stdin-blob-\x00\x00\ufffd@\x00\x00\ufffd@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n] PASSED [ 18%] tests/test_embed_cli.py::test_embed_errors[args0-Must provide both collection and id] PASSED [ 18%] tests/test_embed_cli.py::test_embed_store[None-None] PASSED [ 18%] tests/test_embed_cli.py::test_embed_store[{"foo": "bar"}-None] PASSED [ 18%] tests/test_embed_cli.py::test_embed_store[{"foo": [1, 2, 3]}-None] PASSED [ 19%] tests/test_embed_cli.py::test_embed_store[[1, 2, 3]-metadata must be a JSON object] PASSED [ 19%] tests/test_embed_cli.py::test_embed_store[{"foo": "incomplete}-metadata must be valid JSON] PASSED [ 19%] tests/test_embed_cli.py::test_embed_store_binary PASSED [ 19%] tests/test_embed_cli.py::test_collection_delete_errors PASSED [ 20%] tests/test_embed_cli.py::test_similar_errors[args0-Missing argument 'COLLECTION'] PASSED [ 20%] tests/test_embed_cli.py::test_similar_errors[args1-Collection does not exist] PASSED [ 20%] tests/test_embed_cli.py::test_similar_errors[args2-ID not found in collection] PASSED [ 20%] tests/test_embed_cli.py::test_similar_by_id_cli PASSED [ 21%] tests/test_embed_cli.py::test_similar_by_id_cli_output_plain[-p] PASSED [ 21%] tests/test_embed_cli.py::test_similar_by_id_cli_output_plain[--plain] PASSED [ 21%] tests/test_embed_cli.py::test_similar_by_content_cli[argument] PASSED [ 21%] tests/test_embed_cli.py::test_similar_by_content_cli[file] PASSED [ 22%] tests/test_embed_cli.py::test_similar_by_content_cli[stdin] PASSED [ 22%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.csv-id,phrase\n1,hello world\n2,goodbye world-None-None-False] PASSED [ 22%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.csv-id,phrase\n1,hello world\n2,goodbye world-None-None-True] PASSED [ 22%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.csv-id,phrase\n1,hello world\n2,goodbye world-None-prefix-False] PASSED [ 23%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.csv-id,phrase\n1,hello world\n2,goodbye world-None-prefix-True] PASSED [ 23%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.csv-id,phrase\n1,hello world\n2,goodbye world-search_document: -None-False] PASSED [ 23%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.csv-id,phrase\n1,hello world\n2,goodbye world-search_document: -None-True] PASSED [ 23%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.csv-id,phrase\n1,hello world\n2,goodbye world-search_document: -prefix-False] PASSED [ 24%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.csv-id,phrase\n1,hello world\n2,goodbye world-search_document: -prefix-True] PASSED [ 24%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.tsv-id\tphrase\n1\thello world\n2\tgoodbye world-None-None-False] PASSED [ 24%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.tsv-id\tphrase\n1\thello world\n2\tgoodbye world-None-None-True] PASSED [ 25%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.tsv-id\tphrase\n1\thello world\n2\tgoodbye world-None-prefix-False] PASSED [ 25%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.tsv-id\tphrase\n1\thello world\n2\tgoodbye world-None-prefix-True] PASSED [ 25%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.tsv-id\tphrase\n1\thello world\n2\tgoodbye world-search_document: -None-False] PASSED [ 25%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.tsv-id\tphrase\n1\thello world\n2\tgoodbye world-search_document: -None-True] PASSED [ 26%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.tsv-id\tphrase\n1\thello world\n2\tgoodbye world-search_document: -prefix-False] PASSED [ 26%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.tsv-id\tphrase\n1\thello world\n2\tgoodbye world-search_document: -prefix-True] PASSED [ 26%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.jsonl-{"id": 1, "phrase": "hello world"}\n{"id": 2, "phrase": "goodbye world"}-None-None-False] PASSED [ 26%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.jsonl-{"id": 1, "phrase": "hello world"}\n{"id": 2, "phrase": "goodbye world"}-None-None-True] PASSED [ 27%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.jsonl-{"id": 1, "phrase": "hello world"}\n{"id": 2, "phrase": "goodbye world"}-None-prefix-False] PASSED [ 27%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.jsonl-{"id": 1, "phrase": "hello world"}\n{"id": 2, "phrase": "goodbye world"}-None-prefix-True] PASSED [ 27%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.jsonl-{"id": 1, "phrase": "hello world"}\n{"id": 2, "phrase": "goodbye world"}-search_document: -None-False] PASSED [ 27%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.jsonl-{"id": 1, "phrase": "hello world"}\n{"id": 2, "phrase": "goodbye world"}-search_document: -None-True] PASSED [ 28%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.jsonl-{"id": 1, "phrase": "hello world"}\n{"id": 2, "phrase": "goodbye world"}-search_document: -prefix-False] PASSED [ 28%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.jsonl-{"id": 1, "phrase": "hello world"}\n{"id": 2, "phrase": "goodbye world"}-search_document: -prefix-True] PASSED [ 28%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.json-[{"id": 1, "phrase": "hello world"}, {"id": 2, "phrase": "goodbye world"}]-None-None-False] PASSED [ 28%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.json-[{"id": 1, "phrase": "hello world"}, {"id": 2, "phrase": "goodbye world"}]-None-None-True] PASSED [ 29%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.json-[{"id": 1, "phrase": "hello world"}, {"id": 2, "phrase": "goodbye world"}]-None-prefix-False] PASSED [ 29%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.json-[{"id": 1, "phrase": "hello world"}, {"id": 2, "phrase": "goodbye world"}]-None-prefix-True] PASSED [ 29%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.json-[{"id": 1, "phrase": "hello world"}, {"id": 2, "phrase": "goodbye world"}]-search_document: -None-False] PASSED [ 29%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.json-[{"id": 1, "phrase": "hello world"}, {"id": 2, "phrase": "goodbye world"}]-search_document: -None-True] PASSED [ 30%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.json-[{"id": 1, "phrase": "hello world"}, {"id": 2, "phrase": "goodbye world"}]-search_document: -prefix-False] PASSED [ 30%] tests/test_embed_cli.py::test_embed_multi_file_input[phrases.json-[{"id": 1, "phrase": "hello world"}, {"id": 2, "phrase": "goodbye world"}]-search_document: -prefix-True] PASSED [ 30%] tests/test_embed_cli.py::test_embed_multi_files_binary_store PASSED [ 30%] tests/test_embed_cli.py::test_embed_multi_sql[None-None-True] PASSED [ 31%] tests/test_embed_cli.py::test_embed_multi_sql[None-None-False] PASSED [ 31%] tests/test_embed_cli.py::test_embed_multi_sql[None-prefix-True] PASSED [ 31%] tests/test_embed_cli.py::test_embed_multi_sql[None-prefix-False] PASSED [ 31%] tests/test_embed_cli.py::test_embed_multi_sql[search_document: -None-True] PASSED [ 32%] tests/test_embed_cli.py::test_embed_multi_sql[search_document: -None-False] PASSED [ 32%] tests/test_embed_cli.py::test_embed_multi_sql[search_document: -prefix-True] PASSED [ 32%] tests/test_embed_cli.py::test_embed_multi_sql[search_document: -prefix-False] PASSED [ 32%] tests/test_embed_cli.py::test_embed_multi_batch_size PASSED [ 33%] tests/test_embed_cli.py::test_embed_multi_files[None-single] PASSED [ 33%] tests/test_embed_cli.py::test_embed_multi_files[None-multi] PASSED [ 33%] tests/test_embed_cli.py::test_embed_multi_files[search_document: -single] PASSED [ 34%] tests/test_embed_cli.py::test_embed_multi_files[search_document: -multi] PASSED [ 34%] tests/test_embed_cli.py::test_embed_multi_files_errors[args0-Invalid directory: not-a-dir] PASSED [ 34%] tests/test_embed_cli.py::test_embed_multi_files_encoding[extra_args0-None] FAILED [ 34%] tests/test_embed_cli.py::test_embed_multi_files_encoding[extra_args1-Could not decode text in file] FAILED [ 35%] tests/test_embed_cli.py::test_embed_multi_files_encoding[extra_args2-None] FAILED [ 35%] tests/test_embed_cli.py::test_embed_multi_files_encoding[extra_args3-None] FAILED [ 35%] tests/test_embed_cli.py::test_embed_multi_files_encoding[extra_args4-None] FAILED [ 35%] tests/test_embed_cli.py::test_default_embedding_model PASSED [ 36%] tests/test_embed_cli.py::test_llm_embed_models_query[args0-text-embedding-3-large] PASSED [ 36%] tests/test_embed_cli.py::test_llm_embed_models_query[args1-text-embedding-3-large] PASSED [ 36%] tests/test_embed_cli.py::test_default_embed_model_errors[embed-False] PASSED [ 36%] tests/test_embed_cli.py::test_default_embed_model_errors[embed-True] PASSED [ 37%] tests/test_embed_cli.py::test_default_embed_model_errors[embed-multi-False] PASSED [ 37%] tests/test_embed_cli.py::test_default_embed_model_errors[embed-multi-True] PASSED [ 37%] tests/test_embed_cli.py::test_duplicate_content_embedded_only_once PASSED [ 37%] tests/test_encode_decode.py::test_roundtrip[array0] PASSED [ 38%] tests/test_encode_decode.py::test_roundtrip[array1] PASSED [ 38%] tests/test_fragments_cli.py::test_fragments_set_show_remove PASSED [ 38%] tests/test_keys.py::test_keys_in_user_path[env0] PASSED [ 38%] tests/test_keys.py::test_keys_in_user_path[env1] PASSED [ 39%] tests/test_keys.py::test_keys_set PASSED [ 39%] tests/test_keys.py::test_keys_get PASSED [ 39%] tests/test_keys.py::test_keys_list[args0] PASSED [ 39%] tests/test_keys.py::test_keys_list[args1] PASSED [ 40%] tests/test_keys.py::test_uses_correct_key PASSED [ 40%] tests/test_llm.py::test_version PASSED [ 40%] tests/test_llm.py::test_llm_prompt_creates_log_database[False] PASSED [ 40%] tests/test_llm.py::test_llm_prompt_creates_log_database[True] PASSED [ 41%] tests/test_llm.py::test_llm_default_prompt[True-logs_args0-False-True] PASSED [ 41%] tests/test_llm.py::test_llm_default_prompt[True-logs_args0-False-False] PASSED [ 41%] tests/test_llm.py::test_llm_default_prompt[True-logs_args0-False-split] PASSED [ 42%] tests/test_llm.py::test_llm_default_prompt[False-logs_args1-True-True] PASSED [ 42%] tests/test_llm.py::test_llm_default_prompt[False-logs_args1-True-False] PASSED [ 42%] tests/test_llm.py::test_llm_default_prompt[False-logs_args1-True-split] PASSED [ 42%] tests/test_llm.py::test_llm_default_prompt[False-logs_args2-False-True] PASSED [ 43%] tests/test_llm.py::test_llm_default_prompt[False-logs_args2-False-False] PASSED [ 43%] tests/test_llm.py::test_llm_default_prompt[False-logs_args2-False-split] PASSED [ 43%] tests/test_llm.py::test_llm_default_prompt[False-logs_args3-True-True] PASSED [ 43%] tests/test_llm.py::test_llm_default_prompt[False-logs_args3-True-False] PASSED [ 44%] tests/test_llm.py::test_llm_default_prompt[False-logs_args3-True-split] PASSED [ 44%] tests/test_llm.py::test_llm_default_prompt[True-logs_args4-False-True] PASSED [ 44%] tests/test_llm.py::test_llm_default_prompt[True-logs_args4-False-False] PASSED [ 44%] tests/test_llm.py::test_llm_default_prompt[True-logs_args4-False-split] PASSED [ 45%] tests/test_llm.py::test_llm_default_prompt[True-logs_args5-True-True] PASSED [ 45%] tests/test_llm.py::test_llm_default_prompt[True-logs_args5-True-False] PASSED [ 45%] tests/test_llm.py::test_llm_default_prompt[True-logs_args5-True-split] PASSED [ 45%] tests/test_llm.py::test_llm_prompt_continue[False] PASSED [ 46%] tests/test_llm.py::test_llm_prompt_continue[True] PASSED [ 46%] tests/test_llm.py::test_extract_fenced_code[args0-True] PASSED [ 46%] tests/test_llm.py::test_extract_fenced_code[args1-True] PASSED [ 46%] tests/test_llm.py::test_extract_fenced_code[args2-True] PASSED [ 47%] tests/test_llm.py::test_extract_fenced_code[args3-True] PASSED [ 47%] tests/test_llm.py::test_extract_fenced_code[args4-False] PASSED [ 47%] tests/test_llm.py::test_openai_chat_stream PASSED [ 47%] tests/test_llm.py::test_openai_completion PASSED [ 48%] tests/test_llm.py::test_openai_completion_system_prompt_error PASSED [ 48%] tests/test_llm.py::test_openai_completion_logprobs_stream PASSED [ 48%] tests/test_llm.py::test_openai_completion_logprobs_nostream PASSED [ 48%] tests/test_llm.py::test_openai_localai_configuration PASSED [ 49%] tests/test_llm.py::test_prompt_select_model_with_queries[args0-0] PASSED [ 49%] tests/test_llm.py::test_prompt_select_model_with_queries[args1-0] PASSED [ 49%] tests/test_llm.py::test_prompt_select_model_with_queries[args2-1] PASSED [ 50%] tests/test_llm.py::test_prompt_select_model_with_queries[args3-1] PASSED [ 50%] tests/test_llm.py::test_llm_models_options PASSED [ 50%] tests/test_llm.py::test_llm_models_async PASSED [ 50%] tests/test_llm.py::test_llm_models_filter[args0-expected_model_ids0-None] PASSED [ 51%] tests/test_llm.py::test_llm_models_filter[args1-expected_model_ids1-None] PASSED [ 51%] tests/test_llm.py::test_llm_models_filter[args2-expected_model_ids2-None] PASSED [ 51%] tests/test_llm.py::test_llm_models_filter[args3-expected_model_ids3-unexpected_model_ids3] PASSED [ 51%] tests/test_llm.py::test_llm_models_filter[args4-expected_model_ids4-unexpected_model_ids4] PASSED [ 52%] tests/test_llm.py::test_llm_user_dir PASSED [ 52%] tests/test_llm.py::test_model_defaults PASSED [ 52%] tests/test_llm.py::test_get_models PASSED [ 52%] tests/test_llm.py::test_get_async_models PASSED [ 53%] tests/test_llm.py::test_mock_model PASSED [ 53%] tests/test_llm.py::test_schema[False] PASSED [ 53%] tests/test_llm.py::test_schema[True] PASSED [ 53%] tests/test_llm.py::test_schema_via_cli[True] PASSED [ 54%] tests/test_llm.py::test_schema_via_cli[False] PASSED [ 54%] tests/test_llm.py::test_schema_using_dsl[args0-expected0] PASSED [ 54%] tests/test_llm.py::test_schema_using_dsl[args1-expected1] PASSED [ 54%] tests/test_llm.py::test_schema_async[False] PASSED [ 55%] tests/test_llm.py::test_schema_async[True] PASSED [ 55%] tests/test_llm.py::test_mock_key_model PASSED [ 55%] tests/test_llm.py::test_mock_async_key_model PASSED [ 55%] tests/test_llm.py::test_sync_on_done PASSED [ 56%] tests/test_llm.py::test_schemas_dsl PASSED [ 56%] tests/test_llm_logs.py::test_logs_text[False] PASSED [ 56%] tests/test_llm_logs.py::test_logs_text[True] PASSED [ 56%] tests/test_llm_logs.py::test_logs_json[None] PASSED [ 57%] tests/test_llm_logs.py::test_logs_json[0] PASSED [ 57%] tests/test_llm_logs.py::test_logs_json[2] PASSED [ 57%] tests/test_llm_logs.py::test_logs_response_only[args0] PASSED [ 57%] tests/test_llm_logs.py::test_logs_response_only[args1] PASSED [ 58%] tests/test_llm_logs.py::test_logs_response_only[args2] PASSED [ 58%] tests/test_llm_logs.py::test_logs_response_only[args3] PASSED [ 58%] tests/test_llm_logs.py::test_logs_extract_first_code[args0] PASSED [ 59%] tests/test_llm_logs.py::test_logs_extract_first_code[args1] PASSED [ 59%] tests/test_llm_logs.py::test_logs_extract_first_code[args2] PASSED [ 59%] tests/test_llm_logs.py::test_logs_extract_first_code[args3] PASSED [ 59%] tests/test_llm_logs.py::test_logs_extract_first_code[args4] PASSED [ 60%] tests/test_llm_logs.py::test_logs_extract_first_code[args5] PASSED [ 60%] tests/test_llm_logs.py::test_logs_extract_first_code[args6] PASSED [ 60%] tests/test_llm_logs.py::test_logs_extract_last_code[args0] PASSED [ 60%] tests/test_llm_logs.py::test_logs_extract_last_code[args1] PASSED [ 61%] tests/test_llm_logs.py::test_logs_extract_last_code[args2] PASSED [ 61%] tests/test_llm_logs.py::test_logs_extract_last_code[args3] PASSED [ 61%] tests/test_llm_logs.py::test_logs_extract_last_code[args4] PASSED [ 61%] tests/test_llm_logs.py::test_logs_extract_last_code[args5] PASSED [ 62%] tests/test_llm_logs.py::test_logs_short[None--s] PASSED [ 62%] tests/test_llm_logs.py::test_logs_short[None---short] PASSED [ 62%] tests/test_llm_logs.py::test_logs_short[-u--s] PASSED [ 62%] tests/test_llm_logs.py::test_logs_short[-u---short] PASSED [ 63%] tests/test_llm_logs.py::test_logs_short[--usage--s] PASSED [ 63%] tests/test_llm_logs.py::test_logs_short[--usage---short] PASSED [ 63%] tests/test_llm_logs.py::test_logs_path[env0] PASSED [ 63%] tests/test_llm_logs.py::test_logs_path[env1] PASSED [ 64%] tests/test_llm_logs.py::test_logs_filtered[None-davinci] PASSED [ 64%] tests/test_llm_logs.py::test_logs_filtered[None-curie] PASSED [ 64%] tests/test_llm_logs.py::test_logs_filtered[-p-davinci] PASSED [ 64%] tests/test_llm_logs.py::test_logs_filtered[-p-curie] PASSED [ 65%] tests/test_llm_logs.py::test_logs_filtered[--path-davinci] PASSED [ 65%] tests/test_llm_logs.py::test_logs_filtered[--path-curie] PASSED [ 65%] tests/test_llm_logs.py::test_logs_filtered[-d-davinci] PASSED [ 65%] tests/test_llm_logs.py::test_logs_filtered[-d-curie] PASSED [ 66%] tests/test_llm_logs.py::test_logs_filtered[--database-davinci] PASSED [ 66%] tests/test_llm_logs.py::test_logs_filtered[--database-curie] PASSED [ 66%] tests/test_llm_logs.py::test_logs_search[-extra_args0-expected0] PASSED [ 67%] tests/test_llm_logs.py::test_logs_search[llama-extra_args1-expected1] PASSED [ 67%] tests/test_llm_logs.py::test_logs_search[alpaca-extra_args2-expected2] PASSED [ 67%] tests/test_llm_logs.py::test_logs_search[llama-extra_args3-expected3] PASSED [ 67%] tests/test_llm_logs.py::test_logs_search[llama-extra_args4-expected4] PASSED [ 68%] tests/test_llm_logs.py::test_logs_schema[args0-{"name": "1"}\n{"name": "0"}\n] PASSED [ 68%] tests/test_llm_logs.py::test_logs_schema[args1-{"items": [{"name": "one"}, {"name": "two"}]}\n{"items": [{"name": "one"}, {"name": "two"}]}\n{"items": [{"name": "one"}, {"name": "two"}]}\n{"items": [{"name": "one"}, {"name": "two"}]}\n] PASSED [ 68%] tests/test_llm_logs.py::test_logs_schema[args2-[{"items": [{"name": "one"}, {"name": "two"}]},\n {"items": [{"name": "one"}, {"name": "two"}]},\n {"items": [{"name": "one"}, {"name": "two"}]},\n {"items": [{"name": "one"}, {"name": "two"}]}]\n] PASSED [ 68%] tests/test_llm_logs.py::test_logs_schema[args3-{"name": "one"}\n{"name": "two"}\n{"name": "one"}\n{"name": "two"}\n{"name": "one"}\n{"name": "two"}\n{"name": "one"}\n{"name": "two"}\n] PASSED [ 69%] tests/test_llm_logs.py::test_logs_schema_data_ids PASSED [ 69%] tests/test_llm_logs.py::test_logs_fragments[fragment_refs0-expected0] PASSED [ 69%] tests/test_llm_logs.py::test_logs_fragments[fragment_refs1-expected1] PASSED [ 69%] tests/test_llm_logs.py::test_logs_fragments[fragment_refs2-expected2] PASSED [ 70%] tests/test_llm_logs.py::test_logs_fragments_markdown PASSED [ 70%] tests/test_llm_logs.py::test_expand_fragment_json[-e] PASSED [ 70%] tests/test_llm_logs.py::test_expand_fragment_json[--expand] PASSED [ 70%] tests/test_llm_logs.py::test_expand_fragment_markdown PASSED [ 71%] tests/test_llm_logs.py::test_logs_backup PASSED [ 71%] tests/test_migrate.py::test_migrate_blank PASSED [ 71%] tests/test_migrate.py::test_migrate_from_original_schema[True] PASSED [ 71%] tests/test_migrate.py::test_migrate_from_original_schema[False] PASSED [ 72%] tests/test_migrate.py::test_migrations_with_legacy_alter_table PASSED [ 72%] tests/test_migrate.py::test_migrations_for_embeddings PASSED [ 72%] tests/test_migrate.py::test_backfill_content_hash PASSED [ 72%] tests/test_plugins.py::test_register_commands PASSED [ 73%] tests/test_plugins.py::test_register_template_loaders PASSED [ 73%] tests/test_plugins.py::test_register_fragment_loaders PASSED [ 73%] tests/test_templates.py::test_template_evaluate[S: $input-None-None-params0-S: input-None-None] PASSED [ 73%] tests/test_templates.py::test_template_evaluate[S: $input-system-None-params1-S: input-system-None] PASSED [ 74%] tests/test_templates.py::test_template_evaluate[No vars-None-None-params2-No vars-None-None] PASSED [ 74%] tests/test_templates.py::test_template_evaluate[$one and $two-None-None-params3-None-None-Missing variables: one, two] PASSED [ 74%] tests/test_templates.py::test_template_evaluate[$one and $two-None-None-params4-1 and 2-None-None] PASSED [ 75%] tests/test_templates.py::test_template_evaluate[$one and $two-None-defaults5-params5-1 and 2-None-None] PASSED [ 75%] tests/test_templates.py::test_template_evaluate[$one and $two-None-defaults6-params6-1 and 2-None-None] PASSED [ 75%] tests/test_templates.py::test_templates_list_no_templates_found PASSED [ 75%] tests/test_templates.py::test_templates_list[args0] PASSED [ 76%] tests/test_templates.py::test_templates_list[args1] PASSED [ 76%] tests/test_templates.py::test_templates_prompt_save[args0-expected0-None] PASSED [ 76%] tests/test_templates.py::test_templates_prompt_save[args1-expected1-None] PASSED [ 76%] tests/test_templates.py::test_templates_prompt_save[args2-expected2-None] PASSED [ 77%] tests/test_templates.py::test_templates_prompt_save[args3-None---save cannot be used with --template] PASSED [ 77%] tests/test_templates.py::test_templates_prompt_save[args4-None---save cannot be used with --continue] PASSED [ 77%] tests/test_templates.py::test_templates_prompt_save[args5-None---save cannot be used with --cid] PASSED [ 77%] tests/test_templates.py::test_templates_prompt_save[args6-None---save cannot be used with --cid] PASSED [ 78%] tests/test_templates.py::test_templates_prompt_save[args7-expected7-None] PASSED [ 78%] tests/test_templates.py::test_templates_prompt_save[args8-expected8-None] PASSED [ 78%] tests/test_templates.py::test_templates_prompt_save[args9-expected9-None] PASSED [ 78%] tests/test_templates.py::test_templates_prompt_save[args10-expected10-None] PASSED [ 79%] tests/test_templates.py::test_templates_prompt_save[args11-expected11-None] PASSED [ 79%] tests/test_templates.py::test_templates_prompt_save[args12-expected12-None] PASSED [ 79%] tests/test_templates.py::test_templates_error_on_missing_schema PASSED [ 79%] tests/test_templates.py::test_execute_prompt_with_a_template['Summarize this: $input'-Input text-extra_args0-gpt-4o-mini-Summarize this: Input text-None-None] PASSED [ 80%] tests/test_templates.py::test_execute_prompt_with_a_template[prompt: 'Summarize this: $input'\nmodel: gpt-4-Input text-extra_args1-gpt-4-Summarize this: Input text-None-None] PASSED [ 80%] tests/test_templates.py::test_execute_prompt_with_a_template[prompt: 'Summarize this: $input'-Input text-extra_args2-gpt-4-Summarize this: Input text-None-None] PASSED [ 80%] tests/test_templates.py::test_execute_prompt_with_a_template[boo-Input text-extra_args3-None-None-Error: Cannot use -t/--template and --system together-None] PASSED [ 80%] tests/test_templates.py::test_execute_prompt_with_a_template[prompt: 'Say $hello'-Input text-extra_args4-None-None-Error: Missing variables: hello-None] PASSED [ 81%] tests/test_templates.py::test_execute_prompt_with_a_template[prompt: 'Say $hello'-Input text-extra_args5-gpt-4o-mini-Say Blah\nInput text-None-None] PASSED [ 81%] tests/test_templates.py::test_execute_prompt_with_a_template[prompt: 'Say pelican'--extra_args6-gpt-4o-mini-Say pelican-None-None] PASSED [ 81%] tests/test_templates.py::test_execute_prompt_with_a_template[system: 'Summarize this'-Input text-extra_args7-gpt-4o-mini-expected_input7-None-None] PASSED [ 81%] tests/test_templates.py::test_execute_prompt_with_a_template[prompt: 'Summarize this: $input'\noptions:\n temperature: 0.5-Input text-extra_args8-gpt-4o-mini-Summarize this: Input text-None-expected_options8] PASSED [ 82%] tests/test_templates.py::test_execute_prompt_with_a_template[prompt: 'Summarize this: $input'\noptions:\n temperature: 0.5-Input text-extra_args9-gpt-4o-mini-Summarize this: Input text-None-expected_options9] PASSED [ 82%] tests/test_templates.py::test_execute_prompt_from_template_url[system: system\nprompt: prompt-system:\nsystem\n\nprompt:\nprompt] PASSED [ 82%] tests/test_templates.py::test_execute_prompt_from_template_url[prompt: |\n This is\n ```\n code to extract\n ```-system:\n\n\nprompt:\nThis is\n```\ncode to extract\n```] PASSED [ 82%] tests/test_templates.py::test_execute_prompt_from_template_url[extract: true\nprompt: |\n This is\n ```\n code to extract\n ```-code to extract] PASSED [ 83%] tests/test_templates.py::test_execute_prompt_from_template_path PASSED [ 83%] tests/test_utils.py::test_simplify_usage_dict[input_data0-expected_output0] PASSED [ 83%] tests/test_utils.py::test_simplify_usage_dict[input_data1-expected_output1] PASSED [ 84%] tests/test_utils.py::test_simplify_usage_dict[input_data2-expected_output2] PASSED [ 84%] tests/test_utils.py::test_simplify_usage_dict[input_data3-expected_output3] PASSED [ 84%] tests/test_utils.py::test_simplify_usage_dict[input_data4-expected_output4] PASSED [ 84%] tests/test_utils.py::test_extract_fenced_code_block[This is a sample text without any code blocks.-False-None] PASSED [ 85%] tests/test_utils.py::test_extract_fenced_code_block[Here is some text.\n\n```\ndef foo():\n return 'bar'\n```\n\nMore text.-False-def foo():\n return 'bar'\n] PASSED [ 85%] tests/test_utils.py::test_extract_fenced_code_block[Here is some text.\n\n```python\ndef foo():\n return 'bar'\n```\n\nMore text.-False-def foo():\n return 'bar'\n] PASSED [ 85%] tests/test_utils.py::test_extract_fenced_code_block[Here is some text.\n\n````\ndef foo():\n return 'bar'\n````\n\nMore text.-False-def foo():\n return 'bar'\n] PASSED [ 85%] tests/test_utils.py::test_extract_fenced_code_block[Here is some text.\n\n````javascript\nfunction foo() {\n return 'bar';\n}\n````\n\nMore text.-False-function foo() {\n return 'bar';\n}\n] PASSED [ 86%] tests/test_utils.py::test_extract_fenced_code_block[Here is some text.\n\n```python\ndef foo():\n return 'bar'\n````\n\nMore text.-False-None] PASSED [ 86%] tests/test_utils.py::test_extract_fenced_code_block[First code block:\n\n```python\ndef foo():\n return 'bar'\n```\n\nSecond code block:\n\n```javascript\nfunction foo() {\n return 'bar';\n}\n```-False-def foo():\n return 'bar'\n] PASSED [ 86%] tests/test_utils.py::test_extract_fenced_code_block[First code block:\n\n```python\ndef foo():\n return 'bar'\n```\n\nSecond code block:\n\n```javascript\nfunction foo() {\n return 'bar';\n}\n```-True-function foo() {\n return 'bar';\n}\n] PASSED [ 86%] tests/test_utils.py::test_extract_fenced_code_block[First code block:\n\n```python\ndef foo():\n return 'bar'\n```\n\nSecond code block:\n\n```javascript\nfunction foo() {\n return 'bar';\n}\n``` -True-function foo() {\n return 'bar';\n}\n] PASSED [ 87%] tests/test_utils.py::test_extract_fenced_code_block[Here is some text.\n\n```python\ndef foo():\n return `bar`\n```\n\nMore text.-False-def foo():\n return `bar`\n] PASSED [ 87%] tests/test_utils.py::test_schema_dsl[name, bio-expected0] PASSED [ 87%] tests/test_utils.py::test_schema_dsl[name, age int, balance float, active bool-expected1] PASSED [ 87%] tests/test_utils.py::test_schema_dsl[name: full name, age int: years old-expected2] PASSED [ 88%] tests/test_utils.py::test_schema_dsl[\n name\n bio\n age int\n -expected3] PASSED [ 88%] tests/test_utils.py::test_schema_dsl[\n name: the person's name\n age int: their age in years, must be positive\n bio: a short bio, no more than three sentences\n -expected4] PASSED [ 88%] tests/test_utils.py::test_schema_dsl[-expected5] PASSED [ 88%] tests/test_utils.py::test_schema_dsl[name str, description str-expected6] PASSED [ 89%] tests/test_utils.py::test_schema_dsl[ name , age int : person's age -expected7] PASSED [ 89%] tests/test_utils.py::test_schema_dsl_multi PASSED [ 89%] tests/test_utils.py::test_truncate_string[Hello, world!-100-False-False-Hello, world!] PASSED [ 89%] tests/test_utils.py::test_truncate_string[Hello, world!-5-False-False-He...] PASSED [ 90%] tests/test_utils.py::test_truncate_string[-10-False-False-] PASSED [ 90%] tests/test_utils.py::test_truncate_string[None-10-False-False-None] PASSED [ 90%] tests/test_utils.py::test_truncate_string[Hello world!-100-True-False-Hello world!] PASSED [ 90%] tests/test_utils.py::test_truncate_string[Hello \n\t world!-100-True-False-Hello world!] PASSED [ 91%] tests/test_utils.py::test_truncate_string[Hello world!-5-True-False-He...] PASSED [ 91%] tests/test_utils.py::test_truncate_string[Hello, world!-10-False-True-He... d!] PASSED [ 91%] tests/test_utils.py::test_truncate_string[Hello, world!-7-False-False-Hell...] PASSED [ 92%] tests/test_utils.py::test_truncate_string[1234567890-7-False-False-1234...] PASSED [ 92%] tests/test_utils.py::test_truncate_string[Hello world!-10-True-True-He... d!] PASSED [ 92%] tests/test_utils.py::test_truncate_string[Hello \n\t world!-12-True-True-Hello world!] PASSED [ 92%] tests/test_utils.py::test_truncate_string[12345-5-False-False-12345] PASSED [ 93%] tests/test_utils.py::test_truncate_string[123456-5-False-False-12...0] PASSED [ 93%] tests/test_utils.py::test_truncate_string[12345-5-False-True-12345] PASSED [ 93%] tests/test_utils.py::test_truncate_string[123456-5-False-False-12...1] PASSED [ 93%] tests/test_utils.py::test_truncate_string[AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA-10-False-False-AAAAAAA...] PASSED [ 94%] tests/test_utils.py::test_truncate_string[AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA-10-False-True-AA... AA] PASSED [ 94%] tests/test_utils.py::test_truncate_string[123456789-9-False-False-123456789] PASSED [ 94%] tests/test_utils.py::test_truncate_string[1234567890-9-False-False-123456...] PASSED [ 94%] tests/test_utils.py::test_truncate_string[123456789-9-False-True-123456789] PASSED [ 95%] tests/test_utils.py::test_truncate_string[1234567890-9-False-True-12... 90_0] PASSED [ 95%] tests/test_utils.py::test_truncate_string[1234567890-8-False-True-12345...] PASSED [ 95%] tests/test_utils.py::test_truncate_string[1234567890-9-False-True-12... 90_1] PASSED [ 95%] tests/test_utils.py::test_test_truncate_string_keep_end[0123456789-10-True-None-0123456789] PASSED [ 96%] tests/test_utils.py::test_test_truncate_string_keep_end[012345678901234-14-True-4-0123... 1234] PASSED [ 96%] tests/test_utils.py::test_test_truncate_string_keep_end[abcdefghijklmnopqrstuvwxyz-10-True-2-ab... yz] PASSED [ 96%] tests/test_utils.py::test_test_truncate_string_keep_end[abcdefghijklmnopqrstuvwxyz-12-True-3-abc... xyz] PASSED [ 96%] tests/test_utils.py::test_test_truncate_string_keep_end[abcdefghijklmnopqrstuvwxyz-8-True-None-abcde...] PASSED [ 97%] tests/test_utils.py::test_maybe_fenced_code[

Test

TestTestTestTestTest-True] PASSED [ 97%] tests/test_utils.py::test_maybe_fenced_code[

Just a paragraph

-False] PASSED [ 97%] tests/test_utils.py::test_maybe_fenced_code[line1\nline2\nline3\nline4\nline5-True] PASSED [ 97%] tests/test_utils.py::test_maybe_fenced_code[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-False] PASSED [ 98%] tests/test_utils.py::test_maybe_fenced_code[
\n

Line 1

\n

Line 2

\n

Line 3

\n
-True] PASSED [ 98%] tests/test_utils.py::test_maybe_fenced_code[

Only two

-False] PASSED [ 98%] tests/test_utils.py::test_maybe_fenced_code[-False] PASSED [ 98%] tests/test_utils.py::test_maybe_fenced_code[```\ndef test():\n pass\n```-True] PASSED [ 99%] tests/test_utils.py::test_backtick_count_adjustment[def test():\n pass-3] PASSED [ 99%] tests/test_utils.py::test_backtick_count_adjustment[```\ndef test():\n pass\n```-4] PASSED [ 99%] tests/test_utils.py::test_backtick_count_adjustment[````\ndef test():\n pass\n````-5] PASSED [100%] ==================================== ERRORS ==================================== _______ ERROR at teardown of test_gpt4o_mini_sync_and_async[None-False] ________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4b5d8bda90> request = > @pytest.fixture def httpx_mock( monkeypatch: MonkeyPatch, request: FixtureRequest, ) -> Generator[HTTPXMock, None, None]: options = {} for marker in request.node.iter_markers("httpx_mock"): options = marker.kwargs | options __tracebackhide__ = methodcaller("errisinstance", TypeError) options = _HTTPXMockOptions(**options) mock = HTTPXMock(options) # Mock synchronous requests real_handle_request = httpx.HTTPTransport.handle_request def mocked_handle_request( transport: httpx.HTTPTransport, request: httpx.Request ) -> httpx.Response: if options.should_mock(request): return mock._handle_request(transport, request) return real_handle_request(transport, request) monkeypatch.setattr( httpx.HTTPTransport, "handle_request", mocked_handle_request, ) # Mock asynchronous requests real_handle_async_request = httpx.AsyncHTTPTransport.handle_async_request async def mocked_handle_async_request( transport: httpx.AsyncHTTPTransport, request: httpx.Request ) -> httpx.Response: if options.should_mock(request): return await mock._handle_async_request(transport, request) return await real_handle_async_request(transport, request) monkeypatch.setattr( httpx.AsyncHTTPTransport, "handle_async_request", mocked_handle_async_request, ) yield mock try: > mock._assert_options() /usr/lib/python3/site-packages/pytest_httpx/__init__.py:67: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _assert_options(self) -> None: callbacks_not_executed = [ matcher for matcher, _ in self._callbacks if matcher.should_have_matched() ] matchers_description = "\n".join( [f"- {matcher}" for matcher in callbacks_not_executed] ) > assert not callbacks_not_executed, ( "The following responses are mocked but not requested:\n" f"{matchers_description}\n" "\n" "If this is on purpose, refer to https://github.com/Colin-b/pytest_httpx/blob/master/README.md#allow-to-register-more-responses-than-what-will-be-requested" ) E AssertionError: The following responses are mocked but not requested: E - Match POST request on https://api.openai.com/v1/chat/completions E E If this is on purpose, refer to https://github.com/Colin-b/pytest_httpx/blob/master/README.md#allow-to-register-more-responses-than-what-will-be-requested /usr/lib/python3/site-packages/pytest_httpx/_httpx_mock.py:319: AssertionError ________ ERROR at teardown of test_gpt4o_mini_sync_and_async[None-True] ________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4b5d146ea0> request = > @pytest.fixture def httpx_mock( monkeypatch: MonkeyPatch, request: FixtureRequest, ) -> Generator[HTTPXMock, None, None]: options = {} for marker in request.node.iter_markers("httpx_mock"): options = marker.kwargs | options __tracebackhide__ = methodcaller("errisinstance", TypeError) options = _HTTPXMockOptions(**options) mock = HTTPXMock(options) # Mock synchronous requests real_handle_request = httpx.HTTPTransport.handle_request def mocked_handle_request( transport: httpx.HTTPTransport, request: httpx.Request ) -> httpx.Response: if options.should_mock(request): return mock._handle_request(transport, request) return real_handle_request(transport, request) monkeypatch.setattr( httpx.HTTPTransport, "handle_request", mocked_handle_request, ) # Mock asynchronous requests real_handle_async_request = httpx.AsyncHTTPTransport.handle_async_request async def mocked_handle_async_request( transport: httpx.AsyncHTTPTransport, request: httpx.Request ) -> httpx.Response: if options.should_mock(request): return await mock._handle_async_request(transport, request) return await real_handle_async_request(transport, request) monkeypatch.setattr( httpx.AsyncHTTPTransport, "handle_async_request", mocked_handle_async_request, ) yield mock try: > mock._assert_options() /usr/lib/python3/site-packages/pytest_httpx/__init__.py:67: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _assert_options(self) -> None: callbacks_not_executed = [ matcher for matcher, _ in self._callbacks if matcher.should_have_matched() ] matchers_description = "\n".join( [f"- {matcher}" for matcher in callbacks_not_executed] ) > assert not callbacks_not_executed, ( "The following responses are mocked but not requested:\n" f"{matchers_description}\n" "\n" "If this is on purpose, refer to https://github.com/Colin-b/pytest_httpx/blob/master/README.md#allow-to-register-more-responses-than-what-will-be-requested" ) E AssertionError: The following responses are mocked but not requested: E - Match POST request on https://api.openai.com/v1/chat/completions E E If this is on purpose, refer to https://github.com/Colin-b/pytest_httpx/blob/master/README.md#allow-to-register-more-responses-than-what-will-be-requested /usr/lib/python3/site-packages/pytest_httpx/_httpx_mock.py:319: AssertionError ________ ERROR at teardown of test_gpt4o_mini_sync_and_async[-u-False] _________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4b5d145940> request = > @pytest.fixture def httpx_mock( monkeypatch: MonkeyPatch, request: FixtureRequest, ) -> Generator[HTTPXMock, None, None]: options = {} for marker in request.node.iter_markers("httpx_mock"): options = marker.kwargs | options __tracebackhide__ = methodcaller("errisinstance", TypeError) options = _HTTPXMockOptions(**options) mock = HTTPXMock(options) # Mock synchronous requests real_handle_request = httpx.HTTPTransport.handle_request def mocked_handle_request( transport: httpx.HTTPTransport, request: httpx.Request ) -> httpx.Response: if options.should_mock(request): return mock._handle_request(transport, request) return real_handle_request(transport, request) monkeypatch.setattr( httpx.HTTPTransport, "handle_request", mocked_handle_request, ) # Mock asynchronous requests real_handle_async_request = httpx.AsyncHTTPTransport.handle_async_request async def mocked_handle_async_request( transport: httpx.AsyncHTTPTransport, request: httpx.Request ) -> httpx.Response: if options.should_mock(request): return await mock._handle_async_request(transport, request) return await real_handle_async_request(transport, request) monkeypatch.setattr( httpx.AsyncHTTPTransport, "handle_async_request", mocked_handle_async_request, ) yield mock try: > mock._assert_options() /usr/lib/python3/site-packages/pytest_httpx/__init__.py:67: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _assert_options(self) -> None: callbacks_not_executed = [ matcher for matcher, _ in self._callbacks if matcher.should_have_matched() ] matchers_description = "\n".join( [f"- {matcher}" for matcher in callbacks_not_executed] ) > assert not callbacks_not_executed, ( "The following responses are mocked but not requested:\n" f"{matchers_description}\n" "\n" "If this is on purpose, refer to https://github.com/Colin-b/pytest_httpx/blob/master/README.md#allow-to-register-more-responses-than-what-will-be-requested" ) E AssertionError: The following responses are mocked but not requested: E - Match POST request on https://api.openai.com/v1/chat/completions E E If this is on purpose, refer to https://github.com/Colin-b/pytest_httpx/blob/master/README.md#allow-to-register-more-responses-than-what-will-be-requested /usr/lib/python3/site-packages/pytest_httpx/_httpx_mock.py:319: AssertionError _________ ERROR at teardown of test_gpt4o_mini_sync_and_async[-u-True] _________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4b5d146ed0> request = > @pytest.fixture def httpx_mock( monkeypatch: MonkeyPatch, request: FixtureRequest, ) -> Generator[HTTPXMock, None, None]: options = {} for marker in request.node.iter_markers("httpx_mock"): options = marker.kwargs | options __tracebackhide__ = methodcaller("errisinstance", TypeError) options = _HTTPXMockOptions(**options) mock = HTTPXMock(options) # Mock synchronous requests real_handle_request = httpx.HTTPTransport.handle_request def mocked_handle_request( transport: httpx.HTTPTransport, request: httpx.Request ) -> httpx.Response: if options.should_mock(request): return mock._handle_request(transport, request) return real_handle_request(transport, request) monkeypatch.setattr( httpx.HTTPTransport, "handle_request", mocked_handle_request, ) # Mock asynchronous requests real_handle_async_request = httpx.AsyncHTTPTransport.handle_async_request async def mocked_handle_async_request( transport: httpx.AsyncHTTPTransport, request: httpx.Request ) -> httpx.Response: if options.should_mock(request): return await mock._handle_async_request(transport, request) return await real_handle_async_request(transport, request) monkeypatch.setattr( httpx.AsyncHTTPTransport, "handle_async_request", mocked_handle_async_request, ) yield mock try: > mock._assert_options() /usr/lib/python3/site-packages/pytest_httpx/__init__.py:67: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _assert_options(self) -> None: callbacks_not_executed = [ matcher for matcher, _ in self._callbacks if matcher.should_have_matched() ] matchers_description = "\n".join( [f"- {matcher}" for matcher in callbacks_not_executed] ) > assert not callbacks_not_executed, ( "The following responses are mocked but not requested:\n" f"{matchers_description}\n" "\n" "If this is on purpose, refer to https://github.com/Colin-b/pytest_httpx/blob/master/README.md#allow-to-register-more-responses-than-what-will-be-requested" ) E AssertionError: The following responses are mocked but not requested: E - Match POST request on https://api.openai.com/v1/chat/completions E E If this is on purpose, refer to https://github.com/Colin-b/pytest_httpx/blob/master/README.md#allow-to-register-more-responses-than-what-will-be-requested /usr/lib/python3/site-packages/pytest_httpx/_httpx_mock.py:319: AssertionError ______ ERROR at teardown of test_gpt4o_mini_sync_and_async[--usage-False] ______ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4b5d1449b0> request = > @pytest.fixture def httpx_mock( monkeypatch: MonkeyPatch, request: FixtureRequest, ) -> Generator[HTTPXMock, None, None]: options = {} for marker in request.node.iter_markers("httpx_mock"): options = marker.kwargs | options __tracebackhide__ = methodcaller("errisinstance", TypeError) options = _HTTPXMockOptions(**options) mock = HTTPXMock(options) # Mock synchronous requests real_handle_request = httpx.HTTPTransport.handle_request def mocked_handle_request( transport: httpx.HTTPTransport, request: httpx.Request ) -> httpx.Response: if options.should_mock(request): return mock._handle_request(transport, request) return real_handle_request(transport, request) monkeypatch.setattr( httpx.HTTPTransport, "handle_request", mocked_handle_request, ) # Mock asynchronous requests real_handle_async_request = httpx.AsyncHTTPTransport.handle_async_request async def mocked_handle_async_request( transport: httpx.AsyncHTTPTransport, request: httpx.Request ) -> httpx.Response: if options.should_mock(request): return await mock._handle_async_request(transport, request) return await real_handle_async_request(transport, request) monkeypatch.setattr( httpx.AsyncHTTPTransport, "handle_async_request", mocked_handle_async_request, ) yield mock try: > mock._assert_options() /usr/lib/python3/site-packages/pytest_httpx/__init__.py:67: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _assert_options(self) -> None: callbacks_not_executed = [ matcher for matcher, _ in self._callbacks if matcher.should_have_matched() ] matchers_description = "\n".join( [f"- {matcher}" for matcher in callbacks_not_executed] ) > assert not callbacks_not_executed, ( "The following responses are mocked but not requested:\n" f"{matchers_description}\n" "\n" "If this is on purpose, refer to https://github.com/Colin-b/pytest_httpx/blob/master/README.md#allow-to-register-more-responses-than-what-will-be-requested" ) E AssertionError: The following responses are mocked but not requested: E - Match POST request on https://api.openai.com/v1/chat/completions E E If this is on purpose, refer to https://github.com/Colin-b/pytest_httpx/blob/master/README.md#allow-to-register-more-responses-than-what-will-be-requested /usr/lib/python3/site-packages/pytest_httpx/_httpx_mock.py:319: AssertionError ______ ERROR at teardown of test_gpt4o_mini_sync_and_async[--usage-True] _______ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4b5d144f80> request = > @pytest.fixture def httpx_mock( monkeypatch: MonkeyPatch, request: FixtureRequest, ) -> Generator[HTTPXMock, None, None]: options = {} for marker in request.node.iter_markers("httpx_mock"): options = marker.kwargs | options __tracebackhide__ = methodcaller("errisinstance", TypeError) options = _HTTPXMockOptions(**options) mock = HTTPXMock(options) # Mock synchronous requests real_handle_request = httpx.HTTPTransport.handle_request def mocked_handle_request( transport: httpx.HTTPTransport, request: httpx.Request ) -> httpx.Response: if options.should_mock(request): return mock._handle_request(transport, request) return real_handle_request(transport, request) monkeypatch.setattr( httpx.HTTPTransport, "handle_request", mocked_handle_request, ) # Mock asynchronous requests real_handle_async_request = httpx.AsyncHTTPTransport.handle_async_request async def mocked_handle_async_request( transport: httpx.AsyncHTTPTransport, request: httpx.Request ) -> httpx.Response: if options.should_mock(request): return await mock._handle_async_request(transport, request) return await real_handle_async_request(transport, request) monkeypatch.setattr( httpx.AsyncHTTPTransport, "handle_async_request", mocked_handle_async_request, ) yield mock try: > mock._assert_options() /usr/lib/python3/site-packages/pytest_httpx/__init__.py:67: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _assert_options(self) -> None: callbacks_not_executed = [ matcher for matcher, _ in self._callbacks if matcher.should_have_matched() ] matchers_description = "\n".join( [f"- {matcher}" for matcher in callbacks_not_executed] ) > assert not callbacks_not_executed, ( "The following responses are mocked but not requested:\n" f"{matchers_description}\n" "\n" "If this is on purpose, refer to https://github.com/Colin-b/pytest_httpx/blob/master/README.md#allow-to-register-more-responses-than-what-will-be-requested" ) E AssertionError: The following responses are mocked but not requested: E - Match POST request on https://api.openai.com/v1/chat/completions E E If this is on purpose, refer to https://github.com/Colin-b/pytest_httpx/blob/master/README.md#allow-to-register-more-responses-than-what-will-be-requested /usr/lib/python3/site-packages/pytest_httpx/_httpx_mock.py:319: AssertionError =================================== FAILURES =================================== __________________ test_gpt4o_mini_sync_and_async[None-False] __________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4b5d8bda90> tmpdir = local('/usr/src/tmp/pytest-of-builder/pytest-0/test_gpt4o_mini_sync_and_async0') httpx_mock = async_ = False, usage = None @pytest.mark.parametrize("async_", (False, True)) @pytest.mark.parametrize("usage", (None, "-u", "--usage")) def test_gpt4o_mini_sync_and_async(monkeypatch, tmpdir, httpx_mock, async_, usage): user_path = tmpdir / "user_dir" log_db = user_path / "logs.db" monkeypatch.setenv("LLM_USER_PATH", str(user_path)) assert not log_db.exists() httpx_mock.add_response( method="POST", # chat completion request url="https://api.openai.com/v1/chat/completions", json={ "id": "chatcmpl-AQT9a30kxEaM1bqxRPepQsPlCyGJh", "object": "chat.completion", "created": 1730871958, "model": "gpt-4o-mini", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Ho ho ho", "refusal": None, }, "finish_reason": "stop", } ], "usage": { "prompt_tokens": 1000, "completion_tokens": 2000, "total_tokens": 12, }, "system_fingerprint": "fp_49254d0e9b", }, headers={"Content-Type": "application/json"}, ) > runner = CliRunner(mix_stderr=False) E TypeError: CliRunner.__init__() got an unexpected keyword argument 'mix_stderr' tests/test_cli_openai_models.py:185: TypeError __________________ test_gpt4o_mini_sync_and_async[None-True] ___________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4b5d146ea0> tmpdir = local('/usr/src/tmp/pytest-of-builder/pytest-0/test_gpt4o_mini_sync_and_async1') httpx_mock = async_ = True, usage = None @pytest.mark.parametrize("async_", (False, True)) @pytest.mark.parametrize("usage", (None, "-u", "--usage")) def test_gpt4o_mini_sync_and_async(monkeypatch, tmpdir, httpx_mock, async_, usage): user_path = tmpdir / "user_dir" log_db = user_path / "logs.db" monkeypatch.setenv("LLM_USER_PATH", str(user_path)) assert not log_db.exists() httpx_mock.add_response( method="POST", # chat completion request url="https://api.openai.com/v1/chat/completions", json={ "id": "chatcmpl-AQT9a30kxEaM1bqxRPepQsPlCyGJh", "object": "chat.completion", "created": 1730871958, "model": "gpt-4o-mini", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Ho ho ho", "refusal": None, }, "finish_reason": "stop", } ], "usage": { "prompt_tokens": 1000, "completion_tokens": 2000, "total_tokens": 12, }, "system_fingerprint": "fp_49254d0e9b", }, headers={"Content-Type": "application/json"}, ) > runner = CliRunner(mix_stderr=False) E TypeError: CliRunner.__init__() got an unexpected keyword argument 'mix_stderr' tests/test_cli_openai_models.py:185: TypeError ___________________ test_gpt4o_mini_sync_and_async[-u-False] ___________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4b5d145940> tmpdir = local('/usr/src/tmp/pytest-of-builder/pytest-0/test_gpt4o_mini_sync_and_async2') httpx_mock = async_ = False, usage = '-u' @pytest.mark.parametrize("async_", (False, True)) @pytest.mark.parametrize("usage", (None, "-u", "--usage")) def test_gpt4o_mini_sync_and_async(monkeypatch, tmpdir, httpx_mock, async_, usage): user_path = tmpdir / "user_dir" log_db = user_path / "logs.db" monkeypatch.setenv("LLM_USER_PATH", str(user_path)) assert not log_db.exists() httpx_mock.add_response( method="POST", # chat completion request url="https://api.openai.com/v1/chat/completions", json={ "id": "chatcmpl-AQT9a30kxEaM1bqxRPepQsPlCyGJh", "object": "chat.completion", "created": 1730871958, "model": "gpt-4o-mini", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Ho ho ho", "refusal": None, }, "finish_reason": "stop", } ], "usage": { "prompt_tokens": 1000, "completion_tokens": 2000, "total_tokens": 12, }, "system_fingerprint": "fp_49254d0e9b", }, headers={"Content-Type": "application/json"}, ) > runner = CliRunner(mix_stderr=False) E TypeError: CliRunner.__init__() got an unexpected keyword argument 'mix_stderr' tests/test_cli_openai_models.py:185: TypeError ___________________ test_gpt4o_mini_sync_and_async[-u-True] ____________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4b5d146ed0> tmpdir = local('/usr/src/tmp/pytest-of-builder/pytest-0/test_gpt4o_mini_sync_and_async3') httpx_mock = async_ = True, usage = '-u' @pytest.mark.parametrize("async_", (False, True)) @pytest.mark.parametrize("usage", (None, "-u", "--usage")) def test_gpt4o_mini_sync_and_async(monkeypatch, tmpdir, httpx_mock, async_, usage): user_path = tmpdir / "user_dir" log_db = user_path / "logs.db" monkeypatch.setenv("LLM_USER_PATH", str(user_path)) assert not log_db.exists() httpx_mock.add_response( method="POST", # chat completion request url="https://api.openai.com/v1/chat/completions", json={ "id": "chatcmpl-AQT9a30kxEaM1bqxRPepQsPlCyGJh", "object": "chat.completion", "created": 1730871958, "model": "gpt-4o-mini", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Ho ho ho", "refusal": None, }, "finish_reason": "stop", } ], "usage": { "prompt_tokens": 1000, "completion_tokens": 2000, "total_tokens": 12, }, "system_fingerprint": "fp_49254d0e9b", }, headers={"Content-Type": "application/json"}, ) > runner = CliRunner(mix_stderr=False) E TypeError: CliRunner.__init__() got an unexpected keyword argument 'mix_stderr' tests/test_cli_openai_models.py:185: TypeError ________________ test_gpt4o_mini_sync_and_async[--usage-False] _________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4b5d1449b0> tmpdir = local('/usr/src/tmp/pytest-of-builder/pytest-0/test_gpt4o_mini_sync_and_async4') httpx_mock = async_ = False, usage = '--usage' @pytest.mark.parametrize("async_", (False, True)) @pytest.mark.parametrize("usage", (None, "-u", "--usage")) def test_gpt4o_mini_sync_and_async(monkeypatch, tmpdir, httpx_mock, async_, usage): user_path = tmpdir / "user_dir" log_db = user_path / "logs.db" monkeypatch.setenv("LLM_USER_PATH", str(user_path)) assert not log_db.exists() httpx_mock.add_response( method="POST", # chat completion request url="https://api.openai.com/v1/chat/completions", json={ "id": "chatcmpl-AQT9a30kxEaM1bqxRPepQsPlCyGJh", "object": "chat.completion", "created": 1730871958, "model": "gpt-4o-mini", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Ho ho ho", "refusal": None, }, "finish_reason": "stop", } ], "usage": { "prompt_tokens": 1000, "completion_tokens": 2000, "total_tokens": 12, }, "system_fingerprint": "fp_49254d0e9b", }, headers={"Content-Type": "application/json"}, ) > runner = CliRunner(mix_stderr=False) E TypeError: CliRunner.__init__() got an unexpected keyword argument 'mix_stderr' tests/test_cli_openai_models.py:185: TypeError _________________ test_gpt4o_mini_sync_and_async[--usage-True] _________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4b5d144f80> tmpdir = local('/usr/src/tmp/pytest-of-builder/pytest-0/test_gpt4o_mini_sync_and_async5') httpx_mock = async_ = True, usage = '--usage' @pytest.mark.parametrize("async_", (False, True)) @pytest.mark.parametrize("usage", (None, "-u", "--usage")) def test_gpt4o_mini_sync_and_async(monkeypatch, tmpdir, httpx_mock, async_, usage): user_path = tmpdir / "user_dir" log_db = user_path / "logs.db" monkeypatch.setenv("LLM_USER_PATH", str(user_path)) assert not log_db.exists() httpx_mock.add_response( method="POST", # chat completion request url="https://api.openai.com/v1/chat/completions", json={ "id": "chatcmpl-AQT9a30kxEaM1bqxRPepQsPlCyGJh", "object": "chat.completion", "created": 1730871958, "model": "gpt-4o-mini", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Ho ho ho", "refusal": None, }, "finish_reason": "stop", } ], "usage": { "prompt_tokens": 1000, "completion_tokens": 2000, "total_tokens": 12, }, "system_fingerprint": "fp_49254d0e9b", }, headers={"Content-Type": "application/json"}, ) > runner = CliRunner(mix_stderr=False) E TypeError: CliRunner.__init__() got an unexpected keyword argument 'mix_stderr' tests/test_cli_openai_models.py:185: TypeError ______________ test_embed_multi_files_encoding[extra_args0-None] _______________ multi_files = ('/usr/src/tmp/pytest-of-builder/pytest-0/test_embed_multi_files_encodin0/files.db', local('/usr/src/tmp/pytest-of-builder/pytest-0/test_embed_multi_files_encodin0/files')) extra_args = [], expected_error = None @pytest.mark.parametrize( "extra_args,expected_error", ( # With no args default utf-8 with latin-1 fallback should work ([], None), (["--encoding", "utf-8"], "Could not decode text in file"), (["--encoding", "latin-1"], None), (["--encoding", "latin-1", "--encoding", "utf-8"], None), (["--encoding", "utf-8", "--encoding", "latin-1"], None), ), ) def test_embed_multi_files_encoding(multi_files, extra_args, expected_error): db_path, files = multi_files > runner = CliRunner(mix_stderr=False) E TypeError: CliRunner.__init__() got an unexpected keyword argument 'mix_stderr' tests/test_embed_cli.py:549: TypeError __ test_embed_multi_files_encoding[extra_args1-Could not decode text in file] __ multi_files = ('/usr/src/tmp/pytest-of-builder/pytest-0/test_embed_multi_files_encodin1/files.db', local('/usr/src/tmp/pytest-of-builder/pytest-0/test_embed_multi_files_encodin1/files')) extra_args = ['--encoding', 'utf-8'] expected_error = 'Could not decode text in file' @pytest.mark.parametrize( "extra_args,expected_error", ( # With no args default utf-8 with latin-1 fallback should work ([], None), (["--encoding", "utf-8"], "Could not decode text in file"), (["--encoding", "latin-1"], None), (["--encoding", "latin-1", "--encoding", "utf-8"], None), (["--encoding", "utf-8", "--encoding", "latin-1"], None), ), ) def test_embed_multi_files_encoding(multi_files, extra_args, expected_error): db_path, files = multi_files > runner = CliRunner(mix_stderr=False) E TypeError: CliRunner.__init__() got an unexpected keyword argument 'mix_stderr' tests/test_embed_cli.py:549: TypeError ______________ test_embed_multi_files_encoding[extra_args2-None] _______________ multi_files = ('/usr/src/tmp/pytest-of-builder/pytest-0/test_embed_multi_files_encodin2/files.db', local('/usr/src/tmp/pytest-of-builder/pytest-0/test_embed_multi_files_encodin2/files')) extra_args = ['--encoding', 'latin-1'], expected_error = None @pytest.mark.parametrize( "extra_args,expected_error", ( # With no args default utf-8 with latin-1 fallback should work ([], None), (["--encoding", "utf-8"], "Could not decode text in file"), (["--encoding", "latin-1"], None), (["--encoding", "latin-1", "--encoding", "utf-8"], None), (["--encoding", "utf-8", "--encoding", "latin-1"], None), ), ) def test_embed_multi_files_encoding(multi_files, extra_args, expected_error): db_path, files = multi_files > runner = CliRunner(mix_stderr=False) E TypeError: CliRunner.__init__() got an unexpected keyword argument 'mix_stderr' tests/test_embed_cli.py:549: TypeError ______________ test_embed_multi_files_encoding[extra_args3-None] _______________ multi_files = ('/usr/src/tmp/pytest-of-builder/pytest-0/test_embed_multi_files_encodin3/files.db', local('/usr/src/tmp/pytest-of-builder/pytest-0/test_embed_multi_files_encodin3/files')) extra_args = ['--encoding', 'latin-1', '--encoding', 'utf-8'] expected_error = None @pytest.mark.parametrize( "extra_args,expected_error", ( # With no args default utf-8 with latin-1 fallback should work ([], None), (["--encoding", "utf-8"], "Could not decode text in file"), (["--encoding", "latin-1"], None), (["--encoding", "latin-1", "--encoding", "utf-8"], None), (["--encoding", "utf-8", "--encoding", "latin-1"], None), ), ) def test_embed_multi_files_encoding(multi_files, extra_args, expected_error): db_path, files = multi_files > runner = CliRunner(mix_stderr=False) E TypeError: CliRunner.__init__() got an unexpected keyword argument 'mix_stderr' tests/test_embed_cli.py:549: TypeError ______________ test_embed_multi_files_encoding[extra_args4-None] _______________ multi_files = ('/usr/src/tmp/pytest-of-builder/pytest-0/test_embed_multi_files_encodin4/files.db', local('/usr/src/tmp/pytest-of-builder/pytest-0/test_embed_multi_files_encodin4/files')) extra_args = ['--encoding', 'utf-8', '--encoding', 'latin-1'] expected_error = None @pytest.mark.parametrize( "extra_args,expected_error", ( # With no args default utf-8 with latin-1 fallback should work ([], None), (["--encoding", "utf-8"], "Could not decode text in file"), (["--encoding", "latin-1"], None), (["--encoding", "latin-1", "--encoding", "utf-8"], None), (["--encoding", "utf-8", "--encoding", "latin-1"], None), ), ) def test_embed_multi_files_encoding(multi_files, extra_args, expected_error): db_path, files = multi_files > runner = CliRunner(mix_stderr=False) E TypeError: CliRunner.__init__() got an unexpected keyword argument 'mix_stderr' tests/test_embed_cli.py:549: TypeError =========================== short test summary info ============================ ERROR tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[None-False] ERROR tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[None-True] ERROR tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[-u-False] ERROR tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[-u-True] ERROR tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[--usage-False] ERROR tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[--usage-True] FAILED tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[None-False] FAILED tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[None-True] FAILED tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[-u-False] FAILED tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[-u-True] FAILED tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[--usage-False] FAILED tests/test_cli_openai_models.py::test_gpt4o_mini_sync_and_async[--usage-True] FAILED tests/test_embed_cli.py::test_embed_multi_files_encoding[extra_args0-None] FAILED tests/test_embed_cli.py::test_embed_multi_files_encoding[extra_args1-Could not decode text in file] FAILED tests/test_embed_cli.py::test_embed_multi_files_encoding[extra_args2-None] FAILED tests/test_embed_cli.py::test_embed_multi_files_encoding[extra_args3-None] FAILED tests/test_embed_cli.py::test_embed_multi_files_encoding[extra_args4-None] ================== 11 failed, 377 passed, 6 errors in 10.93s =================== INFO : Command's result: FAILURE INFO : Command's error: Command '['python3', '-m', 'pytest', '-vra', '-o=addopts=-Wignore']' returned non-zero exit status 1. error: Bad exit status from /usr/src/tmp/rpm-tmp.43922 (%check) RPM build errors: File /usr/src/RPM/SOURCES/python3-module-llm-0.24.2-alt.patch is smaller than 8 bytes Bad exit status from /usr/src/tmp/rpm-tmp.43922 (%check) Command exited with non-zero status 1 9.14user 2.77system 0:14.41elapsed 82%CPU (0avgtext+0avgdata 106164maxresident)k 0inputs+0outputs (0major+182990minor)pagefaults 0swaps hsh-rebuild: rebuild of `python3-module-llm-0.24.2-alt1.src.rpm' failed. Command exited with non-zero status 1 8.97user 6.18system 0:43.49elapsed 34%CPU (0avgtext+0avgdata 140412maxresident)k 10368inputs+0outputs (0major+298363minor)pagefaults 0swaps