From e15842fe7ce2a617cf1c39a27d5027e83944e61e Mon Sep 17 00:00:00 2001 From: Mike Khiretskiy Date: Tue, 7 Apr 2015 10:15:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D1=82=D0=B0=D0=B4=D0=B8=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=B1=D0=B8=D0=BD=D0=B0=D1=80=D0=BD=D1=8B=D1=85=20=D0=BF=D0=B0?= =?UTF-8?q?=D0=BA=D0=B5=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pym/update/emerge_parser.py | 9 ++++++++- pym/update/update.py | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/pym/update/emerge_parser.py b/pym/update/emerge_parser.py index 50520fc..1cafe04 100644 --- a/pym/update/emerge_parser.py +++ b/pym/update/emerge_parser.py @@ -377,6 +377,13 @@ class NotifierInformationBlock(EmergeInformationBlock): def add_observer(self, f): self.observers.append(f) + def clear_observers(self): + self.observers = [] + + def remove_observer(self, f): + if f in self.observers: + self.observers.remove(f) + def notify(self, observer, groups): observer(groups) @@ -425,7 +432,7 @@ class FetchingTarball(NotifierInformationBlock): Происходит скачивание архивов """ token = "Saving to:" - re_block = re.compile("Saving to:\s*‘(\S+)?’") + re_block = re.compile("Saving to:\s*[‘'](\S+)?['’]") def notify(self, observer, groups): observer(groups[0]) diff --git a/pym/update/update.py b/pym/update/update.py index c28bf6d..3c92c7e 100644 --- a/pym/update/update.py +++ b/pym/update/update.py @@ -528,7 +528,6 @@ class Update(object): self.endTask() self.startTask(_("Fetching binary packages")) - def _printUninstallPackage(self, pkg, num=1, max_num=1): """ Вывод сообщения удаления пакета @@ -791,6 +790,9 @@ class Update(object): emerge.installing.add_observer(self._printInstallPackage) emerge.uninstalling.add_observer(self._printUninstallPackage) emerge.fetching.add_observer(self._printFetching) + def cancel_observing_fetch(fn): + emerge.fetching.clear_observers() + emerge.fetching.add_observer(cancel_observing_fetch) try: emerge.run() except EmergeError: