Requests `Session.request` assumes url to be `str`
@NathanielRN ya está trabajando en esto.
Desde el 21/3/2022.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
https://github.com/aws/aws-xray-sdk-python/blob/f5f9c470b189bb34f31a1d0a28f497741132b7d2/aws_xray_sdk/ext/requests/patch.py#L23
Implicitly assumes the url to be str.
In the case where you have bytes as the url (allowed by requests in stubs https://github.com/python/typeshed/blob/master/stubs/requests/requests/sessions.pyi#L88 and works fine in runtime. The official docs however don't specify a specific type https://github.com/psf/requests/blob/79f60274f7e461b8fd2f579e741f748438d7eadb/requests/sessions.py#L465) the variable goes through the following path leading to an TypeError when sampling is enabled.
https://github.com/aws/aws-xray-sdk-python/blob/f5f9c470b189bb34f31a1d0a28f497741132b7d2/aws_xray_sdk/ext/util.py#L131
Returns parsed url with type(url.hostname) -> bytes.
https://github.com/aws/aws-xray-sdk-python/blob/f5f9c470b189bb34f31a1d0a28f497741132b7d2/aws_xray_sdk/core/recorder.py#L425
Passed without any changes to report_subsegment.
https://github.com/aws/aws-xray-sdk-python/blob/f5f9c470b189bb34f31a1d0a28f497741132b7d2/aws_xray_sdk/core/recorder.py#L276
And from there passed to begin_subsegment unchanged. Here types declared in docstrings are not followed.
https://github.com/aws/aws-xray-sdk-python/blob/f5f9c470b189bb34f31a1d0a28f497741132b7d2/aws_xray_sdk/core/models/subsegment.py#L81
Then the name passes to Subsegment if sampling is enabled.
https://github.com/aws/aws-xray-sdk-python/blob/f5f9c470b189bb34f31a1d0a28f497741132b7d2/aws_xray_sdk/core/models/entity.py#L30
super().__init__ is called and we end up in Entity.__init__ with the unchanged name with type bytes.
https://github.com/aws/aws-xray-sdk-python/blob/f5f9c470b189bb34f31a1d0a28f497741132b7d2/aws_xray_sdk/core/models/entity.py#L38
Then at this line we're iterating over the items in the bytes (type(c) -> int) and checking if those are included in an str and we get a TypeError.
File "/var/task/aws_xray_sdk/ext/requests/patch.py", line 27, in _xray_traced_requests
return xray_recorder.record_subsegment(
File "/var/task/aws_xray_sdk/core/recorder.py", line 428, in record_subsegment
subsegment = self.begin_subsegment(name, namespace)
File "/var/task/aws_xray_sdk/core/recorder.py", line 300, in begin_subsegment
subsegment = Subsegment(name, namespace, segment)
File "/var/task/aws_xray_sdk/core/models/subsegment.py", line 98, in __init__
super(Subsegment, self).__init__(name)
File "/var/task/aws_xray_sdk/core/models/entity.py", line 38, in __init__
self.name = ''.join([c for c in name if c not in _common_invalid_name_characters])
File "/var/task/aws_xray_sdk/core/models/entity.py", line 38, in <listcomp>
self.name = ''.join([c for c in name if c not in _common_invalid_name_characters])
TypeError: 'in <string>' requires string as left operand, not int
The best fix is probably to sanitize the hostname once getting that off from urlparse and convert it to an str.
- Lenguaje dominante
- Python
- Estrellas
- 340
- Forks
- 148
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de aws/aws-xray-sdk-python
-
psycopg connection context manager drops X-Ray tracing wrapper, so cursor execute calls are not tracedPosiblemente ocupada @reginaldalfret la tomó hace 20 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
aws/aws-xray-sdk-python#490 · 1 comentario ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 1/100
aws/aws-xray-sdk-python#460 ·
-
Next releaseAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
aws/aws-xray-sdk-python#457 · 1 reacción ·
-
mysql-connector 9.2.0 - TypeError: 'MySQLConnection' object is not iterablePosiblemente ocupada @reginaldalfret la tomó hace 20 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
aws/aws-xray-sdk-python#453 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
aws/aws-xray-sdk-python#452 · 1 reacción ·
Todos los issues de aws/aws-xray-sdk-python
Issues similares
-
`LazyFrameRemote` and `ExecuteRemote` sinks do not accept `Path`, like `LazyFrame` sinks do.Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
WingedGuardian/GENesis-AGI#3375 ·
Los mantenedores suelen responder en 1 día
-
curriculum documentation quality
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
githubnext/gh-aw-workshop#4601 ·
Los mantenedores suelen responder en 1 día
-
approved Good First Issue scope: docs
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
hiero-ledger/hiero-sdk-python#2730 · 3 comentarios ·
Los mantenedores suelen responder en 1 día