python-hyper / brotlicffi

Python bindings to the Brotli compression library
MIT License
147 stars 27 forks source link

cannot install on Python 3.8, 3.9, 3.10, 3.11 on macOS #201

Open glyph opened 2 weeks ago

glyph commented 2 weeks ago

A log of the process from 3.13, 3.12, and 3.11; all lower versions look like 3.11.

 ā†Ŗ Thu Sep 19 11:52:23 PDT 2024 (ā˜… clear) (1 seconds elapsed)                                                      
glyph@arabella:~  šŸš šŸ”‘   ā®
  ā˜… mktmpenv -p python3.13
 ā†© Thu Sep 19 11:52:29 PDT 2024
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-713b143ec48affd/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-713b143ec48affd/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-713b143ec48affd/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-713b143ec48affd/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-713b143ec48affd/bin/get_env_details
This is a temporary environment. It will be deleted when you run 'deactivate'.
 ā†Ŗ Thu Sep 19 11:52:30 PDT 2024 (ā˜… mktmpenv -p python3.13) (1 seconds elapsed)                                     
glyph@arabella:~  šŸ° tmp-713b143ec48affd  šŸš šŸ”‘   ā®
  ā˜… pip install brotlipy
 ā†© Thu Sep 19 11:52:35 PDT 2024
Looking in indexes: http://127.0.0.1:3141/root/plus/+simple/
Collecting brotlipy
  Using cached brotlipy-0.7.0-cp313-cp313-macosx_10_13_universal2.whl
Collecting cffi>=1.0.0 (from brotlipy)
  Downloading http://127.0.0.1:3141/root/pypi/%2Bf/098/4a4925a435b1d/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl (178 kB)
Collecting pycparser (from cffi>=1.0.0->brotlipy)
  Downloading http://127.0.0.1:3141/root/pypi/%2Bf/c37/02b6d3dd8c7ab/pycparser-2.22-py3-none-any.whl (117 kB)
Installing collected packages: pycparser, cffi, brotlipy
Successfully installed brotlipy-0.7.0 cffi-1.17.1 pycparser-2.22
 ā†Ŗ Thu Sep 19 11:52:36 PDT 2024 (ā˜… pip install brotlipy) (1 seconds elapsed)                                       
glyph@arabella:~  šŸ° tmp-713b143ec48affd  šŸš šŸ”‘   ā®
  ā˜… deactivate 
 ā†© Thu Sep 19 11:52:38 PDT 2024
Removing temporary environment: tmp-713b143ec48affd
Removing tmp-713b143ec48affd...
 ā†Ŗ Thu Sep 19 11:52:39 PDT 2024 (ā˜… deactivate) (1 seconds elapsed)                                                 
glyph@arabella:~  šŸš šŸ”‘   ā®
  ā˜… mktmpenv -p python3.12
 ā†© Thu Sep 19 11:52:44 PDT 2024
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-eb3293cafc81ff3/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-eb3293cafc81ff3/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-eb3293cafc81ff3/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-eb3293cafc81ff3/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-eb3293cafc81ff3/bin/get_env_details
This is a temporary environment. It will be deleted when you run 'deactivate'.
 ā†Ŗ Thu Sep 19 11:52:45 PDT 2024 (ā˜… mktmpenv -p python3.12) (1 seconds elapsed)                                     
glyph@arabella:~  šŸ° tmp-eb3293cafc81ff3  šŸš šŸ”‘   ā®
  ā˜… pip install brotlipy  
 ā†© Thu Sep 19 11:52:48 PDT 2024
Looking in indexes: http://127.0.0.1:3141/root/plus/+simple/
Collecting brotlipy
  Using cached brotlipy-0.7.0-cp312-cp312-macosx_10_9_universal2.whl
Collecting cffi>=1.0.0 (from brotlipy)
  Downloading http://127.0.0.1:3141/root/pypi/%2Bf/733/e99bc2df47476/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl (178 kB)
Collecting pycparser (from cffi>=1.0.0->brotlipy)
  Downloading http://127.0.0.1:3141/root/pypi/%2Bf/c37/02b6d3dd8c7ab/pycparser-2.22-py3-none-any.whl (117 kB)
Installing collected packages: pycparser, cffi, brotlipy
Successfully installed brotlipy-0.7.0 cffi-1.17.1 pycparser-2.22
 ā†Ŗ Thu Sep 19 11:52:49 PDT 2024 (ā˜… pip install brotlipy) (1 seconds elapsed)                                       
glyph@arabella:~  šŸ° tmp-eb3293cafc81ff3  šŸš šŸ”‘   ā®
  ā˜… mktmpenv -p python3.11
 ā†© Thu Sep 19 11:52:58 PDT 2024
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-76ec862361048ed/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-76ec862361048ed/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-76ec862361048ed/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-76ec862361048ed/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-76ec862361048ed/bin/get_env_details
Removing temporary environment: tmp-eb3293cafc81ff3
Removing tmp-eb3293cafc81ff3...
This is a temporary environment. It will be deleted when you run 'deactivate'.
 ā†Ŗ Thu Sep 19 11:52:59 PDT 2024 (ā˜… mktmpenv -p python3.11) (1 seconds elapsed)                                     
glyph@arabella:~  šŸ° tmp-76ec862361048ed  šŸš šŸ”‘   ā®
  ā˜… pip install brotlipy  
 ā†© Thu Sep 19 11:53:01 PDT 2024
Looking in indexes: http://127.0.0.1:3141/root/plus/+simple/
Collecting brotlipy
  Downloading http://127.0.0.1:3141/root/pypi/%2Bf/36d/ef0b859beaf21/brotlipy-0.7.0.tar.gz (413 kB)
  Preparing metadata (setup.py) ... done
Collecting cffi>=1.0.0 (from brotlipy)
  Downloading http://127.0.0.1:3141/root/pypi/%2Bf/30c/5e0cb5ae493c0/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl (178 kB)
Collecting pycparser (from cffi>=1.0.0->brotlipy)
  Downloading http://127.0.0.1:3141/root/pypi/%2Bf/c37/02b6d3dd8c7ab/pycparser-2.22-py3-none-any.whl (117 kB)
Building wheels for collected packages: brotlipy
  Building wheel for brotlipy (setup.py) ... error
  error: subprocess-exited-with-error

  Ɨ python setup.py bdist_wheel did not run successfully.
  ā”‚ exit code: 1
  ā•°ā”€> [48 lines of output]
      /Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/__init__.py:88: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated.
      !!

              ********************************************************************************
              Requirements should be satisfied by a PEP 517 installer.
              If you are using pip, you can try `pip install --use-pep517`.
              ********************************************************************************

      !!
        dist.fetch_build_eggs(dist.setup_requires)
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/private/var/folders/yl/ndrrqv712fs02p5sdtxhml7h0000gn/T/pip-install-eg6osp5g/brotlipy_0f5c7469ab0142fab4bd5eacb492d28d/setup.py", line 9, in <module>
          setup(
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/__init__.py", line 110, in setup
          _install_setup_requires(attrs)
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/__init__.py", line 83, in _install_setup_requires
          _fetch_build_eggs(dist)
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/__init__.py", line 88, in _fetch_build_eggs
          dist.fetch_build_eggs(dist.setup_requires)
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/dist.py", line 615, in fetch_build_eggs
          return _fetch_build_eggs(self, requires)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/installer.py", line 39, in _fetch_build_eggs
          resolved_dists = pkg_resources.working_set.resolve(
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/pkg_resources/__init__.py", line 890, in resolve
          dist = self._resolve_dist(
                 ^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/pkg_resources/__init__.py", line 926, in _resolve_dist
          dist = best[req.key] = env.best_match(
                                 ^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/pkg_resources/__init__.py", line 1256, in best_match
          return self.obtain(req, installer)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/pkg_resources/__init__.py", line 1292, in obtain
          return installer(requirement) if installer else None
                 ^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/installer.py", line 107, in _fetch_build_egg_no_warn
          wheel.install_as_egg(dist_location)
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/wheel.py", line 122, in install_as_egg
          self._install_as_egg(destination_eggdir, zf)
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/wheel.py", line 130, in _install_as_egg
          self._convert_metadata(zf, destination_eggdir, dist_info, egg_info)
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/wheel.py", line 175, in _convert_metadata
          os.rename(dist_info, egg_info)
      OSError: [Errno 66] Directory not empty: '/private/var/folders/yl/ndrrqv712fs02p5sdtxhml7h0000gn/T/pip-install-eg6osp5g/brotlipy_0f5c7469ab0142fab4bd5eacb492d28d/.eggs/cffi-1.17.1-py3.11-macosx-10.9-universal2.egg/cffi-1.17.1.dist-info' -> '/private/var/folders/yl/ndrrqv712fs02p5sdtxhml7h0000gn/T/pip-install-eg6osp5g/brotlipy_0f5c7469ab0142fab4bd5eacb492d28d/.eggs/cffi-1.17.1-py3.11-macosx-10.9-universal2.egg/EGG-INFO'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for brotlipy
  Running setup.py clean for brotlipy
  error: subprocess-exited-with-error

  Ɨ python setup.py clean did not run successfully.
  ā”‚ exit code: 1
  ā•°ā”€> [48 lines of output]
      /Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/__init__.py:88: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated.
      !!

              ********************************************************************************
              Requirements should be satisfied by a PEP 517 installer.
              If you are using pip, you can try `pip install --use-pep517`.
              ********************************************************************************

      !!
        dist.fetch_build_eggs(dist.setup_requires)
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/private/var/folders/yl/ndrrqv712fs02p5sdtxhml7h0000gn/T/pip-install-eg6osp5g/brotlipy_0f5c7469ab0142fab4bd5eacb492d28d/setup.py", line 9, in <module>
          setup(
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/__init__.py", line 110, in setup
          _install_setup_requires(attrs)
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/__init__.py", line 83, in _install_setup_requires
          _fetch_build_eggs(dist)
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/__init__.py", line 88, in _fetch_build_eggs
          dist.fetch_build_eggs(dist.setup_requires)
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/dist.py", line 615, in fetch_build_eggs
          return _fetch_build_eggs(self, requires)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/installer.py", line 39, in _fetch_build_eggs
          resolved_dists = pkg_resources.working_set.resolve(
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/pkg_resources/__init__.py", line 890, in resolve
          dist = self._resolve_dist(
                 ^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/pkg_resources/__init__.py", line 926, in _resolve_dist
          dist = best[req.key] = env.best_match(
                                 ^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/pkg_resources/__init__.py", line 1256, in best_match
          return self.obtain(req, installer)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/pkg_resources/__init__.py", line 1292, in obtain
          return installer(requirement) if installer else None
                 ^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/installer.py", line 107, in _fetch_build_egg_no_warn
          wheel.install_as_egg(dist_location)
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/wheel.py", line 122, in install_as_egg
          self._install_as_egg(destination_eggdir, zf)
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/wheel.py", line 130, in _install_as_egg
          self._convert_metadata(zf, destination_eggdir, dist_info, egg_info)
        File "/Users/glyph/.virtualenvs/tmp-76ec862361048ed/lib/python3.11/site-packages/setuptools/wheel.py", line 175, in _convert_metadata
          os.rename(dist_info, egg_info)
      OSError: [Errno 66] Directory not empty: '/private/var/folders/yl/ndrrqv712fs02p5sdtxhml7h0000gn/T/pip-install-eg6osp5g/brotlipy_0f5c7469ab0142fab4bd5eacb492d28d/.eggs/cffi-1.17.1-py3.11-macosx-10.9-universal2.egg/cffi-1.17.1.dist-info' -> '/private/var/folders/yl/ndrrqv712fs02p5sdtxhml7h0000gn/T/pip-install-eg6osp5g/brotlipy_0f5c7469ab0142fab4bd5eacb492d28d/.eggs/cffi-1.17.1-py3.11-macosx-10.9-universal2.egg/EGG-INFO'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed cleaning build dir for brotlipy
Failed to build brotlipy
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (brotlipy)
 ā†Ŗ Thu Sep 19 11:53:05 PDT 2024 (ā˜… pip install brotlipy) (4 seconds elapsed)                                       
glyph@arabella:~  šŸ° tmp-76ec862361048ed  šŸš šŸ”‘   šŸ›‘ 1  ā®
  ā˜… 
sethmlarson commented 1 week ago

Is there a reason you're using brotlipy instead of brotlicffi? We migrated the package name a while ago to avoid clobbering the brotli module name.

glyph commented 1 week ago

Apparently Treq is pinned to an old version of httpbin for its development setup; that's a bug, for sure, but current brotlicffi has the same problem.

glyph commented 1 week ago

Replication:

  ā˜… mktmpenv -p python3.11  
 ā†© Tue Sep 24 21:29:52 PDT 2024
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-9010ff8df70f147/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-9010ff8df70f147/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-9010ff8df70f147/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-9010ff8df70f147/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/glyph/.virtualenvs/tmp-9010ff8df70f147/bin/get_env_details
This is a temporary environment. It will be deleted when you run 'deactivate'.
 ā†Ŗ Tue Sep 24 21:29:53 PDT 2024 (ā˜… mktmpenv -p python3.11) (1 seconds elapsed)                                     
glyph@arabella:~  šŸ° tmp-9010ff8df70f147  šŸš šŸ”‘   ā®
  ā˜… pip install brotlicffi
 ā†© Tue Sep 24 21:30:00 PDT 2024
Looking in indexes: http://127.0.0.1:3141/root/plus/+simple/
Collecting brotlicffi
  Downloading http://127.0.0.1:3141/root/pypi/%2Bf/b77/827a689905143/brotlicffi-1.1.0.0.tar.gz (465 kB)
  Preparing metadata (setup.py) ... done
Collecting cffi>=1.0.0 (from brotlicffi)
  Downloading http://127.0.0.1:3141/root/pypi/%2Bf/30c/5e0cb5ae493c0/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl (178 kB)
Collecting pycparser (from cffi>=1.0.0->brotlicffi)
  Downloading http://127.0.0.1:3141/root/pypi/%2Bf/c37/02b6d3dd8c7ab/pycparser-2.22-py3-none-any.whl (117 kB)
Building wheels for collected packages: brotlicffi
  Building wheel for brotlicffi (setup.py) ... error
  error: subprocess-exited-with-error

  Ɨ python setup.py bdist_wheel did not run successfully.
  ā”‚ exit code: 1
  ā•°ā”€> [48 lines of output]
      /Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/__init__.py:94: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated.
      !!

              ********************************************************************************
              Requirements should be satisfied by a PEP 517 installer.
              If you are using pip, you can try `pip install --use-pep517`.
              ********************************************************************************

      !!
        dist.fetch_build_eggs(dist.setup_requires)
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/private/var/folders/yl/ndrrqv712fs02p5sdtxhml7h0000gn/T/pip-install-vihjgp2a/brotlicffi_0a73da360f1c4e7cb8315a8daf73694c/setup.py", line 83, in <module>
          setup(
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/__init__.py", line 116, in setup
          _install_setup_requires(attrs)
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/__init__.py", line 89, in _install_setup_requires
          _fetch_build_eggs(dist)
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/__init__.py", line 94, in _fetch_build_eggs
          dist.fetch_build_eggs(dist.setup_requires)
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/dist.py", line 617, in fetch_build_eggs
          return _fetch_build_eggs(self, requires)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/installer.py", line 39, in _fetch_build_eggs
          resolved_dists = pkg_resources.working_set.resolve(
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/pkg_resources/__init__.py", line 897, in resolve
          dist = self._resolve_dist(
                 ^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/pkg_resources/__init__.py", line 933, in _resolve_dist
          dist = best[req.key] = env.best_match(
                                 ^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/pkg_resources/__init__.py", line 1271, in best_match
          return self.obtain(req, installer)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/pkg_resources/__init__.py", line 1307, in obtain
          return installer(requirement) if installer else None
                 ^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/installer.py", line 107, in _fetch_build_egg_no_warn
          wheel.install_as_egg(dist_location)
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/wheel.py", line 122, in install_as_egg
          self._install_as_egg(destination_eggdir, zf)
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/wheel.py", line 130, in _install_as_egg
          self._convert_metadata(zf, destination_eggdir, dist_info, egg_info)
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/wheel.py", line 175, in _convert_metadata
          os.rename(dist_info, egg_info)
      OSError: [Errno 66] Directory not empty: '/private/var/folders/yl/ndrrqv712fs02p5sdtxhml7h0000gn/T/pip-install-vihjgp2a/brotlicffi_0a73da360f1c4e7cb8315a8daf73694c/.eggs/cffi-1.17.1-py3.11-macosx-10.9-universal2.egg/cffi-1.17.1.dist-info' -> '/private/var/folders/yl/ndrrqv712fs02p5sdtxhml7h0000gn/T/pip-install-vihjgp2a/brotlicffi_0a73da360f1c4e7cb8315a8daf73694c/.eggs/cffi-1.17.1-py3.11-macosx-10.9-universal2.egg/EGG-INFO'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for brotlicffi
  Running setup.py clean for brotlicffi
  error: subprocess-exited-with-error

  Ɨ python setup.py clean did not run successfully.
  ā”‚ exit code: 1
  ā•°ā”€> [48 lines of output]
      /Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/__init__.py:94: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated.
      !!

              ********************************************************************************
              Requirements should be satisfied by a PEP 517 installer.
              If you are using pip, you can try `pip install --use-pep517`.
              ********************************************************************************

      !!
        dist.fetch_build_eggs(dist.setup_requires)
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/private/var/folders/yl/ndrrqv712fs02p5sdtxhml7h0000gn/T/pip-install-vihjgp2a/brotlicffi_0a73da360f1c4e7cb8315a8daf73694c/setup.py", line 83, in <module>
          setup(
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/__init__.py", line 116, in setup
          _install_setup_requires(attrs)
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/__init__.py", line 89, in _install_setup_requires
          _fetch_build_eggs(dist)
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/__init__.py", line 94, in _fetch_build_eggs
          dist.fetch_build_eggs(dist.setup_requires)
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/dist.py", line 617, in fetch_build_eggs
          return _fetch_build_eggs(self, requires)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/installer.py", line 39, in _fetch_build_eggs
          resolved_dists = pkg_resources.working_set.resolve(
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/pkg_resources/__init__.py", line 897, in resolve
          dist = self._resolve_dist(
                 ^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/pkg_resources/__init__.py", line 933, in _resolve_dist
          dist = best[req.key] = env.best_match(
                                 ^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/pkg_resources/__init__.py", line 1271, in best_match
          return self.obtain(req, installer)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/pkg_resources/__init__.py", line 1307, in obtain
          return installer(requirement) if installer else None
                 ^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/installer.py", line 107, in _fetch_build_egg_no_warn
          wheel.install_as_egg(dist_location)
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/wheel.py", line 122, in install_as_egg
          self._install_as_egg(destination_eggdir, zf)
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/wheel.py", line 130, in _install_as_egg
          self._convert_metadata(zf, destination_eggdir, dist_info, egg_info)
        File "/Users/glyph/.virtualenvs/tmp-9010ff8df70f147/lib/python3.11/site-packages/setuptools/wheel.py", line 175, in _convert_metadata
          os.rename(dist_info, egg_info)
      OSError: [Errno 66] Directory not empty: '/private/var/folders/yl/ndrrqv712fs02p5sdtxhml7h0000gn/T/pip-install-vihjgp2a/brotlicffi_0a73da360f1c4e7cb8315a8daf73694c/.eggs/cffi-1.17.1-py3.11-macosx-10.9-universal2.egg/cffi-1.17.1.dist-info' -> '/private/var/folders/yl/ndrrqv712fs02p5sdtxhml7h0000gn/T/pip-install-vihjgp2a/brotlicffi_0a73da360f1c4e7cb8315a8daf73694c/.eggs/cffi-1.17.1-py3.11-macosx-10.9-universal2.egg/EGG-INFO'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed cleaning build dir for brotlicffi
Failed to build brotlicffi
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (brotlicffi)
 ā†Ŗ Tue Sep 24 21:30:04 PDT 2024 (ā˜… pip install brotlicffi) (4 seconds elapsed)                                     
glyph@arabella:~  šŸ° tmp-9010ff8df70f147  šŸš šŸ”‘   šŸ›‘ 1  ā®
  ā˜… 
glyph commented 1 week ago

Hmm. --use-pep517 does in fact allow the wheel to build, in both cases. Now that I've done that, tox is happy on my local machine, because it is looking at the binary wheel cache.