Depuración de Python: ¿obtener el nombre de archivo y el número de línea desde el que se llama a una función?

Actualmente estoy construyendo un sistema bastante complejo en Python, y cuando depuro a menudo pongo declaraciones de impresión simples en varios scripts. Para mantener una visión general, a menudo también quiero imprimir el nombre del archivo y el número de línea donde se encuentra la declaración de impresión. Por supuesto, puedo hacerlo manualmente o con algo como esto:

from inspect import currentframe, getframeinfo
print getframeinfo(currentframe()).filename + ':' + str(getframeinfo(currentframe()).lineno) + ' - ', 'what I actually want to print out here'

que imprime algo como:

filenameX.py:273: lo que realmente quiero imprimir aquí

Para hacerlo más simple, quiero poder hacer algo como:

print debuginfo(), 'what I actually want to print out here'

Así que lo puse en una función en alguna parte e intenté hacer:

from debugutil import debuginfo
print debuginfo(), 'what I actually want to print out here'
print debuginfo(), 'and something else here'

desafortunadamente, me sale:

debugutil.py:3 - what I actually want to print out here
debugutil.py:3 - and something else here

Imprime el nombre del archivo y el número de línea en el que definí la función, en lugar de la línea en la que llamo debuginfo (). Esto es obvio porque el código se encuentra en el archivo debugutil.py.

Entonces mi pregunta es en realidad:¿Cómo puedo obtener el nombre de archivo y el número de línea desde el que se llama a esta función debuginfo ()? ¡Todos los consejos son bienvenidos!

Respuestas a la pregunta(3)

Su respuesta a la pregunta