Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto Apto para principiantes
#163 0 comentarios 0 reacciones 0 asignados Ver en GitHub

@mayuriphad ya está trabajando en esto.

Desde el 23/10/2026.

  • #166 de @mayuriphad — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
84/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
backend

Línea de trabajo

Empieza en parseresult.py, en la propiedad de bytes authority, alrededor de la línea 409, y compara cómo gestiona la ausencia de una authority con las propiedades de bytes protegidas que se mencionan en el issue. Añade una prueba de regresión para ParseResultBytes.from_string(b"/a").unsplit() y comprueba que hace el recorrido de ida y vuelta sin lanzar una excepción; el issue no indica ningún archivo de pruebas, así que localiza primero las pruebas de parseresult existentes.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

>>> 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.

Lenguaje dominante
Python
Estrellas
189
Forks
43
Merge medio
12 h 14 min
PR fusionados (30 d)
2

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de python-hyper/rfc3986

Todos los issues de python-hyper/rfc3986

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.