Browse Source

port reportbug.ui.text_ui to py3k

tags/7.0.0
Sandro Tosi 4 years ago
parent
commit
fde747672f
2 changed files with 32 additions and 31 deletions
  1. +28
    -27
      reportbug/ui/text_ui.py
  2. +4
    -4
      test/test_ui.py

+ 28
- 27
reportbug/ui/text_ui.py View File

@@ -21,7 +21,7 @@

import sys
import os
import commands
import subprocess
import re
import math
import string
@@ -30,6 +30,7 @@ import glob
import getpass
import textwrap
import locale
from functools import reduce
try:
import readline
except ImportError:
@@ -47,7 +48,7 @@ ISATTY = sys.stdin.isatty()
charset = 'us-ascii'

try:
r, c = commands.getoutput('stty size').split()
r, c = subprocess.getoutput('stty size').split()
rows, columns = int(r) or 24, int(c) or 79
except:
rows, columns = 24, 79
@@ -60,7 +61,7 @@ def ewrite(message, *args):
if args:
message = message % args

if isinstance(message, unicode):
if isinstance(message, str):
message = message.encode(charset, 'replace')

sys.stderr.write(message)
@@ -152,9 +153,9 @@ def our_raw_input(prompt=None, completions=None, completer=None):

try:
if istty:
ret = raw_input(prompt)
ret = eval(input(prompt))
else:
ret = raw_input()
ret = eval(input())
except EOFError:
ewrite('\nUser interrupt (^D).\n')
raise SystemExit
@@ -268,8 +269,8 @@ def get_string(prompt, options=None, title=None, empty_ok=False, force_prompt=Fa
response = our_raw_input('> ', options, completer)

# Translate the response into a Unicode string
if response is not None and not isinstance(response, unicode):
response = unicode(response, charset, 'replace')
if response is not None and not isinstance(response, str):
response = str(response, charset, 'replace')

return response

@@ -342,13 +343,13 @@ def menu(par, options, prompt, default=None, title=None, any_ok=False,
del options[key]

# Append anything out of order
options = options.items()
options = list(options.items())
options.sort()
for option in options:
olist.append(option)
options = olist
else:
options = options.items()
options = list(options.items())
options.sort()

if multiple:
@@ -356,10 +357,10 @@ def menu(par, options, prompt, default=None, title=None, any_ok=False,
default = 'none'
extras += ['done']

allowed = map(lambda x: x[0], options)
allowed = [x[0] for x in options]
allowed = allowed + extras

maxlen_name = min(max(map(len, allowed)), columns / 3)
maxlen_name = min(max(list(map(len, allowed))), columns / 3)
digits = int(math.ceil(math.log10(len(options) + 1)))

i = 1
@@ -396,14 +397,14 @@ def menu(par, options, prompt, default=None, title=None, any_ok=False,
if response in allowed or (response == default and response):
if multiple:
if response == 'done':
return selected.keys()
return list(selected.keys())
elif response == 'none':
return []
elif selected.get(response):
del selected[response]
else:
selected[response] = 1
ewrite('- selected: %s\n' % ', '.join(selected.keys()))
ewrite('- selected: %s\n' % ', '.join(list(selected.keys())))
if len(selected):
default = 'done'
else:
@@ -461,7 +462,7 @@ def show_report(number, system, mirrors,
try:
fd.write(text)
fd.close()
except IOError, x:
except IOError as x:
if x.errno == errno.EPIPE:
pass
else:
@@ -484,7 +485,7 @@ def show_report(number, system, mirrors,
'e': 'Launch e-mail client to read full log.',
'b': 'Launch web browser to read full log.',
'q': "I'm bored; quit please."},
allow_numbers=range(1, len(messages) + 1))
allow_numbers=list(range(1, len(messages) + 1)))
if x == 'x':
return buginfo
elif x == 'q':
@@ -521,7 +522,7 @@ def handle_bts_query(package, bts, timeout, mirrors=None, http_proxy="",
if source:
srcstr = " (source)"

if isinstance(package, basestring):
if isinstance(package, str):
long_message('Querying %s BTS for reports on %s%s...\n',
debbugs.SYSTEMS[bts]['name'], package, srcstr)
else:
@@ -534,7 +535,7 @@ def handle_bts_query(package, bts, timeout, mirrors=None, http_proxy="",
(count, title, hierarchy) = debbugs.get_reports(
package, timeout, bts, mirrors=mirrors, version=version,
source=source, http_proxy=http_proxy, archived=archived)
except Exception, e:
except Exception as e:
ewrite('Unable to connect to %s BTS (error: "%s"); ' % (debbugs.SYSTEMS[bts]['name'], repr(e)))
res = select_options('continue', 'yN',
{'y': 'Keep going.',
@@ -567,7 +568,7 @@ def handle_bts_query(package, bts, timeout, mirrors=None, http_proxy="",
for bug in entry[1]:
msg = "#%d %s" % (bug.bug_num, bug.subject)
msg = msg.encode(charset, 'replace')
print msg
print(msg)
sys.exit(0)

for entry in hierarchy:
@@ -589,7 +590,7 @@ def handle_bts_query(package, bts, timeout, mirrors=None, http_proxy="",
# and at the same time create a list of bugs numbers
bugs_numbers.append(bug.bug_num)
# then we sort both the lists
hierarchy_new.append((entry_new, ["#%d %s" % (k, bugs_new[k]) for k in sorted(bugs_new.keys(), reverse=latest_first)]))
hierarchy_new.append((entry_new, ["#%d %s" % (k, bugs_new[k]) for k in sorted(list(bugs_new.keys()), reverse=latest_first)]))
bugs.extend(sorted(bugs_numbers, reverse=latest_first))

# replace old hierarchy with hierarchy_new
@@ -618,8 +619,8 @@ def browse_bugs(hierarchy, count, bugs, bts, queryonly, mirrors,
http_proxy, timeout, screen, title, package, mbox_reader_cmd):
try:
output_encoding = locale.getpreferredencoding()
except locale.Error, msg:
print msg
except locale.Error as msg:
print(msg)
sys.exit(1)
endcount = catcount = 0
scount = startcount = 1
@@ -671,7 +672,7 @@ def browse_bugs(hierarchy, count, bugs, bts, queryonly, mirrors,
pstr = rstr + "Is the bug you found listed above"
if queryonly:
pstr = rstr + "What would you like to do next"
allowed = bugs + range(1, count + 1)
allowed = bugs + list(range(1, count + 1))
helptext = {
'y': 'Problem already reported; optionally add extra information.',
'n': 'Problem not listed above; possibly check more.',
@@ -731,7 +732,7 @@ def browse_bugs(hierarchy, count, bugs, bts, queryonly, mirrors,
# Do filter. Recursive done.
retval = search_bugs(hierarchy, bts, queryonly, mirrors, http_proxy, timeout, screen, title,
package, mbox_reader_cmd)
if isinstance(retval, basestring) and retval in ["FilterEnd", "Top"]:
if isinstance(retval, str) and retval in ["FilterEnd", "Top"]:
continue
else:
return retval
@@ -812,8 +813,8 @@ def search_bugs(hierarchyfull, bts, queryonly, mirrors,

try:
output_encoding = locale.getpreferredencoding()
except locale.Error, msg:
print msg
except locale.Error as msg:
print(msg)
sys.exit(1)

pattern = our_raw_input('Enter the search pattern (a Perl-compatible regular expression)\n'
@@ -888,7 +889,7 @@ def search_bugs(hierarchyfull, bts, queryonly, mirrors,
pstr = rstr + "Is the bug you found listed above"
if queryonly:
pstr = rstr + "What would you like to do next"
allowed = bugs + range(1, count + 1)
allowed = bugs + list(range(1, count + 1))
helptext = {
'y': 'Problem already reported; optionally add extra information.',
'n': 'Problem not listed above; possibly check more.',
@@ -949,7 +950,7 @@ def search_bugs(hierarchyfull, bts, queryonly, mirrors,
# Do filter. Recursive done.
retval = search_bugs(hierarchy, bts, queryonly, mirrors, http_proxy, timeout, screen,
title, package, mbox_reader_cmd)
if isinstance(retval, basestring) and retval in ["FilterEnd", "Top"]:
if isinstance(retval, str) and retval in ["FilterEnd", "Top"]:
continue
else:
return retval


+ 4
- 4
test/test_ui.py View File

@@ -1,19 +1,19 @@
""" Unit test for reportbug.ui module """

import unittest2
import unittest

from reportbug import utils
from reportbug import ui
from reportbug.ui import __LOADED_UIS as LOADED_UIS


class TestUI(unittest2.TestCase):
class TestUI(unittest.TestCase):

def test_ui(self):
self.assertItemsEqual(ui.AVAILABLE_UIS, ['text', 'urwid', 'gtk2'])
self.assertCountEqual(ui.AVAILABLE_UIS, ['text', 'urwid', 'gtk2'])

def test_getUI(self):
for loaded_ui in LOADED_UIS.keys():
for loaded_ui in list(LOADED_UIS.keys()):
self.assertEqual(ui.getUI(loaded_ui), LOADED_UIS[loaded_ui])

self.assertEqual(ui.getUI('non-existing'), LOADED_UIS['text'])

Loading…
Cancel
Save