From d92af06f229376fa2d85a104e641d1326d975e58 Mon Sep 17 00:00:00 2001 From: Hugo Date: Mon, 4 Dec 2017 17:20:07 +0200 Subject: [PATCH 1/3] Fix flake8 --- .gitignore | 1 + git/compat.py | 2 +- git/diff.py | 10 +++---- git/exc.py | 2 +- git/refs/log.py | 2 +- git/remote.py | 8 +++--- git/repo/base.py | 2 +- git/test/lib/helper.py | 4 +-- git/test/test_commit.py | 4 +-- git/test/test_submodule.py | 2 +- git/test/test_util.py | 54 +++++++++++++++++++------------------- git/util.py | 6 ++--- 12 files changed, 50 insertions(+), 47 deletions(-) diff --git a/.gitignore b/.gitignore index d35cddebd..1773f8747 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ nbproject .DS_Store /*egg-info /.tox +.idea diff --git a/git/compat.py b/git/compat.py index b80458576..b63768f3d 100644 --- a/git/compat.py +++ b/git/compat.py @@ -309,5 +309,5 @@ def register_surrogateescape(): try: b"100644 \x9f\0aaa".decode(defenc, "surrogateescape") -except: +except Exception: register_surrogateescape() diff --git a/git/diff.py b/git/diff.py index 16c782f3a..103281a13 100644 --- a/git/diff.py +++ b/git/diff.py @@ -313,16 +313,16 @@ def __str__(self): h %= self.b_blob.path msg = '' - l = None # temp line + temp_line = None ll = 0 # line length for b, n in zip((self.a_blob, self.b_blob), ('lhs', 'rhs')): if b: - l = "\n%s: %o | %s" % (n, b.mode, b.hexsha) + temp_line = "\n%s: %o | %s" % (n, b.mode, b.hexsha) else: - l = "\n%s: None" % n + temp_line = "\n%s: None" % n # END if blob is not None - ll = max(len(l), ll) - msg += l + ll = max(len(temp_line), ll) + msg += temp_line # END for each blob # add headline diff --git a/git/exc.py b/git/exc.py index a737110c8..0dc4ad563 100644 --- a/git/exc.py +++ b/git/exc.py @@ -48,7 +48,7 @@ def __init__(self, command, status=None, stderr=None, stdout=None): else: try: status = u'exit code(%s)' % int(status) - except: + except Exception: s = safe_decode(str(status)) status = u"'%s'" % s if isinstance(status, string_types) else s diff --git a/git/refs/log.py b/git/refs/log.py index 623a63db1..1c085ef18 100644 --- a/git/refs/log.py +++ b/git/refs/log.py @@ -246,7 +246,7 @@ def to_file(self, filepath): try: self._serialize(fp) lfd.commit() - except: + except Exception: # on failure it rolls back automatically, but we make it clear lfd.rollback() raise diff --git a/git/remote.py b/git/remote.py index 35460f5a8..5d876eb32 100644 --- a/git/remote.py +++ b/git/remote.py @@ -542,9 +542,11 @@ def urls(self): if ' Push URL:' in line: yield line.split(': ')[-1] except GitCommandError as ex: - if any([msg in str(ex) for msg in ['correct access rights','cannot run ssh']]): - # If ssh is not setup to access this repository, see issue 694 - result = Git().execute(['git','config','--get','remote.%s.url' % self.name]) + if any([msg in str(ex) for msg in ['correct access rights', + 'cannot run ssh']]): + # If ssh is not setup to access this repository, see issue 694 + result = Git().execute(['git', 'config', '--get', + 'remote.%s.url' % self.name]) yield result else: raise ex diff --git a/git/repo/base.py b/git/repo/base.py index 990def64c..2fbae0122 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -203,7 +203,7 @@ def __exit__(self, exc_type, exc_value, traceback): def __del__(self): try: self.close() - except: + except Exception: pass def close(self): diff --git a/git/test/lib/helper.py b/git/test/lib/helper.py index 729c76a4f..27e053d81 100644 --- a/git/test/lib/helper.py +++ b/git/test/lib/helper.py @@ -139,7 +139,7 @@ def repo_creator(self): try: try: return func(self, rw_repo) - except: + except Exception: log.info("Keeping repo after failure: %s", repo_dir) repo_dir = None raise @@ -296,7 +296,7 @@ def remote_repo_creator(self): with cwd(rw_repo.working_dir): try: return func(self, rw_repo, rw_daemon_repo) - except: + except Exception: log.info("Keeping repos after failure: \n rw_repo_dir: %s \n rw_daemon_repo_dir: %s", rw_repo_dir, rw_daemon_repo_dir) rw_repo_dir = rw_daemon_repo_dir = None diff --git a/git/test/test_commit.py b/git/test/test_commit.py index fbb1c244e..e6bda6eb5 100644 --- a/git/test/test_commit.py +++ b/git/test/test_commit.py @@ -169,8 +169,8 @@ def test_traversal(self): # at some point, both iterations should stop self.assertEqual(list(bfirst)[-1], first) stoptraverse = self.rorepo.commit("254d04aa3180eb8b8daf7b7ff25f010cd69b4e7d").traverse(as_edge=True) - l = list(stoptraverse) - self.assertEqual(len(l[0]), 2) + traverse_list = list(stoptraverse) + self.assertEqual(len(traverse_list[0]), 2) # ignore self self.assertEqual(next(start.traverse(ignore_self=False)), start) diff --git a/git/test/test_submodule.py b/git/test/test_submodule.py index f970dd2c0..5c8a2798a 100644 --- a/git/test/test_submodule.py +++ b/git/test/test_submodule.py @@ -920,4 +920,4 @@ class Repo(object): submodule_path = 'D:\\submodule_path' relative_path = Submodule._to_relative_path(super_repo, submodule_path) msg = '_to_relative_path should be "submodule_path" but was "%s"' % relative_path - assert relative_path == 'submodule_path', msg \ No newline at end of file + assert relative_path == 'submodule_path', msg diff --git a/git/test/test_util.py b/git/test/test_util.py index 525c86092..2126c5413 100644 --- a/git/test/test_util.py +++ b/git/test/test_util.py @@ -217,49 +217,49 @@ def test_actor(self): @ddt.data(('name', ''), ('name', 'prefix_')) def test_iterable_list(self, case): name, prefix = case - l = IterableList(name, prefix) + iter_list = IterableList(name, prefix) name1 = "one" name2 = "two" m1 = TestIterableMember(prefix + name1) m2 = TestIterableMember(prefix + name2) - l.extend((m1, m2)) + iter_list.extend((m1, m2)) - self.assertEqual(len(l), 2) + self.assertEqual(len(iter_list), 2) # contains works with name and identity - self.assertIn(name1, l) - self.assertIn(name2, l) - self.assertIn(m2, l) - self.assertIn(m2, l) - self.assertNotIn('invalid', l) + self.assertIn(name1, iter_list) + self.assertIn(name2, iter_list) + self.assertIn(m2, iter_list) + self.assertIn(m2, iter_list) + self.assertNotIn('invalid', iter_list) # with string index - self.assertIs(l[name1], m1) - self.assertIs(l[name2], m2) + self.assertIs(iter_list[name1], m1) + self.assertIs(iter_list[name2], m2) # with int index - self.assertIs(l[0], m1) - self.assertIs(l[1], m2) + self.assertIs(iter_list[0], m1) + self.assertIs(iter_list[1], m2) # with getattr - self.assertIs(l.one, m1) - self.assertIs(l.two, m2) + self.assertIs(iter_list.one, m1) + self.assertIs(iter_list.two, m2) # test exceptions - self.failUnlessRaises(AttributeError, getattr, l, 'something') - self.failUnlessRaises(IndexError, l.__getitem__, 'something') + self.failUnlessRaises(AttributeError, getattr, iter_list, 'something') + self.failUnlessRaises(IndexError, iter_list.__getitem__, 'something') # delete by name and index - self.failUnlessRaises(IndexError, l.__delitem__, 'something') - del(l[name2]) - self.assertEqual(len(l), 1) - self.assertNotIn(name2, l) - self.assertIn(name1, l) - del(l[0]) - self.assertNotIn(name1, l) - self.assertEqual(len(l), 0) - - self.failUnlessRaises(IndexError, l.__delitem__, 0) - self.failUnlessRaises(IndexError, l.__delitem__, 'something') + self.failUnlessRaises(IndexError, iter_list.__delitem__, 'something') + del(iter_list[name2]) + self.assertEqual(len(iter_list), 1) + self.assertNotIn(name2, iter_list) + self.assertIn(name1, iter_list) + del(iter_list[0]) + self.assertNotIn(name1, iter_list) + self.assertEqual(len(iter_list), 0) + + self.failUnlessRaises(IndexError, iter_list.__delitem__, 0) + self.failUnlessRaises(IndexError, iter_list.__delitem__, 'something') diff --git a/git/util.py b/git/util.py index 5baeee918..96a1f163f 100644 --- a/git/util.py +++ b/git/util.py @@ -190,7 +190,7 @@ def assure_directory_exists(path, is_file=False): def _get_exe_extensions(): try: winprog_exts = tuple(p.upper() for p in os.environ['PATHEXT'].split(os.pathsep)) - except: + except Exception: winprog_exts = ('.BAT', 'COM', '.EXE') return winprog_exts @@ -200,7 +200,7 @@ def py_where(program, path=None): # From: http://stackoverflow.com/a/377028/548792 try: winprog_exts = tuple(p.upper() for p in os.environ['PATHEXT'].split(os.pathsep)) - except: + except Exception: winprog_exts = is_win and ('.BAT', 'COM', '.EXE') or () def is_exec(fpath): @@ -347,7 +347,7 @@ def expand_path(p, expand_vars=True): if expand_vars: p = osp.expandvars(p) return osp.normpath(osp.abspath(p)) - except: + except Exception: return None #} END utilities From 0b8ada695a925c3111735b653f93d71295e1452a Mon Sep 17 00:00:00 2001 From: Hugo Date: Mon, 4 Dec 2017 16:54:23 +0200 Subject: [PATCH 2/3] Specify Python 3.6 support --- README.md | 4 ++-- setup.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 456763754..68c7a3c3e 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If it is not in your `PATH`, you can help GitPython find it by setting the `GIT_PYTHON_GIT_EXECUTABLE=` environment variable. * Git (1.7.x or newer) -* Python 2.7 to 3.5, while python 2.6 is supported on a *best-effort basis*. +* Python 2.7 to 3.6, while python 2.6 is supported on a *best-effort basis*. The list of dependencies are listed in `./requirements.txt` and `./test-requirements.txt`. The installer takes care of installing them for you. @@ -125,7 +125,7 @@ Please have a look at the [contributions file][contributing]. ### How to verify a release -Please only use releases from `pypi` as you can verify the respective source +Please only use releases from `pypi` as you can verify the respective source tarballs. This script shows how to verify the tarball was indeed created by the authors of diff --git a/setup.py b/setup.py index 585a9e29c..47523e033 100755 --- a/setup.py +++ b/setup.py @@ -101,6 +101,7 @@ def _stamp_version(filename): package_data={'git.test': ['fixtures/*']}, package_dir={'git': 'git'}, license="BSD License", + python_requires='>=2.6, !=3.0.*, !=3.1.*, !=3.2.*', requires=['gitdb2 (>=2.0.0)'], install_requires=install_requires, test_requirements=test_requires + install_requires, From ceacc6fcd827dc19748cdd4909cb98c297c3d190 Mon Sep 17 00:00:00 2001 From: Hugo Date: Tue, 5 Dec 2017 10:40:00 +0200 Subject: [PATCH 3/3] Remove redundant Python 2.4 code --- git/repo/base.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/git/repo/base.py b/git/repo/base.py index 2fbae0122..a477bf38a 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -8,7 +8,6 @@ import logging import os import re -import sys import warnings from git.cmd import ( @@ -40,11 +39,6 @@ log = logging.getLogger(__name__) -DefaultDBType = GitCmdObjectDB -if sys.version_info[:2] < (2, 5): # python 2.4 compatibility - DefaultDBType = GitCmdObjectDB -# END handle python 2.4 - BlameEntry = namedtuple('BlameEntry', ['commit', 'linenos', 'orig_path', 'orig_linenos']) @@ -88,7 +82,7 @@ class Repo(object): # Subclasses may easily bring in their own custom types by placing a constructor or type here GitCommandWrapperType = Git - def __init__(self, path=None, odbt=DefaultDBType, search_parent_directories=False, expand_vars=True): + def __init__(self, path=None, odbt=GitCmdObjectDB, search_parent_directories=False, expand_vars=True): """Create a new Repo instance :param path: @@ -869,7 +863,7 @@ def blame(self, rev, file, incremental=False, **kwargs): return blames @classmethod - def init(cls, path=None, mkdir=True, odbt=DefaultDBType, expand_vars=True, **kwargs): + def init(cls, path=None, mkdir=True, odbt=GitCmdObjectDB, expand_vars=True, **kwargs): """Initialize a git repository at the given path if specified :param path: