{
 "environment": {
  "label": "no-compiler-1016",
  "python": "3.15.0 (main, Oct 12 2026, 22:33:31) [GCC 14.2.0]",
  "platform": "Linux-7.0.0-30-generic-x86_64-with-glibc2.41",
  "compilers": {
   "cc": null,
   "gcc": null,
   "x86_64-linux-gnu-gcc": null
  },
  "pip": "pip 26.2.1 from /usr/local/lib/python3.15/site-packages/pip (python 3.15)",
  "uv": "uv 0.13.1 (x86_64-unknown-linux-gnu)",
  "os_release": "Debian GNU/Linux 13 (trixie)",
  "utf8_mode_c_locale": "1 utf-8 utf-8",
  "utf8_mode_opt_out": "0 ANSI_X3.4-1968 ANSI_X3.4-1968",
  "wheel_check": {
   "brotli": {
    "command": "python3 -m pip download --only-binary :all: --no-deps -d /tmp/wheel-check brotli",
    "exit": 1,
    "key_lines": [
     "ERROR: Could not find a version that satisfies the requirement brotli (from versions: none)",
     "ERROR: No matching distribution found for brotli"
    ],
    "files": []
   },
   "zstandard": {
    "command": "python3 -m pip download --only-binary :all: --no-deps -d /tmp/wheel-check zstandard",
    "exit": 1,
    "key_lines": [
     "ERROR: Could not find a version that satisfies the requirement zstandard (from versions: none)",
     "ERROR: No matching distribution found for zstandard"
    ],
    "files": []
   },
   "zope.interface": {
    "command": "python3 -m pip download --only-binary :all: --no-deps -d /tmp/wheel-check zope.interface",
    "exit": 0,
    "key_lines": [],
    "files": [
     "zope_interface-8.7-cp315-cp315-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl"
    ]
   },
   "brotlicffi": {
    "command": "python3 -m pip download --only-binary :all: --no-deps -d /tmp/wheel-check brotlicffi",
    "exit": 0,
    "key_lines": [],
    "files": [
     "brotlicffi-1.2.0.2-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl"
    ]
   }
  }
 },
 "cases": [
  {
   "case": "scrapy",
   "tool": "pip",
   "specs": [
    "scrapy"
   ],
   "install": {
    "command": "pip install --no-cache-dir --disable-pip-version-check --report /tmp/lab315/pip/scrapy/report.json scrapy",
    "exit": 1,
    "seconds": 4.5,
    "key_lines": [
     "  error: subprocess-exited-with-error",
     "  \u00d7 Building wheel for brotli (pyproject.toml) did not run successfully.",
     "  \u2570\u2500> [12 lines of output]",
     "      /tmp/pip-build-env-29tvhxwt/overlay/lib/python3.15/site-packages/setuptools/_distutils/dist.py:318: UserWarning: Unknown distribution option: 'test_suite'",
     "        warnings.warn(msg)",
     "      <string>:82: DeprecationWarning: dep_util is Deprecated. Use functions from setuptools instead.",
     "      error: [Errno 2] No such file or directory: 'gcc'",
     "  note: This error originates from a subprocess, and is likely not a problem with pip.",
     "  ERROR: Failed building wheel for brotli",
     "error: failed-wheel-build-for-install",
     "\u00d7 Failed to build installable wheels for some pyproject.toml based projects",
     "\u2570\u2500> brotli"
    ],
    "uv_built": [],
    "output_tail": [
     "Downloading packaging-26.3-py3-none-any.whl (129 kB)",
     "Downloading typing_extensions-4.16.0-py3-none-any.whl (45 kB)",
     "Downloading w3lib-2.5.0-py3-none-any.whl (37 kB)",
     "Downloading zope_interface-8.7-cp315-cp315-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl (282 kB)",
     "Downloading pycparser-3.11-py3-none-any.whl (51 kB)",
     "Downloading tldextract-5.4.0-py3-none-any.whl (107 kB)",
     "Downloading filelock-4.2.0-py3-none-any.whl (135 kB)",
     "Downloading requests-2.34.2-py3-none-any.whl (73 kB)",
     "Downloading urllib3-2.8.0-py3-none-any.whl (135 kB)",
     "Downloading certifi-2026.7.22-py3-none-any.whl (136 kB)",
     "Downloading requests_file-3.0.1-py2.py3-none-any.whl (4.5 kB)",
     "Building wheels for collected packages: brotli",
     "  Building wheel for brotli (pyproject.toml): started",
     "  Building wheel for brotli (pyproject.toml): finished with status 'error'",
     "Failed to build brotli",
     "  error: subprocess-exited-with-error",
     "  ",
     "  \u00d7 Building wheel for brotli (pyproject.toml) did not run successfully.",
     "  \u2502 exit code: 1",
     "  \u2570\u2500> [12 lines of output]",
     "      /tmp/pip-build-env-29tvhxwt/overlay/lib/python3.15/site-packages/setuptools/_distutils/dist.py:318: UserWarning: Unknown distribution option: 'test_suite'",
     "        warnings.warn(msg)",
     "      running bdist_wheel",
     "      running build",
     "      running build_py",
     "      creating bin/lib.linux-x86_64-cpython-315",
     "      copying python/brotli.py -> bin/lib.linux-x86_64-cpython-315",
     "      running build_ext",
     "      <string>:82: DeprecationWarning: dep_util is Deprecated. Use functions from setuptools instead.",
     "      building '_brotli' extension",
     "      gcc -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -Ic/include -I/tmp/lab315/pip/scrapy/venv/include -I/usr/local/include/python3.15 -c python/_brotli.c -o bin/temp.linux-x86_64-cpython-315/python/_brotli.o",
     "      error: [Errno 2] No such file or directory: 'gcc'",
     "      [end of output]",
     "  ",
     "  note: This error originates from a subprocess, and is likely not a problem with pip.",
     "  ERROR: Failed building wheel for brotli",
     "error: failed-wheel-build-for-install",
     "",
     "\u00d7 Failed to build installable wheels for some pyproject.toml based projects",
     "\u2570\u2500> brotli"
    ]
   }
  },
  {
   "case": "scrapy",
   "tool": "uv",
   "specs": [
    "scrapy"
   ],
   "install": {
    "command": "uv pip install --no-cache --python /tmp/lab315/uv/scrapy/venv/bin/python scrapy",
    "exit": 1,
    "seconds": 1.4,
    "key_lines": [
     "error: Failed to build `brotli==1.2.0`",
     "  cause: The build backend returned an error",
     "  cause: Call to `setuptools.build_meta.build_wheel` failed (exit status: 1)",
     "         /tmp/.tmpmc2xgI/builds-v0/.tmp43WRrK/lib/python3.15/site-packages/setuptools/_distutils/dist.py:318: UserWarning: Unknown distribution option: 'test_suite'",
     "           warnings.warn(msg)",
     "         <string>:82: DeprecationWarning: dep_util is Deprecated. Use functions from setuptools instead.",
     "         error: [Errno 2] No such file or directory: 'gcc'"
    ],
    "uv_built": [],
    "output_tail": [
     "Using Python 3.15.0 environment at: /tmp/lab315/uv/scrapy/venv",
     "Resolved 43 packages in 338ms",
     "Downloading twisted (3.1MiB)",
     "Downloading aiohttp (1.8MiB)",
     "Downloading cryptography (4.8MiB)",
     "Downloading lxml (5.0MiB)",
     " Downloaded aiohttp",
     " Downloaded twisted",
     " Downloaded cryptography",
     " Downloaded lxml",
     "   Building brotli==1.2.0",
     "error: Failed to build `brotli==1.2.0`",
     "  cause: The build backend returned an error",
     "  cause: Call to `setuptools.build_meta.build_wheel` failed (exit status: 1)",
     "",
     "         [stdout]",
     "         running bdist_wheel",
     "         running build",
     "         running build_py",
     "         creating bin/lib.linux-x86_64-cpython-315",
     "         copying python/brotli.py -> bin/lib.linux-x86_64-cpython-315",
     "         running build_ext",
     "         building '_brotli' extension",
     "         gcc -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -Ic/include -I/tmp/.tmpmc2xgI/builds-v0/.tmp43WRrK/include -I/usr/local/include/python3.15 -c python/_brotli.c -o bin/temp.linux-x86_64-cpython-315/python/_brotli.o",
     "",
     "         [stderr]",
     "         /tmp/.tmpmc2xgI/builds-v0/.tmp43WRrK/lib/python3.15/site-packages/setuptools/_distutils/dist.py:318: UserWarning: Unknown distribution option: 'test_suite'",
     "           warnings.warn(msg)",
     "         <string>:82: DeprecationWarning: dep_util is Deprecated. Use functions from setuptools instead.",
     "         error: [Errno 2] No such file or directory: 'gcc'",
     "",
     "hint: `brotli` (v1.2.0) was included because `scrapy` (v2.19.0) depends on `brotli`",
     "",
     "hint: Build failures usually indicate a problem with the package or the build environment"
    ]
   }
  },
  {
   "case": "only-binary-brotli",
   "tool": "pip",
   "specs": [
    "scrapy"
   ],
   "install": {
    "command": "pip install --no-cache-dir --disable-pip-version-check --report /tmp/lab315/pip/only-binary-brotli/report.json --only-binary brotli scrapy",
    "exit": 0,
    "seconds": 5.7,
    "key_lines": [],
    "uv_built": [],
    "output_tail": [
     "Downloading scrapy-2.17.0-py3-none-any.whl (350 kB)",
     "Downloading cryptography-50.0.2-cp315-abi3.abi3t-manylinux_2_34_x86_64.whl (5.0 MB)",
     "   \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 5.0/5.0 MB 216.7 MB/s  0:00:00",
     "Downloading cffi-2.1.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (221 kB)",
     "Downloading cssselect-1.6.0-py3-none-any.whl (22 kB)",
     "Downloading defusedxml-0.7.1-py2.py3-none-any.whl (25 kB)",
     "Downloading itemadapter-0.13.1-py3-none-any.whl (18 kB)",
     "Downloading itemloaders-1.5.0-py3-none-any.whl (13 kB)",
     "Downloading jmespath-1.1.0-py3-none-any.whl (20 kB)",
     "Downloading lxml-6.1.3-cp315-cp315-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl (5.2 MB)",
     "   \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 5.2/5.2 MB 341.3 MB/s  0:00:00",
     "Downloading parsel-1.12.1-py3-none-any.whl (15 kB)",
     "Downloading protego-0.7.0-py3-none-any.whl (13 kB)",
     "Downloading PyDispatcher-2.0.7-py3-none-any.whl (12 kB)",
     "Downloading pyopenssl-26.4.0-py3-none-any.whl (56 kB)",
     "Downloading queuelib-1.10.0-py3-none-any.whl (16 kB)",
     "Downloading service_identity-26.1.0-py3-none-any.whl (11 kB)",
     "Downloading attrs-26.1.0-py3-none-any.whl (67 kB)",
     "Downloading twisted-26.4.0-py3-none-any.whl (3.2 MB)",
     "   \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 3.2/3.2 MB 696.8 MB/s  0:00:00",
     "Downloading automat-25.4.16-py3-none-any.whl (42 kB)",
     "Downloading constantly-23.10.4-py3-none-any.whl (13 kB)",
     "Downloading hyperlink-21.0.0-py2.py3-none-any.whl (74 kB)",
     "Downloading idna-3.20-py3-none-any.whl (69 kB)",
     "Downloading incremental-24.11.0-py3-none-any.whl (21 kB)",
     "Downloading packaging-26.3-py3-none-any.whl (129 kB)",
     "Downloading typing_extensions-4.16.0-py3-none-any.whl (45 kB)",
     "Downloading w3lib-2.5.0-py3-none-any.whl (37 kB)",
     "Downloading zope_interface-8.7-cp315-cp315-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl (282 kB)",
     "Downloading pycparser-3.11-py3-none-any.whl (51 kB)",
     "Downloading tldextract-5.4.0-py3-none-any.whl (107 kB)",
     "Downloading filelock-4.2.0-py3-none-any.whl (135 kB)",
     "Downloading requests-2.34.2-py3-none-any.whl (73 kB)",
     "Downloading charset_normalizer-3.5.2-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (257 kB)",
     "Downloading urllib3-2.8.0-py3-none-any.whl (135 kB)",
     "Downloading certifi-2026.7.22-py3-none-any.whl (136 kB)",
     "Downloading requests_file-3.0.1-py2.py3-none-any.whl (4.5 kB)",
     "Installing collected packages: pydispatcher, zope-interface, w3lib, urllib3, typing-extensions, queuelib, pycparser, protego, packaging, lxml, jmespath, itemadapter, idna, filelock, defusedxml, cssselect, constantly, charset_normalizer, certifi, automat, attrs, requests, parsel, incremental, hyperlink, cffi, twisted, requests-file, itemloaders, cryptography, tldextract, service-identity, pyopenssl, scrapy",
     "",
     "Successfully installed attrs-26.1.0 automat-25.4.16 certifi-2026.7.22 cffi-2.1.1 charset_normalizer-3.5.2 constantly-23.10.4 cryptography-50.0.2 cssselect-1.6.0 defusedxml-0.7.1 filelock-4.2.0 hyperlink-21.0.0 idna-3.20 incremental-24.11.0 itemadapter-0.13.1 itemloaders-1.5.0 jmespath-1.1.0 lxml-6.1.3 packaging-26.3 parsel-1.12.1 protego-0.7.0 pycparser-3.11 pydispatcher-2.0.7 pyopenssl-26.4.0 queuelib-1.10.0 requests-2.34.2 requests-file-3.0.1 scrapy-2.17.0 service-identity-26.1.0 tldextract-5.4.0 twisted-26.4.0 typing-extensions-4.16.0 urllib3-2.8.0 w3lib-2.5.0 zope-interface-8.7"
    ]
   },
   "installed": [
    {
     "name": "PyDispatcher",
     "version": "2.0.7",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "PyDispatcher-2.0.7-py3-none-any.whl"
    },
    {
     "name": "attrs",
     "version": "26.1.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "attrs-26.1.0-py3-none-any.whl"
    },
    {
     "name": "Automat",
     "version": "25.4.16",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "automat-25.4.16-py3-none-any.whl"
    },
    {
     "name": "certifi",
     "version": "2026.7.22",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "certifi-2026.7.22-py3-none-any.whl"
    },
    {
     "name": "cffi",
     "version": "2.1.1",
     "tags": [
      "cp315-cp315-manylinux_2_17_x86_64",
      "cp315-cp315-manylinux2014_x86_64"
     ],
     "origin": "binary wheel",
     "file": "cffi-2.1.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl"
    },
    {
     "name": "charset-normalizer",
     "version": "3.5.2",
     "tags": [
      "cp315-cp315-manylinux_2_17_x86_64",
      "cp315-cp315-manylinux2014_x86_64",
      "cp315-cp315-manylinux_2_28_x86_64"
     ],
     "origin": "binary wheel",
     "file": "charset_normalizer-3.5.2-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl"
    },
    {
     "name": "constantly",
     "version": "23.10.4",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "constantly-23.10.4-py3-none-any.whl"
    },
    {
     "name": "cryptography",
     "version": "50.0.2",
     "tags": [
      "cp315-abi3-manylinux_2_34_x86_64",
      "cp315-abi3t-manylinux_2_34_x86_64"
     ],
     "origin": "binary wheel",
     "file": "cryptography-50.0.2-cp315-abi3.abi3t-manylinux_2_34_x86_64.whl"
    },
    {
     "name": "cssselect",
     "version": "1.6.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "cssselect-1.6.0-py3-none-any.whl"
    },
    {
     "name": "defusedxml",
     "version": "0.7.1",
     "tags": [
      "py2-none-any",
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "defusedxml-0.7.1-py2.py3-none-any.whl"
    },
    {
     "name": "filelock",
     "version": "4.2.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "filelock-4.2.0-py3-none-any.whl"
    },
    {
     "name": "hyperlink",
     "version": "21.0.0",
     "tags": [
      "py2-none-any",
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "hyperlink-21.0.0-py2.py3-none-any.whl"
    },
    {
     "name": "idna",
     "version": "3.20",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "idna-3.20-py3-none-any.whl"
    },
    {
     "name": "Incremental",
     "version": "24.11.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "incremental-24.11.0-py3-none-any.whl"
    },
    {
     "name": "itemadapter",
     "version": "0.13.1",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "itemadapter-0.13.1-py3-none-any.whl"
    },
    {
     "name": "itemloaders",
     "version": "1.5.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "itemloaders-1.5.0-py3-none-any.whl"
    },
    {
     "name": "jmespath",
     "version": "1.1.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "jmespath-1.1.0-py3-none-any.whl"
    },
    {
     "name": "lxml",
     "version": "6.1.3",
     "tags": [
      "cp315-cp315-manylinux_2_26_x86_64",
      "cp315-cp315-manylinux_2_28_x86_64"
     ],
     "origin": "binary wheel",
     "file": "lxml-6.1.3-cp315-cp315-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl"
    },
    {
     "name": "packaging",
     "version": "26.3",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "packaging-26.3-py3-none-any.whl"
    },
    {
     "name": "parsel",
     "version": "1.12.1",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "parsel-1.12.1-py3-none-any.whl"
    },
    {
     "name": "Protego",
     "version": "0.7.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "protego-0.7.0-py3-none-any.whl"
    },
    {
     "name": "pycparser",
     "version": "3.11",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "pycparser-3.11-py3-none-any.whl"
    },
    {
     "name": "pyOpenSSL",
     "version": "26.4.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "pyopenssl-26.4.0-py3-none-any.whl"
    },
    {
     "name": "queuelib",
     "version": "1.10.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "queuelib-1.10.0-py3-none-any.whl"
    },
    {
     "name": "requests",
     "version": "2.34.2",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "requests-2.34.2-py3-none-any.whl"
    },
    {
     "name": "requests-file",
     "version": "3.0.1",
     "tags": [
      "py2-none-any",
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "requests_file-3.0.1-py2.py3-none-any.whl"
    },
    {
     "name": "Scrapy",
     "version": "2.17.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "scrapy-2.17.0-py3-none-any.whl"
    },
    {
     "name": "service-identity",
     "version": "26.1.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "service_identity-26.1.0-py3-none-any.whl"
    },
    {
     "name": "tldextract",
     "version": "5.4.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "tldextract-5.4.0-py3-none-any.whl"
    },
    {
     "name": "Twisted",
     "version": "26.4.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "twisted-26.4.0-py3-none-any.whl"
    },
    {
     "name": "typing_extensions",
     "version": "4.16.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "typing_extensions-4.16.0-py3-none-any.whl"
    },
    {
     "name": "urllib3",
     "version": "2.8.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "urllib3-2.8.0-py3-none-any.whl"
    },
    {
     "name": "w3lib",
     "version": "2.5.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": "w3lib-2.5.0-py3-none-any.whl"
    },
    {
     "name": "zope.interface",
     "version": "8.7",
     "tags": [
      "cp315-cp315-manylinux_2_5_x86_64",
      "cp315-cp315-manylinux1_x86_64",
      "cp315-cp315-manylinux_2_17_x86_64",
      "cp315-cp315-manylinux2014_x86_64"
     ],
     "origin": "binary wheel",
     "file": "zope_interface-8.7-cp315-cp315-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl"
    }
   ],
   "smoke": {
    "ok": true,
    "detail": {
     "scrapy": "2.17.0",
     "pages": {
      "br": "hello from the lab",
      "accept_encoding": "gzip, deflate",
      "/": "hello from the lab",
      "gzip": "hello from the lab"
     },
     "zope_interface_c_speedups": true,
     "brotli": false
    },
    "seconds": 0.6
   }
  },
  {
   "case": "only-binary-brotli",
   "tool": "uv",
   "specs": [
    "scrapy"
   ],
   "install": {
    "command": "uv pip install --no-cache --python /tmp/lab315/uv/only-binary-brotli/venv/bin/python --only-binary brotli scrapy",
    "exit": 0,
    "seconds": 0.5,
    "key_lines": [],
    "uv_built": [],
    "output_tail": [
     "Downloading cryptography (4.8MiB)",
     " Downloaded twisted",
     " Downloaded cryptography",
     " Downloaded lxml",
     "Prepared 34 packages in 135ms",
     "Installed 34 packages in 24ms",
     " + attrs==26.1.0",
     " + automat==25.4.16",
     " + certifi==2026.7.22",
     " + cffi==2.1.1",
     " + charset-normalizer==3.5.2",
     " + constantly==23.10.4",
     " + cryptography==50.0.2",
     " + cssselect==1.6.0",
     " + defusedxml==0.7.1",
     " + filelock==4.2.0",
     " + hyperlink==21.0.0",
     " + idna==3.20",
     " + incremental==24.11.0",
     " + itemadapter==0.13.1",
     " + itemloaders==1.5.0",
     " + jmespath==1.1.0",
     " + lxml==6.1.3",
     " + packaging==26.3",
     " + parsel==1.12.1",
     " + protego==0.7.0",
     " + pycparser==3.11",
     " + pydispatcher==2.0.7",
     " + pyopenssl==26.4.0",
     " + queuelib==1.10.0",
     " + requests==2.34.2",
     " + requests-file==3.0.1",
     " + scrapy==2.17.0",
     " + service-identity==26.1.0",
     " + tldextract==5.4.0",
     " + twisted==26.4.0",
     " + typing-extensions==4.16.0",
     " + urllib3==2.8.0",
     " + w3lib==2.5.0",
     " + zope-interface==8.7"
    ]
   },
   "installed": [
    {
     "name": "PyDispatcher",
     "version": "2.0.7",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "attrs",
     "version": "26.1.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "Automat",
     "version": "25.4.16",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "certifi",
     "version": "2026.7.22",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "cffi",
     "version": "2.1.1",
     "tags": [
      "cp315-cp315-manylinux_2_17_x86_64",
      "cp315-cp315-manylinux2014_x86_64"
     ],
     "origin": "binary wheel",
     "file": null
    },
    {
     "name": "charset-normalizer",
     "version": "3.5.2",
     "tags": [
      "cp315-cp315-manylinux_2_17_x86_64",
      "cp315-cp315-manylinux2014_x86_64",
      "cp315-cp315-manylinux_2_28_x86_64"
     ],
     "origin": "binary wheel",
     "file": null
    },
    {
     "name": "constantly",
     "version": "23.10.4",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "cryptography",
     "version": "50.0.2",
     "tags": [
      "cp315-abi3-manylinux_2_34_x86_64",
      "cp315-abi3t-manylinux_2_34_x86_64"
     ],
     "origin": "binary wheel",
     "file": null
    },
    {
     "name": "cssselect",
     "version": "1.6.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "defusedxml",
     "version": "0.7.1",
     "tags": [
      "py2-none-any",
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "filelock",
     "version": "4.2.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "hyperlink",
     "version": "21.0.0",
     "tags": [
      "py2-none-any",
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "idna",
     "version": "3.20",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "Incremental",
     "version": "24.11.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "itemadapter",
     "version": "0.13.1",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "itemloaders",
     "version": "1.5.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "jmespath",
     "version": "1.1.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "lxml",
     "version": "6.1.3",
     "tags": [
      "cp315-cp315-manylinux_2_26_x86_64",
      "cp315-cp315-manylinux_2_28_x86_64"
     ],
     "origin": "binary wheel",
     "file": null
    },
    {
     "name": "packaging",
     "version": "26.3",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "parsel",
     "version": "1.12.1",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "Protego",
     "version": "0.7.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "pycparser",
     "version": "3.11",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "pyOpenSSL",
     "version": "26.4.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "queuelib",
     "version": "1.10.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "requests",
     "version": "2.34.2",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "requests-file",
     "version": "3.0.1",
     "tags": [
      "py2-none-any",
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "Scrapy",
     "version": "2.17.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "service-identity",
     "version": "26.1.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "tldextract",
     "version": "5.4.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "Twisted",
     "version": "26.4.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "typing_extensions",
     "version": "4.16.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "urllib3",
     "version": "2.8.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "w3lib",
     "version": "2.5.0",
     "tags": [
      "py3-none-any"
     ],
     "origin": "pure-Python wheel",
     "file": null
    },
    {
     "name": "zope.interface",
     "version": "8.7",
     "tags": [
      "cp315-cp315-manylinux_2_5_x86_64",
      "cp315-cp315-manylinux1_x86_64",
      "cp315-cp315-manylinux_2_17_x86_64",
      "cp315-cp315-manylinux2014_x86_64"
     ],
     "origin": "binary wheel",
     "file": null
    }
   ],
   "smoke": {
    "ok": true,
    "detail": {
     "scrapy": "2.17.0",
     "pages": {
      "br": "hello from the lab",
      "accept_encoding": "gzip, deflate",
      "/": "hello from the lab",
      "gzip": "hello from the lab"
     },
     "zope_interface_c_speedups": true,
     "brotli": false
    },
    "seconds": 1.3
   }
  },
  {
   "case": "only-binary-brotli-pinned",
   "tool": "pip",
   "specs": [
    "scrapy==2.19.0"
   ],
   "install": {
    "command": "pip install --no-cache-dir --disable-pip-version-check --report /tmp/lab315/pip/only-binary-brotli-pinned/report.json --only-binary brotli scrapy==2.19.0",
    "exit": 1,
    "seconds": 0.8,
    "key_lines": [
     "ERROR: Could not find a version that satisfies the requirement brotli>=1.2.0; implementation_name != \"pypy\" (from scrapy) (from versions: none)",
     "ERROR: No matching distribution found for brotli>=1.2.0; implementation_name != \"pypy\""
    ],
    "uv_built": [],
    "output_tail": [
     "Collecting scrapy==2.19.0",
     "  Downloading scrapy-2.19.0-py3-none-any.whl.metadata (5.3 kB)",
     "Collecting aiohttp>=3.13.3 (from scrapy==2.19.0)",
     "  Downloading aiohttp-3.14.5-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (8.3 kB)",
     "INFO: pip is looking at multiple versions of scrapy to determine which version is compatible with other requirements. This could take a while.",
     "ERROR: Could not find a version that satisfies the requirement brotli>=1.2.0; implementation_name != \"pypy\" (from scrapy) (from versions: none)",
     "ERROR: No matching distribution found for brotli>=1.2.0; implementation_name != \"pypy\""
    ]
   }
  },
  {
   "case": "only-binary-brotli-pinned",
   "tool": "uv",
   "specs": [
    "scrapy==2.19.0"
   ],
   "install": {
    "command": "uv pip install --no-cache --python /tmp/lab315/uv/only-binary-brotli-pinned/venv/bin/python --only-binary brotli scrapy==2.19.0",
    "exit": 1,
    "seconds": 0.3,
    "key_lines": [
     "error: No solution found when resolving dependencies",
     "  cause: Because brotli{implementation_name != 'pypy'}==1.2.0 has no usable wheels and only brotli{implementation_name != 'pypy'}<=1.2.0 is available, we can conclude that brotli{implementation_name != 'pypy'}>=1.2.0 cannot be used."
    ],
    "uv_built": [],
    "output_tail": [
     "Using Python 3.15.0 environment at: /tmp/lab315/uv/only-binary-brotli-pinned/venv",
     "error: No solution found when resolving dependencies",
     "  cause: Because brotli{implementation_name != 'pypy'}==1.2.0 has no usable wheels and only brotli{implementation_name != 'pypy'}<=1.2.0 is available, we can conclude that brotli{implementation_name != 'pypy'}>=1.2.0 cannot be used.",
     "         And because scrapy>=2.19.0 depends on brotli{implementation_name != 'pypy'}>=1.2.0 and you require scrapy==2.19.0, we can conclude that your requirements are unsatisfiable.",
     "",
     "hint: Wheels are required for `brotli` because building from source is disabled for `brotli` (i.e., with `--no-build-package brotli`)"
    ]
   }
  },
  {
   "case": "zope.interface",
   "tool": "pip",
   "specs": [
    "zope.interface"
   ],
   "install": {
    "command": "pip install --no-cache-dir --disable-pip-version-check --report /tmp/lab315/pip/zope-interface/report.json zope.interface",
    "exit": 0,
    "seconds": 0.7,
    "key_lines": [],
    "uv_built": [],
    "output_tail": [
     "Collecting zope.interface",
     "  Downloading zope_interface-8.7-cp315-cp315-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl.metadata (48 kB)",
     "Downloading zope_interface-8.7-cp315-cp315-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl (282 kB)",
     "Installing collected packages: zope.interface",
     "Successfully installed zope.interface-8.7"
    ]
   },
   "installed": [
    {
     "name": "zope.interface",
     "version": "8.7",
     "tags": [
      "cp315-cp315-manylinux_2_5_x86_64",
      "cp315-cp315-manylinux1_x86_64",
      "cp315-cp315-manylinux_2_17_x86_64",
      "cp315-cp315-manylinux2014_x86_64"
     ],
     "origin": "binary wheel",
     "file": "zope_interface-8.7-cp315-cp315-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl"
    }
   ],
   "smoke": {
    "ok": true,
    "detail": {
     "zope.interface": "8.7",
     "c_speedups": true,
     "providedBy_ns_per_call": 102.0
    },
    "seconds": 0.2
   }
  },
  {
   "case": "zope.interface",
   "tool": "uv",
   "specs": [
    "zope.interface"
   ],
   "install": {
    "command": "uv pip install --no-cache --python /tmp/lab315/uv/zope-interface/venv/bin/python zope.interface",
    "exit": 0,
    "seconds": 0.2,
    "key_lines": [],
    "uv_built": [],
    "output_tail": [
     "Using Python 3.15.0 environment at: /tmp/lab315/uv/zope-interface/venv",
     "Resolved 1 package in 120ms",
     "Prepared 1 package in 32ms",
     "Installed 1 package in 1ms",
     " + zope-interface==8.7"
    ]
   },
   "installed": [
    {
     "name": "zope.interface",
     "version": "8.7",
     "tags": [
      "cp315-cp315-manylinux_2_5_x86_64",
      "cp315-cp315-manylinux1_x86_64",
      "cp315-cp315-manylinux_2_17_x86_64",
      "cp315-cp315-manylinux2014_x86_64"
     ],
     "origin": "binary wheel",
     "file": null
    }
   ],
   "smoke": {
    "ok": true,
    "detail": {
     "zope.interface": "8.7",
     "c_speedups": true,
     "providedBy_ns_per_call": 103.4
    },
    "seconds": 0.2
   }
  }
 ]
}