summaryrefslogtreecommitdiff
path: root/lib/git/objects/blob.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/git/objects/blob.py')
-rw-r--r--lib/git/objects/blob.py48
1 files changed, 24 insertions, 24 deletions
diff --git a/lib/git/objects/blob.py b/lib/git/objects/blob.py
index 3f91d078..8263e9a2 100644
--- a/lib/git/objects/blob.py
+++ b/lib/git/objects/blob.py
@@ -4,33 +4,33 @@
# This module is part of GitPython and is released under
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
-import mimetypes
+from mimetypes import guess_type
import base
-class Blob(base.IndexObject):
- """A Blob encapsulates a git blob object"""
- DEFAULT_MIME_TYPE = "text/plain"
- type = "blob"
-
- __slots__ = tuple()
+__all__ = ('Blob', )
-
- @property
- def mime_type(self):
- """
- The mime type of this file (based on the filename)
+class Blob(base.IndexObject):
+ """A Blob encapsulates a git blob object"""
+ DEFAULT_MIME_TYPE = "text/plain"
+ type = "blob"
- Returns
- str
-
- NOTE
- Defaults to 'text/plain' in case the actual file type is unknown.
- """
- guesses = None
- if self.path:
- guesses = mimetypes.guess_type(self.path)
- return guesses and guesses[0] or self.DEFAULT_MIME_TYPE
+ __slots__ = "data"
+ def _set_cache_(self, attr):
+ if attr == "data":
+ ostream = self.repo.odb.stream(self.binsha)
+ self.size = ostream.size
+ self.data = ostream.read()
+ # assert ostream.type == self.type, _assertion_msg_format % (self.binsha, ostream.type, self.type)
+ else:
+ super(Blob, self)._set_cache_(attr)
+ # END handle data
- def __repr__(self):
- return '<git.Blob "%s">' % self.sha
+ @property
+ def mime_type(self):
+ """ :return:String describing the mime type of this file (based on the filename)
+ :note: Defaults to 'text/plain' in case the actual file type is unknown. """
+ guesses = None
+ if self.path:
+ guesses = guess_type(self.path)
+ return guesses and guesses[0] or self.DEFAULT_MIME_TYPE