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

Prevent an implementation for `int` class from operating on `bool` values

Aberta
#310 1 comentário 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
45/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
python
Domínio
backend

Direção de pesquisa

Comece reproduzindo o exemplo com classes 0.4.0 e, em seguida, rastreie o dispatch a partir da declaração da typeclass e do registro de render.instance(int). Está concluído quando render(True) não usar mais a implementação de int e, em vez disso, gerar NotImplementedError para o caso bool não especificado.

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

Descrição

Context. Consider the following piece of code.

from classes import typeclass

@typeclass
def render(data_value) -> str:
    """Pretty-print a value."""

@render.instance(int)
def _render_int(data_value: int) -> str:
    return f'🔢 {data_value}'

render(True) == '🔢 True'

(this should be runnable as-is on classes 0.4.0.)

I would have expected this code to fail with a NotImplementedError because the bool case wasn't specified; but instead, that case is handled by the int implementation because

In [3]: issubclass(bool, int)
Out[3]: True

Decision. In an int implementation, recognize if the provided value is actually a bool and refuse to process that value.

Consequences. I have been writing in Python for quite a few years now and I might even have encountered this relationship between int and bool types before, but that is not quite a type of thing that I keep in my short-term memory to be able to instantly recognize.

I believe this change can help avert bugs which might be hard to trace otherwise.

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.