Improving various error messages
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Python
- Estrelas
- 77.2k
- Forks
- 36k
- Métricas de merge de PRs
- Métricas de PR pendentes
Descrição
Feature or enhancement
Proposal:
I propose improving the error messages as follows:
Starred expression
In the return type type hint
In Python 3.13.5:
>>> def func() -> *list:
File "<python-input-0>", line 1
def func() -> *list:
^^
SyntaxError: expected ':'
Proposed:
>>> def func() -> *list:
File "<python-input-0>", line 1
def func() -> *list:
^^^^^
SyntaxError: can't use starred expression in the return type type hint
When unpacking to a set
In Python 3.13.5:
>>> {*x, y} = 1, 2
File "<python-input-0>", line 1
{*x, y} = 1, 2
^^^^^^^
SyntaxError: cannot assign to set display here. Maybe you meant '==' instead of '='?
Proposed:
>>> {*x, y} = 1, 2
File "<python-input-0>", line 1
{*x, y} = 1, 2
^^^^^^^
SyntaxError: starred assignment target must be in a list or tuple, not a set. Maybe you meant '==' instead of '='?
In type statement
In Python 3.13.5:
>>> type *Z = int
File "<python-input-0>", line 1
type *Z = int
^^^^^^^
SyntaxError: cannot assign to expression here. Maybe you meant '==' instead of '='?
>>> type Z = *int
File "<python-input-1>", line 1
type Z = *int
^
SyntaxError: invalid syntax
Proposed:
>>> type *Z = int
File "<python-input-0>", line 1
type *Z = int
^^
SyntaxError: cannot use starred expression in a type statement
>>> type Z = *int
File "<python-input-1>", line 1
type Z = *int
^^^^
SyntaxError: cannot use starred expression in a type statement
Assign to None/True/False
In Python 3.13.5:
>>> *None, _ = (1, 2)
File "<python-input-1>", line 1
*None, _ = (1, 2)
^^^^^^^^^^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
Proposed:
>>> *None, _ = (1, 2)
File "<python-input-1>", line 1
*None, _ = (1, 2)
^^^^^
SyntaxError: cannot assign to None
(Same for True/False)
import statement
In Python 3.13.5:
>>> from typing import *, Any
File "<python-input-0>", line 1
from typing import *, Any
^
SyntaxError: invalid syntax
Proposed:
>>> from typing import *, Any
File "<python-input-0>", line 1
from typing import *, Any
^^^^^^
SyntaxError: can't use wildcard and identifier at the same time
Open questions:
"You don't need to use a starred expression here"?
In Python 3.13.5:
>>> lst = [1, 2, 3]
>>> a, b, c = *lst
File "<python-input-1>", line 1
a, b, c = *lst
^^^^
SyntaxError: can't use starred expression here
This is a tricky one. In my experience, this exists in many beginner codes, but I don't know how we can improve the error message here. The word "here" is very unclear IMHO.
Inconsistency of error messages
In Python 3.13.5:
>>> for *x in [[0]]: print(x)
File "<python-input-0>", line 1
for *x in [[0]]: print(x)
^^
SyntaxError: starred assignment target must be in a list or tuple
>>> for (*x) in [[0]]: print(x)
File "<python-input-1>", line 1
for (*x) in [[0]]: print(x)
^^
SyntaxError: cannot use starred expression here
I find the above inconsistency a little bit surprising, but I don't have a strong feeling about this.
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
A issue não menciona arquivos nem testes; comece reproduzindo os exemplos de sintaxe listados no Python 3.13.5 e rastreando onde suas mensagens de SyntaxError são produzidas. Considera-se concluído quando houver concordância sobre os casos das questões em aberto e as mensagens propostas forem atualizadas de forma consistente nos cenários listados de expressões com asterisco e importações.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- python
- Domínio
- compilers
- Tipo de issue
- Funcionalidade
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 35/100