From 1fa1ce2b7dcf7f1643bb494b71b9857cbfb60090 Mon Sep 17 00:00:00 2001 From: Marcel Date: Thu, 19 Sep 2019 10:04:09 +0200 Subject: fixed code repetition --- git/index/base.py | 59 +++++++++++++++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 30 deletions(-) (limited to 'git/index/base.py') diff --git a/git/index/base.py b/git/index/base.py index c34fe78a..9ca663f4 100644 --- a/git/index/base.py +++ b/git/index/base.py @@ -569,25 +569,23 @@ class IndexFile(LazyMixin, diff.Diffable, Serializable): """ Split the items into two lists of path strings and BaseEntries. """ paths = [] entries = [] - - if isinstance(items, string_types): - paths.append(self._to_relative_path(items)) - elif isinstance(items, (Blob, Submodule)): - entries.append(BaseIndexEntry.from_blob(items)) - elif isinstance(items, BaseIndexEntry): - entries.append(items) - else: - for item in items: - if isinstance(item, string_types): - paths.append(self._to_relative_path(item)) - elif isinstance(item, (Blob, Submodule)): - entries.append(BaseIndexEntry.from_blob(item)) - elif isinstance(item, BaseIndexEntry): - entries.append(item) - else: - raise TypeError("Invalid Type: %r" % item) + # check if is iterable, else put in list + try: + test_item = iter(items) + except TypeError: + items = [items] + + for item in items: + if isinstance(item, string_types): + paths.append(self._to_relative_path(item)) + elif isinstance(item, (Blob, Submodule)): + entries.append(BaseIndexEntry.from_blob(item)) + elif isinstance(item, BaseIndexEntry): + entries.append(item) + else: + raise TypeError("Invalid Type: %r" % item) # END for each item - return (paths, entries) + return paths, entries def _store_path(self, filepath, fprogress): """Store file at filepath in the database and return the base index entry @@ -808,18 +806,19 @@ class IndexFile(LazyMixin, diff.Diffable, Serializable): """Returns a list of repo-relative paths from the given items which may be absolute or relative paths, entries or blobs""" paths = [] - if isinstance(items, (BaseIndexEntry, (Blob, Submodule))): - paths.append(self._to_relative_path(items.path)) - elif isinstance(items, string_types): - paths.append(self._to_relative_path(items)) - else: - for item in items: - if isinstance(item, (BaseIndexEntry, (Blob, Submodule))): - paths.append(self._to_relative_path(item.path)) - elif isinstance(item, string_types): - paths.append(self._to_relative_path(item)) - else: - raise TypeError("Invalid item type: %r" % item) + # check if is iterable, else put in list + try: + test_item = iter(items) + except TypeError: + items = [items] + + for item in items: + if isinstance(item, (BaseIndexEntry, (Blob, Submodule))): + paths.append(self._to_relative_path(item.path)) + elif isinstance(item, string_types): + paths.append(self._to_relative_path(item)) + else: + raise TypeError("Invalid item type: %r" % item) # END for each item return paths -- cgit v1.2.1