P4Python использует аргумент -I Индикаторы

Я хотел бы использовать аргумент -I, чтобы знать, что происходит, кроме исключений, когда я синхронизирую с помощью p4python.

На веб-сайте указано, что я могу использовать -I для индикаторов выполнения в виде консольной команды, особенно с p4 -I sync -q.

Это работает в консоли, но мне не удалось заставить его работать с P4Python, но, возможно, я просто использовал его неправильно и не смог найти никакой информации об его использовании.

Кто-нибудь знает, как это сделать?


person Goose    schedule 21.03.2017    source источник


Ответы (1)


Взгляните на упомянутый здесь класс Progress:

https://www.perforce.com/perforce/doc.current/manuals/p4script/03_python.html#1131357

Вероятно, в настоящее время у вас есть код, который выглядит так:

p4.connect()
p4.run_sync()

Чтобы получить индикаторы прогресса, создайте класс Progress:

class GoosesAwesomeProgressSubclass(P4.Progress):
    def update(self,units):
        print("Progress has been made!")

и используйте его:

p4.using_progress(GoosesAwesomeProgressSubclass())
p4.connect()
p4.run_sync()
person Samwise    schedule 21.03.2017
comment
Это отличная информация. Хотя у меня проблемы с его использованием. Должен ли я как-то настраивать прогресс или использовать метод прогресса для каждой синхронизации или каким-то образом использовать собственный класс прогресса? - person Goose; 22.03.2017
comment
В этой ссылке описан класс прогресса (P4.Progress). Вы подклассируете его, и сервер будет вызывать обратные вызовы, чтобы сообщить вам о ходе выполнения. - person Samwise; 22.03.2017
comment
Итак, я попробовал это class MyProgress( Progress ): pass foo = MyProgress(), но я чувствую, что это может быть совершенно неправильно, и я не видел никакого прогресса. Нужно ли мне помещать что-либо в подкласс? Также прошу простить мою неосведомленность. - person Goose; 22.03.2017
comment
Кстати, я использовал: from P4 import P4, P4Exception, Progress, и он не выдает никаких ошибок, но, похоже, не дает индикаторов прогресса. - person Goose; 22.03.2017
comment
Я добавил некоторый пример кода, написанный вручную, чтобы дать вам представление о том, как вы должны использовать класс Progress (я думаю, что на самом деле я его не использовал, просто ушел из документации, поэтому код, вероятно, не работает как -является). - person Samwise; 22.03.2017
comment
Большое спасибо за то, что собрали пример. В настоящее время я использую from P4 import P4, P4Exception, Progress и попытался запустить следующее class GoosesAwesomeProgressSubclass(Progress): def update(self,units): print("Progress has been made!") p4.using_progress(GoosesAwesomeProgressSubclass()) # Connecting to perforce p4.connect(), потому что получил ошибку AttributeError: type object 'P4' has no attribute 'Progress', но когда я запустил то, что у меня выше, я получил ошибку AttributeError: using_progress - person Goose; 22.03.2017
comment
Убедитесь, что вы используете последнюю версию P4Python; метод using_progress относительно новый. - person Samwise; 22.03.2017
comment
Он говорит, что он уже обновлен. Имеет ли значение, чем я использую python 2.7? - person Goose; 23.03.2017
comment
Не уверен, что он говорит, что он уже обновлен. Вы также можете просто попробовать установить p4.progress = YourProgressClass() -- в документе есть упоминание о using_progress(), но я не вижу никакой другой документации по нему, так что, возможно, это ошибка документа. - person Samwise; 23.03.2017
comment
Извините, я имел в виду, что pip указал, что он обновлен. Я также установил его всего пару месяцев назад, поэтому он должен быть обновлен. Я попробовал то, что вы предложили, и мне сказали, что нет функции вызова. Когда я добавляю один, он делает только то, что я помещаю в функцию. - person Goose; 23.03.2017
comment
Ах, ладно, я на самом деле не уверен, какая версия pip будет установлена, поэтому стоит дважды проверить это (последняя версия в соответствии с документами — 2014.1, хотя я также не уверен, как вы будете проверять версию P4Python, если ты не сам его устанавливал) Я предполагаю, что класс Progress есть в вашей версии, поскольку в противном случае у вас была бы ошибка при импорте? Понятия не имею об ошибке call, могло бы помочь, если бы я знал кое-что из контекста, но теперь мы довольно далеко от исходного вопроса. :) - person Samwise; 23.03.2017
comment
Спасибо за помощь! - person Goose; 28.03.2017