| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -27,6 +27,12 @@ def is_git_dir(d): | |||
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | 29 | 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 | + """ | ||
| 30 | 36 | __slots__ = tuple() | |
| 31 | 37 | ||
| 32 | 38 | def __getattr__(self, attr): | |
@@ -49,3 +55,35 @@ def _set_cache_(self, attr): | |||
| 49 | 55 | in the single attribute.""" | |
| 50 | 56 | pass | |
| 51 | 57 | ||
| 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 | + | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments