Как распечатать аргументы, переданные функции при использовании Python Fire?Python

Программы на Python
Anonymous
Как распечатать аргументы, переданные функции при использовании Python Fire?

Сообщение Anonymous »

Я использую библиотеку Fire в Python для создания простого интерфейса командной строки (CLI). Моя настройка следующая:
import fire

def main(a):
print('hi')

if __name__ == '__main__':
fire.Fire(main)


Когда я запускаю сценарий следующим образом:
$ python my_script.py 123

Печатает:
hi

Я хотел бы напечатать аргументы, переданные в main (в данном случае 123), прежде чем он напечатает «привет». Есть ли способ перехватить и распечатать аргументы в fire.Fire(main)?
Я пробовал изменить сигнатуру функции и добавить *args, но это меняет поведение функции с Fire.
Как я могу распечатать аргументы, переданные в main, с помощью Python Fire, не меняя логику внутри функции?

Попытка:
import fire

class MyWrapper:
def __init__(self, target):
self.target = target

def __getattr__(self, name):
def method(*args, **kwargs):
# Print the arguments passed to the Fire CLI
print(f"Method: {name}, Args: {args}, Kwargs: {kwargs}")
# Call the original method
return getattr(self.target, name)(*args, **kwargs)
return method

class MyCommands:
def greet(self, name="World"):
return f"Hello, {name}!"

if __name__ == '__main__':
fire.Fire(MyWrapper(MyCommands))



Подробнее здесь: https://stackoverflow.com/questions/789 ... ython-fire

Вернуться в «Python»