[PATCH 4 of 6] ui: log devel warnings

Yuya Nishihara yuya at tcha.org
Thu Mar 3 08:05:15 EST 2016


On Tue, 01 Mar 2016 05:51:46 -0600, timeless wrote:
> # HG changeset patch
> # User timeless <timeless at mozdev.org>
> # Date 1454078236 0
> #      Fri Jan 29 14:37:16 2016 +0000
> # Node ID b7684e135b04f0549a094c542ec934ff82690c04
> # Parent  c30da8f7af8b18641911c972197e69a2a2aa46d8
> ui: log devel warnings
> 
> This makes it easier for the blackbox extension to log
> what is happening.
> 
> diff --git a/mercurial/ui.py b/mercurial/ui.py
> --- a/mercurial/ui.py
> +++ b/mercurial/ui.py
> @@ -89,6 +89,17 @@
>  # pager =""",
>  }
>  
> +class uilogasfile(object):
> +    """ shim to present a file-like object and map output to ui.log
> +    """
> +    def __init__(self, ui, service='develwarn'):
> +        def write(msg):
> +            ui.log(service, msg)

It should be (service, "%s", msg) because "msg" is a format string.

> +        def flush():
> +            ui.flush()
> +        self.write = write
> +        self.flush = flush
> +
>  class ui(object):
>      def __init__(self, src=None):
>          # _buffers: used for temporary capture of output
> @@ -1069,11 +1080,14 @@
>          stacklevel += 1 # get in develwarn
>          if self.tracebackflag:
>              util.debugstacktrace(msg, stacklevel, self.ferr, self.fout)
> +            util.debugstacktrace(msg, stacklevel, uilogasfile(self))

Instead of mocking up a file object, you can factor out a function that
returns a list of pretty-formatted traceback lines.


More information about the Mercurial-devel mailing list