python / python/cpython

types.MappingProxyType states that proxy[key] will throw a KeyError, but that is not always true

Abierto
#117,956 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

docs
Lenguaje dominante
Python
Estrellas
77.2k
Forks
35.9k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

Documentation

In the documentation, it states proxy[key] will:

Return the item of the underlying mapping with key key. Raises a KeyError if key is not in the underlying mapping.

https://docs.python.org/3/library/types.html#types.MappingProxyType

However, it is possible to get an AttributeError instead, and in fact, unit tests for the dataclasses module require this to be true (metadata in dataclasses.field is wrapped in a mapping proxy):

https://github.com/python/cpython/blob/5f4c7cf3f49629bcf890c305e0a90ffd708110a2/Lib/test/test_dataclasses/__init__.py#L2065-L2066

The unit tests above are from Python3.12.

Looks like the CPython source code only forwards the getitem call to the inner mapping:

https://github.com/python/cpython/blob/5f4c7cf3f49629bcf890c305e0a90ffd708110a2/Objects/descrobject.c#L1042-L1046

Guía de contribución

Abrir la guía de contribución

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.

Línea de trabajo

Comienza con la documentación de MappingProxyType en la página enlazada de la documentación de Python y, después, compara su redacción con las pruebas de dataclasses referenciadas y la implementación de Objects/descrobject.c. Se considera terminado cuando la documentación describe con precisión el comportamiento de las excepciones demostrado por las pruebas y la implementación.

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

Evaluación

Stack tecnológico
python
Área
documentation
Tipo de issue
Documentación
Dificultad
1/5
Tiempo estimado
Menos de una hora
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
58/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.