def __init__(self, data_path=None, clone_dir='<STR_LIT>', branch='<STR_LIT>',<EOL>sub_dir=None, exts=['<STR_LIT>', '<STR_LIT>', '<STR_LIT>'], logger=None):
self.logger = logger<EOL>if logger is None:<EOL><INDENT>logging.basicConfig(level=logging.INFO)<EOL>self.logger = logging.getLogger()<EOL><DEDENT>self.clone_dir = clone_dir<EOL>self.branch = branch<EOL>self.cmd = exectools.Exec(self.logger)<EOL>self.remote_path = None<EOL>self.sub_dir = sub_dir<EOL>self.exts = ['<STR_LIT:.>' + e.lower() for e in exts]<EOL>if data_path:<EOL><INDENT>self.clone_data(data_path)<EOL><DEDENT>
Load structured data from a git source.
:param str data_path: Git url (git/http/https) or local directory path
:param str clone_dir: Location to clone data into
:param str branch: Repo branch (tag or sha also allowed) to checkout
:param str sub_dir: Sub dir in data to treat as root
:param list exts: List of valid extensions to search for in data, with out period
:param logger: Python logging object to use
:raises GitDataException: