Mercurial > hg > mercurial-source
changeset 26034:7a5335ed7e1a
progress: move the singleton logic to the ui module
The use of a singleton for all of progress handling is debatable (because
config may vary). However this is how the extension has been doing it so far.
We move that code into the ui module because this is where is should belong when
progress is moved into core.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Sun, 07 Jun 2015 17:26:34 -0700 |
parents | 93b8b0049932 |
children | 0fa964d6fd48 |
files | hgext/progress.py mercurial/ui.py tests/test-module-imports.t |
diffstat | 3 files changed, 16 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/progress.py +++ b/hgext/progress.py @@ -36,11 +36,9 @@ """ from mercurial import progress - -_singleton = None +from mercurial import ui as uimod def uisetup(ui): - global _singleton class progressui(ui.__class__): _progbar = None @@ -73,9 +71,7 @@ # we instantiate one globally-shared progress bar to avoid # competing progress bars when multiple UI objects get created if not progressui._progbar: - if _singleton is None: - _singleton = progress.progbar(ui) - progressui._progbar = _singleton + progressui._progbar = uimod.getprogbar(ui) def reposetup(ui, repo): uisetup(repo.ui)
--- a/mercurial/ui.py +++ b/mercurial/ui.py @@ -7,7 +7,7 @@ from i18n import _ import errno, getpass, os, socket, sys, tempfile, traceback -import config, scmutil, util, error, formatter +import config, scmutil, util, error, formatter, progress from node import hex samplehgrcs = { @@ -983,3 +983,15 @@ self.name = name # We'll do more intelligent things with rawloc in the future. self.loc = rawloc + +# we instantiate one globally shared progress bar to avoid +# competing progress bars when multiple UI objects get created +_progresssingleton = None + +def getprogbar(ui): + global _progresssingleton + if _progresssingleton is None: + # passing 'ui' object to the singleton is fishy, + # this is how the extension used to work but feel free to rework it. + _progresssingleton = progress.progbar(ui) + return _progresssingleton
--- a/tests/test-module-imports.t +++ b/tests/test-module-imports.t @@ -31,7 +31,7 @@ relative: config, error, templatefilters, templatekw, util mercurial/ui.py mixed imports stdlib: formatter - relative: config, error, scmutil, util + relative: config, error, progress, scmutil, util Import cycle: mercurial.cmdutil -> mercurial.context -> mercurial.subrepo -> mercurial.cmdutil Import cycle: hgext.largefiles.basestore -> hgext.largefiles.localstore -> hgext.largefiles.basestore Import cycle: mercurial.commands -> mercurial.commandserver -> mercurial.dispatch -> mercurial.commands