Astropy: deprecated_renamed_argument falla para una palabra clave eliminada (no resuelto: cuando se llama como argumento posicional)

Creado en 31 ene. 2020  ·  3Comentarios  ·  Fuente: astropy/astropy

ACTUALIZACIÓN: Aún no se ha resuelto cuando la función siguiente se llama myfunc(1, 200) .


deprecated_renamed_argument permite desaprobar un argumento de palabra clave eliminado. Sin embargo, al hacerlo, no se puede establecer la palabra clave obsoleta. Siempre se le da su valor predeterminado:

>>> from astropy.utils.decorators import deprecated_renamed_argument

>>> @deprecated_renamed_argument('b', None, '4.1')
>>> def myfunc(a, b=3):
>>>     print(a, b)
>>>     return

>>> myfunc(1, b=200)
1 3
WARNING: AstropyDeprecationWarning: "b" was deprecated in version 4.1 and will be removed in a future version.  [warnings]

El valor predeterminado de la palabra clave obsoleta se puede cambiar si se usa como un argumento posicional, pero en ese caso no se genera la advertencia de obsolescencia:

>>> myfunc(1, 200)
1 200
Bug utils

Todos 3 comentarios

oh, wow, esto es un desastre.

Intentaré ocuparme de ello durante el fin de semana.

Podría tener una solución. Consulte el n. ° 9981.

Me pregunto cuántos paquetes posteriores se verán afectados. Dado que no hemos recibido informes de errores hasta ahora, este uso probablemente sea poco común.

gracias @pllim. Parece que mis fines de semana se están escapando sin mucho código producido 😥

¿Fue útil esta página
0 / 5 - 0 calificaciones