RustPython / RustPython/RustPython
Bug related to the RustPython `rich` vendor on Windows 11 25H2.
Nessuno ha ancora preso questa issue.
- Lingua principale
- Rust
- Stelle
- 22.4k
- Fork
- 1.5k
- Merge medio
- 16h 33m
- PR unite (30g)
- 165
Descrizione
Pillow won't compile because RustPython doesn't have complete C bindings (I know this), but this error is strange because it's not related to compilation—it's a bug related to the vendor-specific version of rich on Windows 11 25H2.
I'm using the latest version from the main branch.
C:\Windows\System32>pip install pillow
Collecting pillow
Downloading pillow-12.3.0.tar.gz (47.0 MB)
ERROR: Exception:---------------------------- 0.0/47.0 MB ? eta -:--:--
Traceback (most recent call last):
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\cli\progress_bars.py", line 69, in _rich_download_progress_bar
for chunk in iterable:
^^^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\network\utils.py", line 65, in response_chunks
for chunk in response.raw.stream(
~~~~~~~~~~~~~~~~~~~^
chunk_size,
^^^^^^^^^^^
...<22 lines>...
decode_content=False,
^^^^^^^^^^^^^^^^^^^^^
):
^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\urllib3\response.py", line 1251, in stream
data = self.read(amt=amt, decode_content=decode_content)
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\urllib3\response.py", line 1106, in read
data = self._raw_read(amt)
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\urllib3\response.py", line 1022, in _raw_read
data = self._fp_read(amt, read1=read1) if not fp_closed else b""
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\urllib3\response.py", line 1005, in _fp_read
return self._fp.read(amt) if amt is not None else self._fp.read()
~~~~~~~~~~~~~^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\cachecontrol\filewrapper.py", line 100, in read
data: bytes = self.__fp.read(amt)
~~~~~~~~~~~~~~^^^^^
File "C:\Users\Vinícius\.cargo\git\checkouts\rustpython-63090cdce5e18442\cc30cd5\Lib\http\client.py", line 484, in read
s = self.fp.read(amt)
File "C:\Users\Vinícius\.cargo\git\checkouts\rustpython-63090cdce5e18442\cc30cd5\Lib\socket.py", line 729, in readinto
return self._sock.recv_into(b)
~~~~~~~~~~~~~~~~~~~~^^^
File "C:\Users\Vinícius\.cargo\git\checkouts\rustpython-63090cdce5e18442\cc30cd5\Lib\ssl.py", line 1304, in recv_into
return self.read(nbytes, buffer)
~~~~~~~~~^^^^^^^^^^^^^^^^
File "C:\Users\Vinícius\.cargo\git\checkouts\rustpython-63090cdce5e18442\cc30cd5\Lib\ssl.py", line 1138, in read
return self._sslobj.read(len, buffer)
KeyboardInterrupt
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\cli\base_command.py", line 109, in _run_wrapper
status = _inner_run()
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\cli\base_command.py", line 102, in _inner_run
return self.run(options, args)
~~~~~~~~^^^^^^^^^^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\cli\req_command.py", line 101, in wrapper
return func(self, options, args)
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\commands\install.py", line 479, in run
requirement_set = resolver.resolve(
reqs, check_supported_wheels=not options.target_dir
)
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\resolution\resolvelib\resolver.py", line 99, in resolve
result = self._result = resolver.resolve(
~~~~~~~~~~~~~~~~^
collected.requirements, max_rounds=limit_how_complex_resolution_can_be
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\resolvelib\resolvers\resolution.py", line 601, in resolve
state = resolution.resolve(requirements, max_rounds=max_rounds)
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\resolvelib\resolvers\resolution.py", line 434, in resolve
self._add_to_criteria(self.state.criteria, r, parent=None)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\resolvelib\resolvers\resolution.py", line 150, in _add_to_criteria
if not criterion.candidates:
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\resolvelib\structs.py", line 194, in __bool__
return bool(self._sequence)
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 165, in __bool__
self._bool = any(self)
~~~^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 149, in <genexpr>
return (c for c in iterator if id(c) not in self._incompatible_ids)
^^^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 39, in _iter_built
candidate = func()
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\resolution\resolvelib\factory.py", line 182, in _make_candidate_from_link
base: BaseCandidate | None = self._make_base_candidate_from_link(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
link, template, name, version
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\resolution\resolvelib\factory.py", line 228, in _make_base_candidate_from_link
self._link_candidate_cache[link] = LinkCandidate(
~~~~~~~~~~~~~^
link,
^^^^^
...<3 lines>...
version=version,
^^^^^^^^^^^^^^^^
)
^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 326, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
link=link,
^^^^^^^^^^
...<4 lines>...
version=version,
^^^^^^^^^^^^^^^^
)
^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 168, in __init__
self.dist = self._prepare()
~~~~~~~~~~~~~^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 246, in _prepare
dist = self._prepare_distribution()
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 337, in _prepare_distribution
return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\operations\prepare.py", line 542, in prepare_linked_requirement
return self._prepare_linked_requirement(req, parallel_builds)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\operations\prepare.py", line 613, in _prepare_linked_requirement
local_file = unpack_url(
link,
...<4 lines>...
hashes,
)
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\operations\prepare.py", line 180, in unpack_url
file = get_http_url(
link,
...<2 lines>...
hashes=hashes,
)
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\operations\prepare.py", line 121, in get_http_url
from_path, content_type = download(link, temp_dir.path)
~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\network\download.py", line 193, in __call__
self._process_response(download, resp)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\network\download.py", line 210, in _process_response
for chunk in chunks:
^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_internal\cli\progress_bars.py", line 68, in _rich_download_progress_bar
with progress:
^^^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\rich\progress.py", line 1189, in __exit__
self.stop()
~~~~~~~~~^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\rich\progress.py", line 1175, in stop
self.live.stop()
~~~~~~~~~~~~~~^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\rich\live.py", line 162, in stop
with self.console:
^^^^^^^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\rich\console.py", line 870, in __exit__
self._exit_buffer()
~~~~~~~~~~~~~~~~~^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\rich\console.py", line 826, in _exit_buffer
self._check_buffer()
~~~~~~~~~~~~~~~~~~^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\rich\console.py", line 2038, in _check_buffer
self._write_buffer()
~~~~~~~~~~~~~~~~~~^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\rich\console.py", line 2074, in _write_buffer
legacy_windows_render(buffer, LegacyWindowsTerm(self.file))
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\rich\_windows_renderer.py", line 53, in legacy_windows_render
term.erase_line()
~~~~~~~~~~~~~~~^^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\rich\_win32_console.py", line 460, in erase_line
FillConsoleOutputCharacter(
~~~~~~~~~~~~~~~~~~~~~~~~~~^
self._handle, " ", length=cells_to_erase, start=start_coordinates
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\Vinícius\.cargo\bin\Lib\site-packages\pip\_vendor\rich\_win32_console.py", line 148, in FillConsoleOutputCharacter
_FillConsoleOutputCharacterW(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
std_handle,
^^^^^^^^^^^
...<3 lines>...
byref(num_written),
^^^^^^^^^^^^^^^^^^^
)
^
TypeError: Unsupported argument type
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Riproduci pip install pillow su Windows 11 25H2 usando la main branch, quindi traccia il problema da pip/_internal/cli/progress_bars.py fino ai file rich vendorizzati mostrati nello stack trace, in particolare _win32_console.py. Il lavoro è completato quando l’interruzione del download segnalata non termina più con l’errore relativo a un tipo di argomento non supportato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python, rust
- Ambito
- cli, compilers, operating-systems
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 45/100