diff options
Diffstat (limited to 'git/index')
-rw-r--r-- | git/index/base.py | 59 |
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 |