dry-python / dry-python/classes

Support `Any` as an alias for `object` to describe a default typeclass implementation

Đang mở
#307 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Python
Star
730
Fork
30
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

**Context.** In order to define a default implementation (the one used if no other implementation matches), we currently have to write something like this:

```python
from classes import typeclass

@typeclass
def render(data_value) -> str:
"""Render a data value nicely."""

@render.instance(int)
def _render_int(data_value: int) -> str:
return f'This is an integer: {data_value}'

@render.instance(object)
def _render_int(data_value: object) -> str:
return f'No idea what this is: {data_value}'

assert render('BADOOM') == 'No idea what this is: BADOOM'
```
*(this script should be runnable as-is.)*

**Decision.** Support `Any` as a special case to replace `object`:

```python
@render.instance(Any)
def _render_int(data_value: Any) -> str: # type: ignore
return f'No idea what this is: {data_value}'
```

**Consequences.**
* Pro: The code will look a little bit more straightforward;
* Contra: `mypy` with common settings might be unhappy about `Any` being used, but that can be silenced with `type: ignore` I suppose.

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.