From c7ab7c567792bafddc61fff003910df159aea7a5 Mon Sep 17 00:00:00 2001 From: Colleen Murphy Date: Mon, 17 Apr 2017 07:38:04 +0200 Subject: [PATCH] Fix doc generation for python 3 1. The html_last_updated_fmt sphinx setting was providing a byte string where sphinx expected a str, which produced warnings (and therefore failures): WARNING: The config value `html_last_updated_fmt' has type `bytes', expected to ['str']. The solution provided is copied from cinder's solution[1]. 2. The .keys() method in python 3 returns a dict_keys object rather than a list and it does not include a .sort() method. This patch swaps .sort() out for the global function sorted() which works in both python 2 and python 3. This came up because on some newer distros that don't install python 2 by default, virtualenv defaults to creating a python 3 environment when none is specified. [1] https://review.openstack.org/#/c/433081 Change-Id: I68b796fa2e33fd6c3df67b542def31e6ba620944 --- api-ref/source/conf.py | 4 ++-- doc/ext/support_matrix.py | 6 ++---- doc/source/conf.py | 4 ++-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/api-ref/source/conf.py b/api-ref/source/conf.py index 0e19482061..e201186672 100644 --- a/api-ref/source/conf.py +++ b/api-ref/source/conf.py @@ -171,8 +171,8 @@ pygments_style = 'sphinx' git_cmd = ["git", "log", "--pretty=format:'%ad, commit %h'", "--date=local", "-n1"] try: - html_last_updated_fmt = subprocess.Popen( - git_cmd, stdout=subprocess.PIPE).communicate()[0] + html_last_updated_fmt = subprocess.check_output( + git_cmd).decode('utf-8') except Exception: warnings.warn('Cannot get last updated time from git repository. ' 'Not setting "html_last_updated_fmt".') diff --git a/doc/ext/support_matrix.py b/doc/ext/support_matrix.py index c7e14046cd..c7e53fc13b 100644 --- a/doc/ext/support_matrix.py +++ b/doc/ext/support_matrix.py @@ -319,8 +319,7 @@ class SupportMatrixDirective(rst.Directive): summaryhead.append(header) # then one column for each hypervisor driver - impls = matrix.targets.keys() - impls.sort() + impls = sorted(matrix.targets.keys()) for key in impls: target = matrix.targets[key] implcol = nodes.entry() @@ -352,8 +351,7 @@ class SupportMatrixDirective(rst.Directive): classes=["sp_feature_" + feature.status])) # and then one column for each hypervisor driver - impls = matrix.targets.keys() - impls.sort() + impls = sorted(matrix.targets.keys()) for key in impls: target = matrix.targets[key] impl = feature.implementations[key] diff --git a/doc/source/conf.py b/doc/source/conf.py index 755652e93f..6cf48b5729 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -167,8 +167,8 @@ html_static_path = ['_static'] git_cmd = ["git", "log", "--pretty=format:'%ad, commit %h'", "--date=local", "-n1"] try: - html_last_updated_fmt = subprocess.Popen( - git_cmd, stdout=subprocess.PIPE).communicate()[0] + html_last_updated_fmt = subprocess.check_output( + git_cmd).decode('utf-8') except Exception: warnings.warn('Cannot get last updated time from git repository. ' 'Not setting "html_last_updated_fmt".')