summaryrefslogtreecommitdiff
path: root/lib/git/base.py
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2009-10-08 14:34:29 +0200
committerSebastian Thiel <byronimo@gmail.com>2009-10-09 16:19:32 +0200
commit8430529e1a9fb28d8586d24ee507a8195c370fa5 (patch)
tree8acfe3a881478d79b210f712f02828fd96ed9a55 /lib/git/base.py
parent9c0c2fc4ee2d8a5d0a2de50ba882657989dedc51 (diff)
downloadgitpython-8430529e1a9fb28d8586d24ee507a8195c370fa5.tar.gz
Renamed lazy.py to base.py to have a file for base classes - lazy not yet changed to allow proper rename tracking
Diffstat (limited to 'lib/git/base.py')
-rw-r--r--lib/git/base.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/git/base.py b/lib/git/base.py
new file mode 100644
index 00000000..5e470181
--- /dev/null
+++ b/lib/git/base.py
@@ -0,0 +1,32 @@
+# lazy.py
+# Copyright (C) 2008, 2009 Michael Trier (mtrier@gmail.com) and contributors
+#
+# This module is part of GitPython and is released under
+# the BSD License: http://www.opensource.org/licenses/bsd-license.php
+
+class LazyMixin(object):
+ lazy_properties = []
+
+ def __init__(self):
+ self.__baked__ = False
+
+ def __getattribute__(self, attr):
+ val = object.__getattribute__(self, attr)
+ if val is not None:
+ return val
+ else:
+ self.__prebake__()
+ return object.__getattribute__(self, attr)
+
+ def __bake__(self):
+ """ This method should be overridden in the derived class. """
+ raise NotImplementedError(" '__bake__' method has not been implemented.")
+
+ def __prebake__(self):
+ if self.__baked__:
+ return
+ self.__bake__()
+ self.__baked__ = True
+
+ def __bake_it__(self):
+ self.__baked__ = True