[pyar] Detectando llamadas con cantidad incorrectas de argumentos
Daniel Moisset
dmoisset en machinalis.com
Vie Feb 27 17:52:53 ART 2015
Hola, estoy tratando de resolver el siguiente problema:
tengo un cacho de código que saca de varios lados un callable 'f', una
lista 'args', y un diccionario 'kwargs'
Ese cacho de codigo llama a f(*args, **kwargs)
Cuando eso sucede, existe la posibilidad de que las cantidades de
argumentos no coincidan, por ejemplo que f acepte 2 argumentos, y args sea
una lista de 100 valores. Eso me va a levantar una excepción del estilo
TypeError: f() takes exactly 2 arguments (100 given)
Quiero capturar ese error para poder generar mensajes de log/error
relevantes (que dicen por ejemplo de donde salieron f, args, kwargs a un
nivel mas relevante para el que lee logs). Lo primero que se me ocurrio es:
try:
f(*args, **kwargs)
except TypeError:
loguear(informacion_relevante)
El problema es que esto me captura otros TypeErrors que no tienen nada que
ver con llamar a la funcion con cantidad correcta de argumentos, que se
capturan a un nivel mas alto, y quiero dejar pasar. Entonces quisiera hacer:
try:
f(*args, **kwargs)
except TypeError as e:
if <e es por un mismatch de argumentos>:
loguear(informacion_relevante)
else: raise
o alguna alternativa como:
if <f, args, kwargs no matchean en argumentos>:
loguear(informacion_relevante)
else:
f(*args, **kwargs)
Se les ocurre alguna forma de lograr eso?
Saludos,
D.
--
Daniel F. Moisset - Technical Leader
www.machinalis.com
Skype: @dmoisset
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150227/c02d9ccf/attachment.html>
More information about the pyar
mailing list