Spaces:
Running
Running
# Copyright (C) 2008, 2009 Michael Trier (mtrier@gmail.com) and contributors | |
# | |
# This module is part of GitPython and is released under the | |
# 3-Clause BSD License: https://opensource.org/license/bsd-3-clause/ | |
__all__ = ["Blob"] | |
from mimetypes import guess_type | |
import sys | |
if sys.version_info >= (3, 8): | |
from typing import Literal | |
else: | |
from typing_extensions import Literal | |
from . import base | |
class Blob(base.IndexObject): | |
"""A Blob encapsulates a git blob object. | |
See :manpage:`gitglossary(7)` on "blob": | |
https://git-scm.com/docs/gitglossary#def_blob_object | |
""" | |
DEFAULT_MIME_TYPE = "text/plain" | |
type: Literal["blob"] = "blob" | |
# Valid blob modes | |
executable_mode = 0o100755 | |
file_mode = 0o100644 | |
link_mode = 0o120000 | |
__slots__ = () | |
def mime_type(self) -> str: | |
""" | |
: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(str(self.path)) | |
return guesses and guesses[0] or self.DEFAULT_MIME_TYPE | |