From 661d21354f428a86917544587471a0ff6f440c5e Mon Sep 17 00:00:00 2001 From: Anthony Johnson Date: Mon, 19 Mar 2018 20:04:43 -0600 Subject: [PATCH 1/2] Autolint cleanup for #3821 Pre PR autolinting --- .isort.cfg | 2 +- readthedocs/vcs_support/backends/git.py | 46 ++++++++++++++++--------- readthedocs/vcs_support/base.py | 13 +++---- 3 files changed, 38 insertions(+), 23 deletions(-) diff --git a/.isort.cfg b/.isort.cfg index d619e783262..dd10132b6b1 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -4,6 +4,6 @@ indent=' ' multi_line_output=4 default_section=THIRDPARTY known_first_party=readthedocs,readthedocsinc -known_third_party=mock +known_third_party=mock,builtins sections=FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER add_imports=from __future__ import division, from __future__ import print_function, from __future__ import unicode_literals diff --git a/readthedocs/vcs_support/backends/git.py b/readthedocs/vcs_support/backends/git.py index afb1d7ed6e3..071fe9cb92c 100644 --- a/readthedocs/vcs_support/backends/git.py +++ b/readthedocs/vcs_support/backends/git.py @@ -1,6 +1,8 @@ +# -*- coding: utf-8 -*- """Git-related utilities.""" -from __future__ import absolute_import +from __future__ import ( + absolute_import, division, print_function, unicode_literals) import csv import logging @@ -13,7 +15,6 @@ from readthedocs.projects.exceptions import RepositoryError from readthedocs.vcs_support.base import BaseVCS, VCSVersion - log = logging.getLogger(__name__) @@ -39,9 +40,8 @@ def _get_clone_url(self): clone_url = 'https://%s@%s' % (self.token, hacked_url) return clone_url # Don't edit URL because all hosts aren't the same - # else: - # clone_url = 'git://%s' % (hacked_url) + # clone_url = 'git://%s' % (hacked_url) return self.repo_url def set_remote_url(self, url): @@ -69,22 +69,24 @@ def checkout_revision(self, revision=None): branch = self.default_branch or self.fallback_branch revision = 'origin/%s' % branch - code, out, err = self.run( - 'git', 'checkout', '--force', revision) + code, out, err = self.run('git', 'checkout', '--force', revision) if code != 0: - log.warning("Failed to checkout revision '%s': %s", - revision, code) + log.warning("Failed to checkout revision '%s': %s", revision, code) return [code, out, err] def clone(self): - code, _, _ = self.run( - 'git', 'clone', '--recursive', self.repo_url, '.') + code, _, _ = self.run('git', 'clone', '--recursive', self.repo_url, '.') if code != 0: raise RepositoryError @property def tags(self): - retcode, stdout, _ = self.run('git', 'show-ref', '--tags', record_as_success=True) + retcode, stdout, _ = self.run( + 'git', + 'show-ref', + '--tags', + record_as_success=True, + ) # error (or no tags found) if retcode != 0: return [] @@ -122,7 +124,12 @@ def parse_tags(self, data): @property def branches(self): # Only show remote branches - retcode, stdout, _ = self.run('git', 'branch', '-r', record_as_success=True) + retcode, stdout, _ = self.run( + 'git', + 'branch', + '-r', + record_as_success=True, + ) # error (or no branches found) if retcode != 0: return [] @@ -130,7 +137,7 @@ def branches(self): def parse_branches(self, data): """ - Parse output of git branch -r + Parse output of git branch -r. e.g.: @@ -155,7 +162,8 @@ def parse_branches(self, data): verbose_name = branch.replace('origin/', '') if verbose_name in ['HEAD']: continue - clean_branches.append(VCSVersion(self, branch, verbose_name)) + clean_branches.append( + VCSVersion(self, branch, verbose_name)) else: clean_branches.append(VCSVersion(self, branch, branch)) return clean_branches @@ -193,8 +201,14 @@ def checkout(self, identifier=None): # Update submodules if self.submodules_exists(): self.run('git', 'submodule', 'sync') - self.run('git', 'submodule', 'update', - '--init', '--recursive', '--force') + self.run( + 'git', + 'submodule', + 'update', + '--init', + '--recursive', + '--force', + ) return code, out, err diff --git a/readthedocs/vcs_support/base.py b/readthedocs/vcs_support/base.py index 9a623fcc1a2..e7acc1b8e2f 100644 --- a/readthedocs/vcs_support/base.py +++ b/readthedocs/vcs_support/base.py @@ -1,12 +1,13 @@ # -*- coding: utf-8 -*- - """Base classes for VCS backends.""" -from __future__ import absolute_import -from builtins import object +from __future__ import ( + absolute_import, division, print_function, unicode_literals) + import logging import os import shutil +from builtins import object log = logging.getLogger(__name__) @@ -28,8 +29,8 @@ def __init__(self, repository, identifier, verbose_name): self.verbose_name = verbose_name def __repr__(self): - return " Date: Mon, 19 Mar 2018 22:18:51 -0600 Subject: [PATCH 2/2] =?UTF-8?q?Fix=20unicode=20issue=20=F0=9F=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readthedocs/vcs_support/backends/git.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/readthedocs/vcs_support/backends/git.py b/readthedocs/vcs_support/backends/git.py index 071fe9cb92c..5e8a9242d7c 100644 --- a/readthedocs/vcs_support/backends/git.py +++ b/readthedocs/vcs_support/backends/git.py @@ -9,8 +9,7 @@ import os import re -from builtins import str -from six import StringIO +from six import PY2, StringIO from readthedocs.projects.exceptions import RepositoryError from readthedocs.vcs_support.base import BaseVCS, VCSVersion @@ -110,7 +109,8 @@ def parse_tags(self, data): # StringIO below is expecting Unicode data, so ensure that it gets it. if not isinstance(data, str): data = str(data) - raw_tags = csv.reader(StringIO(data), delimiter=' ') + delimiter = str(' ').encode('utf-8') if PY2 else str(' ') + raw_tags = csv.reader(StringIO(data), delimiter=delimiter) vcs_tags = [] for row in raw_tags: row = [f for f in row if f != ''] @@ -152,7 +152,8 @@ def parse_branches(self, data): # StringIO below is expecting Unicode data, so ensure that it gets it. if not isinstance(data, str): data = str(data) - raw_branches = csv.reader(StringIO(data), delimiter=' ') + delimiter = str(' ').encode('utf-8') if PY2 else str(' ') + raw_branches = csv.reader(StringIO(data), delimiter=delimiter) for branch in raw_branches: branch = [f for f in branch if f != '' and f != '*'] # Handle empty branches