python / python/cpython

tokenize.detect_encoding has issues with \r

Aberta
#93,608 3 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

stdlib type-bug
Linguagem predominante
Python
Estrelas
77.2k
Forks
36k
Merge médio
1d 9h
PRs com merge (30d)
558

Descrição

Tokenize does not correctly detect encodings when the carriage return character is involved. In this program, it does not detect the header, since it does not consider the \r to start a new line.

import tokenize
import runpy

code = """\r# coding: big5

print('錯誤的答案')
"""

with open('file.py', 'w', encoding='big5') as file:
    file.write(code)
with open('file.py', 'rb') as file:
    print(tokenize.detect_encoding(file.readline))
    # result: ('utf-8', [b'\r# coding: big5\r\n', b'\r\n'])

runpy.run_path('file.py')
# prints 錯誤的答案 as required

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.

Direção de pesquisa

A issue menciona tokenize.detect_encoding e fornece uma reprodução completa com retorno de carro. Comece executando o script fornecido; em seguida, localize a implementação da detecção de codificação e os testes existentes; o trabalho estará concluído quando o cabeçalho de codificação for detectado como big5 quando \r o preceder, com cobertura de regressão para esta entrada.

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

Avaliação

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

Receba novas issues na sua caixa de entrada

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