Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

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

Aberta
#307 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
38/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
python
Domínio
tooling

Direção de pesquisa

A issue não nomeia arquivos de implementação nem testes. Comece localizando o tratamento por trás de @render.instance(object) e os testes existentes de instâncias de typeclass; em seguida, rastreie como o default de object é reconhecido. Considera-se concluído quando @render.instance(Any) se comporta de forma equivalente a @render.instance(object), enquanto o exemplo despacha a implementação de fallback.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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

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:

@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.
Linguagem predominante
Python
Estrelas
730
Forks
30
Métricas de merge de PRs
Nenhum PR com merge em 30d

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de dry-python/classes

Todas as issues de dry-python/classes

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.