Bug related to the RustPython `rich` vendor on Windows 11 25H2.

Đang mở
#8,341 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
45/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
python, rust

Hướng nghiên cứu

Tái hiện pip install pillow trên Windows 11 25H2 bằng main branch, sau đó truy vết lỗi từ pip/_internal/cli/progress_bars.py đến các tệp rich vendored được hiển thị trong stack trace, đặc biệt là _win32_console.py. Hoàn thành khi việc gián đoạn tải xuống được báo cáo không còn kết thúc bằng lỗi kiểu đối số không được hỗ trợ.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

C-bug

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
Ngôn ngữ chính
Rust
Star
22.4k
Fork
1.5k
Merge trung bình
15 giờ 18 phút
Pull request đã merge (30 ngày)
172

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của RustPython/RustPython

Tất cả issue của RustPython/RustPython

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.