dry-python / dry-python/classes

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

Abierto
#307 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
730
Forks
30
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

**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.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.