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

ParseResultBytes.unsplit() raises AttributeError for a reference without an authority

Aberta Para iniciantes
#163 0 comentários 0 reações 0 responsáveis Ver no GitHub

@mayuriphad já está trabalhando nisso.

Desde 23/10/2026.

  • #166 de @mayuriphad — aberto

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
84/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
python
Domínio
backend

Direção de pesquisa

Comece em parseresult.py, na propriedade bytes authority, por volta da linha 409, e compare como ela lida com a ausência de uma authority com as propriedades bytes protegidas mencionadas na issue. Adicione um teste de regressão para ParseResultBytes.from_string(b"/a").unsplit() e verifique se ele faz o round-trip sem gerar uma exceção; a issue não informa nenhum arquivo de teste, então localize primeiro os testes parseresult existentes.

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

Descrição

>>> from rfc3986.parseresult import ParseResult, ParseResultBytes
>>> ParseResult.from_string("/a").unsplit()
'/a'
>>> ParseResultBytes.from_string(b"/a").unsplit()
AttributeError: 'NoneType' object has no attribute 'encode'

Any reference without an authority (/a, a, mailto:x, ?q) crashes the bytes variant, while the str variant round-trips. Reproduced on 2.0.0 (main 3bd3832).

The traceback: unsplit calls copy_with(lazy_normalize=False), which calls _generate_authority, which reads the authority property, and that property does self.reference.authority.encode(self.encoding) (parseresult.py:409) without checking for None. The other bytes properties (scheme, path, …) are guarded the same way authority should be.

Happy to send a PR with a test if you would take one.

Linguagem predominante
Python
Estrelas
189
Forks
43
Merge médio
12h 14min
PRs com merge (30d)
2

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

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 python-hyper/rfc3986

Todas as issues de python-hyper/rfc3986

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.