def file_detail(self, include_globs=None, ignore_globs=None, rev='HEAD', committer=True):
        """
        Returns a table of all current files in the repos, with some high level information about each file (total LOC,
        file owner, extension, most recent edit date, etc.).

        :param ignore_globs: (optional, default=None) a list of globs to ignore, default none excludes nothing
        :param include_globs: (optinal, default=None) a list of globs to include, default of None includes everything.
        :param committer: (optional, default=True) true if committer should be reported, false if author
        :return:
        """

        # first get the blame
        blame = self.blame(
            include_globs=include_globs,
            ignore_globs=ignore_globs,
            rev=rev,
            committer=committer,
            by='file'
        )
        blame = blame.reset_index(level=1)
        blame = blame.reset_index(level=1)

        # reduce it to files and total LOC
        df = blame.reindex(columns=['file', 'loc'])
        df = df.groupby('file').agg({'loc': np.sum})
        df = df.reset_index(level=1)

        # map in file owners
        df['file_owner'] = df['file'].map(lambda x: self.file_owner(rev, x, committer=committer))

        # add extension (something like the language)
        df['ext'] = df['file'].map(lambda x: x.split('.')[-1])

        # add in last edit date for the file
        df['last_edit_date'] = df['file'].map(self._file_last_edit)
        df['last_edit_date'] = to_datetime(df['last_edit_date'])

        df = df.set_index('file')

        return df
def file_detail ( self , include_globs = None , ignore_globs = None , rev = 'HEAD' , committer = True ) : blame = self . blame ( include_globs = include_globs , ignore_globs = ignore_globs , rev = rev , committer = committer , by = 'file' ) blame = blame . reset_index ( level = 1 ) blame = blame . reset_index ( level = 1 ) df = blame . reindex ( columns = [ 'file' , 'loc' ] ) df = df . groupby ( 'file' ) . agg ( { 'loc' : np . sum } ) df = df . reset_index ( level = 1 ) df [ 'file_owner' ] = df [ 'file' ] . map ( lambda x : self . file_owner ( rev , x , committer = committer ) ) df [ 'ext' ] = df [ 'file' ] . map ( lambda x : x . split ( '.' ) [ - 1 ] ) df [ 'last_edit_date' ] = df [ 'file' ] . map ( self . _file_last_edit ) df [ 'last_edit_date' ] = to_datetime ( df [ 'last_edit_date' ] ) df = df . set_index ( 'file' ) return df
Returns a table of all current files in the repos, with some high level information about each file (total LOC,
        file owner, extension, most recent edit date, etc.).

        :param ignore_globs: (optional, default=None) a list of globs to ignore, default none excludes nothing
        :param include_globs: (optinal, default=None) a list of globs to include, default of None includes everything.
        :param committer: (optional, default=True) true if committer should be reported, false if author
        :return: