ParseResultBytes.unsplit() raises AttributeError for a reference without an authority
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 84/100
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
- 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.
Mais de python-hyper/rfc3986
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
python-hyper/rfc3986#164 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
python-hyper/rfc3986#138 · 1 comentário ·
-
sdist is missing `tox.ini`Talvez livre de novo Um pull request para esta issue foi fechado sem ser mesclado. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 55/100
python-hyper/rfc3986#129 ·
-
wrong parseAberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 38/100
python-hyper/rfc3986#128 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 35/100
python-hyper/rfc3986#123 · 2 comentários ·
Todas as issues de python-hyper/rfc3986
Issues semelhantes
-
type-bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
push_gh-pages fails on master branch on forksTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Abertagood first issue infrastructure
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
kuznia-rdzeni/coreblocks#1135 ·
-
good first issue server
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Mantenedores costumam responder em até 1 dia
-
documentation priority: high
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
a-lex-s/mealie-telegram-bot#54 ·
Mantenedores costumam responder em até 1 dia