dry-python / dry-python/returns

Incorrect result type for `returns.curry.partial` with keyword arguments for positional parameters

Đang mở
#2,191 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
bug
Ngôn ngữ chính
Python
Star
4.4k
Fork
155
Merge trung bình
2 giờ 27 phút
Pull request đã merge (30 ngày)
22

Mô tả

# Bug report

## What's wrong

When using `returns.curry.partial`, if you partially apply a positional parameter using a keyword argument, the resulting type is incorrect. Result type of callable allows passing the remaining arguments as positional, but this leads to a runtime error.

### Example

```python
def foo(x: int, y: int) -> None:
...

bar = returns.curry.partial(foo, x=1)
reveal_type(bar)
# => Mypy: "def (y: builtins.int)"
# => Expected: "def (*, y: builtins.int)"

bar(2)
# No errors from mypy, but got runtime error
# TypeError: foo() got multiple values for argument 'x'
```

## How is that should be

In this scenario, the remaining parameters should be strictly keyword-only. The resulting type should reflect this restriction, and passing a positional argument should be flagged as an error at type checking time.

## System information

- `python` version: `3.13.4`
- `returns` version: `0.25.0`
- `mypy` version: `1.15.0`

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

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

Đánh giá

Issue này chưa được đánh giá.

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.