On Mon,  1 Feb 2016 09:39:16 -0800
Zac Medico <zmed...@gentoo.org> wrote:

> Handle UnicodeDecodeError from the input function in python3, and from
> comparisons with unicode literals in python2.
> 
> X-Gentoo-Bug:     573386
> X-Gentoo-Bug-url: https://bugs.gentoo.org/show_bug.cgi?id=573386
> ---
>  pym/_emerge/UserQuery.py | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/pym/_emerge/UserQuery.py b/pym/_emerge/UserQuery.py
> index c866a0d..f8fce77 100644
> --- a/pym/_emerge/UserQuery.py
> +++ b/pym/_emerge/UserQuery.py
> @@ -1,11 +1,12 @@
> -# Copyright 1999-2014 Gentoo Foundation
> +# Copyright 1999-2016 Gentoo Foundation
>  # Distributed under the terms of the GNU General Public License v2
>  
> -from __future__ import print_function
> +from __future__ import print_function, unicode_literals
>  
>  import signal
>  import sys
>  
> +from portage import _unicode_decode
>  from portage.output import bold, create_color_func
>  
>  
> @@ -47,18 +48,24 @@ class UserQuery(object):
>               elif colours is None:
>                       colours=[bold]
>               colours=(colours*len(responses))[:len(responses)]
> +             responses = [_unicode_decode(x) for x in responses]
>               if "--alert" in self.myopts:
>                       prompt = '\a' + prompt
>               print(bold(prompt), end=' ')
>               try:
>                       while True:
>                               if sys.hexversion >= 0x3000000:
> -
> response=input("["+"/".join([colours[i](responses[i])
> -
> for i in range(len(responses))])+"] ")
> +                                     try:
> +                                             response =
> input("[%s] " %
> +                                                     
> "/".join([colours[i](responses[i])
> +                                                     for i in
> range(len(responses))]))
> +                                     except UnicodeDecodeError:
> +                                             response = None
>                               else:
>                                       
> response=raw_input("["+"/".join([colours[i](responses[i])
>                                                                         for
> i in range(len(responses))])+"] ")
> -                             if response or not enter_invalid:
> +                                     response =
> _unicode_decode(response)
> +                             if response or (not enter_invalid
> and response == ''): for key in responses:
>                                               # An empty response
> will match the # first value in responses.

this looks good to me :)

Thank you

-- 
Brian Dolbec <dolsen>


Reply via email to