summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--git/index/base.py59
1 files changed, 29 insertions, 30 deletions
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