Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit f4fa1cb

Browse filesBrowse files
committed
Added base for all iteratable objects
1 parent 5eb0f2c commit f4fa1cb
Copy full SHA for f4fa1cb

File tree

1 file changed

+38
-0
lines changed
Filter options

1 file changed

+38
-0
lines changed

‎lib/git/utils.py

Copy file name to clipboardExpand all lines: lib/git/utils.py
+38Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ def is_git_dir(d):
2727

2828

2929
class LazyMixin(object):
30+
"""
31+
Base class providing an interface to lazily retrieve attribute values upon
32+
first access. If slots are used, memory will only be reserved once the attribute
33+
is actually accessed and retrieved the first time. All future accesses will
34+
return the cached value as stored in the Instance's dict or slot.
35+
"""
3036
__slots__ = tuple()
3137

3238
def __getattr__(self, attr):
@@ -49,3 +55,35 @@ def _set_cache_(self, attr):
4955
in the single attribute."""
5056
pass
5157

58+
59+
class Iterable(object):
60+
"""
61+
Defines an interface for iterable items which is to assure a uniform
62+
way to retrieve and iterate items within the git repository
63+
"""
64+
__slots__ = tuple()
65+
66+
@classmethod
67+
def list_items(cls, repo, *args, **kwargs):
68+
"""
69+
Find all items of this type - subclasses can specify args and kwargs differently.
70+
If no args are given, subclasses are obliged to return all items if no additional
71+
arguments arg given.
72+
73+
Note: Favor the iter_items method as it will
74+
75+
Returns:
76+
list(Item,...) list of item instances
77+
"""
78+
return list(cls.iter_items, repo, *args, **kwargs)
79+
80+
81+
@classmethod
82+
def iter_items(cls, repo, *args, **kwargs):
83+
"""
84+
For more information about the arguments, see find_all
85+
Return:
86+
iterator yielding Items
87+
"""
88+
raise NotImplementedError("To be implemented by Subclass")
89+

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.