update to use python3 by default

Set tox to use python3 as the base python so that all of the
environments default to python3. Fix various issues with code associated
with the change to make it work under python 3.

Change-Id: I29f9514f83aa97740e55adddaeff76d0800135bc
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
Doug Hellmann 2017-03-15 17:04:47 -04:00
parent 4bf3da91a6
commit 446fc28df7
8 changed files with 38 additions and 36 deletions

View File

@ -55,9 +55,9 @@ class ExtraATCsTable(tables.Table):
try:
col_widths = self.get_column_widths(len(self.HEADERS))
title, messages = self.make_title()
except SystemMessagePropagation, detail:
except SystemMessagePropagation as detail:
return [detail.args[0]]
except Exception, err:
except Exception as err:
error = self.state_machine.reporter.error(
'Error processing memberstable directive:\n%s' % err,
nodes.literal_block(self.block_text, self.block_text),
@ -125,7 +125,7 @@ class ExtraATCsTable(tables.Table):
# in re match group with empty string.
cell = row.get(self.HEADER_MAP[h]) or ''
entry = nodes.entry()
para = nodes.paragraph(text=unicode(cell))
para = nodes.paragraph(text=str(cell))
entry += para
trow += entry
rows.append(trow)

View File

@ -15,7 +15,8 @@ Generate badges for the projects
"""
import os
from itertools import chain, izip_longest
from itertools import chain
from itertools import zip_longest
from PIL import ImageFont
@ -124,14 +125,14 @@ def _organize_badges(badges):
sbadges = sorted(badges, key=lambda badge: badge['width'])
# NOTE(flaper87): 4 is the number of columns
ziped = list(izip_longest(*(iter(sbadges),) * 4))
ziped = list(zip_longest(*(iter(sbadges),) * 4))
result = []
for y, group in enumerate(ziped):
result.append([])
col_x = 0
for x, badge in enumerate(group):
# NOTE(flaper87): izip_longest fills the
# NOTE(flaper87): zip_longest fills the
# empty slots with None. We don't care about
# those.
if badge is None:
@ -156,7 +157,7 @@ def _organize_badges(badges):
def _to_svg(badges):
for badge in badges:
yield FLAT_BADGE_TEMPLATE.format(**badge).encode('utf-8')
yield FLAT_BADGE_TEMPLATE.format(**badge)
def _generate_teams_badges(app):
@ -169,8 +170,8 @@ def _generate_teams_badges(app):
filename = os.path.join(badges_dir, 'project-unofficial.svg')
svg_data = _generate_badge('project', 'unofficial', colorscheme='red')
svg = FLAT_BADGE_TEMPLATE.format(**svg_data).encode('utf-8')
with open(filename, 'w') as f:
svg = FLAT_BADGE_TEMPLATE.format(**svg_data)
with open(filename, 'w', encoding='utf-8') as f:
f.write(SVG_ROOT.format(height=20, width=106, svg=svg))
files.append(filename)

View File

@ -77,9 +77,9 @@ class MembersTable(tables.Table):
try:
col_widths = self.get_column_widths(len(self.HEADERS))
title, messages = self.make_title()
except SystemMessagePropagation, detail:
except SystemMessagePropagation as detail:
return [detail.args[0]]
except Exception, err:
except Exception as err:
error = self.state_machine.reporter.error(
'Error processing memberstable directive:\n%s' % err,
nodes.literal_block(self.block_text, self.block_text),
@ -138,7 +138,7 @@ class MembersTable(tables.Table):
# in re match group with empty string.
cell = row.get(self.HEADER_MAP[h]) or ''
entry = nodes.entry()
para = nodes.paragraph(text=unicode(cell))
para = nodes.paragraph(text=str(cell))
entry += para
trow += entry
rows.append(trow)

View File

@ -37,5 +37,5 @@ def setup(app):
filename = os.path.abspath('reference/projects.yaml')
app.info('reading %s' % filename)
with open(filename, 'r') as f:
_projects_yaml = yaml.safe_load(f.read().decode('utf-8'))
with open(filename, 'r', encoding='utf-8') as f:
_projects_yaml = yaml.safe_load(f.read())

View File

@ -111,8 +111,8 @@ def _write_team_pages(app):
slug = projects.slugify(team)
filename = 'reference/projects/%s.rst' % slug
app.info('generating team page for %s' % team)
with open(filename, 'w') as f:
f.write('\n'.join(_team_to_rst(team, info)).encode('utf-8'))
with open(filename, 'w', encoding='utf-8') as f:
f.write('\n'.join(_team_to_rst(team, info)))
files.append(filename)
return files

View File

@ -21,7 +21,7 @@ with open('defcore.csv', 'r') as infile:
# Add the spreadsheet row numbers
for i, row in enumerate(rows, 3):
row.insert(0, str(i))
print rows[0]
print(rows[0])
rows[0][0] = 'Row'
# Candidate Capabilities,TC Future Direction,Complete,Stable
@ -33,9 +33,9 @@ with open('defcore.csv', 'r') as infile:
header = ' '.join('=' * wid for wid in widths)
print header
print fmt.format(*rows[0])
print header
print(header)
print(fmt.format(*rows[0]))
print(header)
for row in rows[1:]:
print fmt.format(*row)
print header
print(fmt.format(*row))
print(header)

View File

@ -155,7 +155,7 @@ def get_diversity_stats(project):
team_stats['reviews_top2'] = (
(float(sum(top2)) / reviews_total * 100) if reviews_total else 0)
core_review_values = [company['reviews'] for company in
core_reviews_by_company.itervalues()]
core_reviews_by_company.values()]
if len(core_review_values) == 1:
core_review_values = [core_review_values[0], 0]
core_review_values.sort(reverse=True)
@ -167,7 +167,7 @@ def get_diversity_stats(project):
((float(core_review_values[0]) + float(core_review_values[1])) /
core_reviews_total * 100) if core_reviews_total else 0)
core_reviewers_values = [company['reviewers'] for company in
core_reviews_by_company.itervalues()]
core_reviews_by_company.values()]
if len(core_reviewers_values) == 1:
core_reviewers_values = [core_reviewers_values[0], 0]
core_reviewers_values.sort(reverse=True)
@ -210,19 +210,19 @@ def is_single_vendor(team):
def print_diversity(team):
team_stats = get_diversity_stats(team)
print '%-18s (%.2f%% | %.2f%% | %.2f%% | %.2f%%)' % (
print('%-18s (%.2f%% | %.2f%% | %.2f%% | %.2f%%)' % (
team, team_stats['commits_top'], team_stats['reviews_top'],
team_stats['core_reviews_top'], team_stats['core_reviewers_top'])
print '%-18s (%.2f%% | %.2f%% | %.2f%% | %.2f%%)' % (
team_stats['core_reviews_top'], team_stats['core_reviewers_top']))
print('%-18s (%.2f%% | %.2f%% | %.2f%% | %.2f%%)' % (
'', team_stats['commits_top2'], team_stats['reviews_top2'],
team_stats['core_reviews_top2'], team_stats['core_reviewers_top2'])
team_stats['core_reviews_top2'], team_stats['core_reviewers_top2']))
def print_team_size(team):
team_stats = get_team_size_stats(team)
print '%-18s (%6s | %6s)' % (
print('%-18s (%6s | %6s)' % (
'', team_stats['active_committers'],
team_stats['active_reviewers'])
team_stats['active_reviewers']))
class ValidateDiversity(base.ValidatorBase):
@ -254,11 +254,11 @@ def main():
with open(filename, 'r') as f:
projects = [k for k in yaml.safe_load(f.read())]
projects.sort()
print '<Team> (top commit % | top review % | top core review % | ' \
'top core reviewer %)'
print ' (top 2 commit % | top 2 review % | top 2 core review % | ' \
'top 2 core reviewer %)'
print ' (active committers | active reviewers)'
print('<Team> (top commit % | top review % | top core review % | '
'top core reviewer %)')
print(' (top 2 commit % | top 2 review % | top 2 core review % | '
'top 2 core reviewer %)')
print(' (active committers | active reviewers)')
for project in projects:
print_diversity(project)
print_team_size(project)

View File

@ -4,6 +4,7 @@ minversion = 1.6
skipsdist = True
[testenv]
basepython = python3
usedevelop = True
install_command = pip install -U {opts} {packages}
setenv = VIRTUAL_ENV={envdir}
@ -24,4 +25,4 @@ commands = {posargs}
commands = python setup.py build_sphinx
[testenv:validate]
commands = python tools/validate_tags.py
commands = python3 tools/validate_tags.py