Inconsistent error messages when returning the wrong type for the type-conversion magic methods
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 35.9k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Bug report
Bug description:
I noticed the error messages between magic methods like __int__ and __float__ were inconsistent. This seems like slightly undesirable behavior to me. I used the following code to generate many of them.
class Foo:
def __int__(self):
return None
def __float__(self):
return None
def __bytes__(self):
return None
def __complex__(self):
return None
def __bool__(self):
return None
def __str__(self):
return None
try:
int(Foo())
except Exception as e:
print(e)
try:
float(Foo())
except Exception as e:
print(e)
try:
bytes(Foo())
except Exception as e:
print(e)
try:
complex(Foo())
except Exception as e:
print(e)
try:
bool(Foo())
except Exception as e:
print(e)
try:
str(Foo())
except Exception as e:
print(e)
And the output is as follows:
__int__ returned non-int (type NoneType)
Foo.__float__ returned non-float (type NoneType)
__bytes__ returned non-bytes (type NoneType)
__complex__ returned non-complex (type NoneType)
__bool__ should return bool, returned NoneType
__str__ returned non-string (type NoneType)
The first issue I've made, but seems like a reasonable bug. I'm not sure if there are other "type-conversion" magic methods out there that aren't consistent.
CPython versions tested on:
3.13, 3.12
Operating systems tested on:
Windows
Linked PRs
- gh-130835
- gh-144737
- gh-144827
- gh-151894
- gh-154606
- gh-156080
- gh-156120
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par exécuter le reproducteur de l’issue et par comparer les messages signalés pour chaque méthode magique de conversion de type. Examinez les PRs liés afin de déterminer quels cas sont déjà pris en charge et ce qu’il reste à faire ; le travail est considéré comme terminé lorsque les messages d’erreur concernés ont un comportement convenu et cohérent, avec une couverture de régression.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 20/100