[Yum-devel] [PATCH 1/2] add a way to run yum inside pdb like we do with the profiler and capture the keyboardinterrupt in sys.excepthook

Tim Lauridsen tim.lauridsen at googlemail.com
Fri Sep 18 06:41:25 UTC 2009


On 09/17/2009 10:05 PM, Seth Vidal wrote:
> pdb is just handy sometimes
> sys.excepthook keeps urlgrabber/yum from spewing crap across the screen when someone hits ctrl-c
> ---
>   yummain.py |   18 ++++++++++++++++++
>   1 files changed, 18 insertions(+), 0 deletions(-)
>
> diff --git a/yummain.py b/yummain.py
> index 964975b..029a0ad 100755
> --- a/yummain.py
> +++ b/yummain.py
> @@ -31,6 +31,18 @@ from yum import _
>   from yum.i18n import to_unicode
>   import yum.misc
>   import cli
> +import exceptions
> +
> +def suppress_keyboard_interrupt_message():
> +    old_excepthook = sys.excepthook
> +
> +    def new_hook(type, value, traceback):
> +        if type != exceptions.KeyboardInterrupt:
> +            old_excepthook(type, value, traceback)
> +        else:
> +            pass
> +
> +    sys.excepthook = new_hook
>
>
>   def main(args):
> @@ -307,12 +319,18 @@ def user_main(args, exit_code=False):
>               errcode = cprof(main, args)
>           if os.environ['YUM_PROF'] == 'hotshot':
>               errcode = hotshot(main, args)
> +    if 'YUM_PDB' in os.environ:
> +        import pdb
> +        pdb.run(main(args))
> +
>       if errcode is None:
>           errcode = main(args)
>       if exit_code:
>           sys.exit(errcode)
>       return errcode
>
> +suppress_keyboard_interrupt_message()
> +
>   if __name__ == "__main__":
>       try:
>           user_main(sys.argv[1:], exit_code=True)

ACK

Tim


More information about the Yum-devel mailing list