Как распечатать аргументы, переданные функции при использовании 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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