SYMBOL INDEX (106 symbols across 8 files) FILE: src/gilot/app.py function init_logger (line 28) | def init_logger(args): function add_logging_option (line 38) | def add_logging_option(parser): function compose_filter (line 42) | def compose_filter(allow: Optional[List[str]], deny: Optional[List[str]]... function args_to_duration (line 57) | def args_to_duration(args) -> Duration: function handle_log (line 70) | def handle_log(args) -> None: function handle_plot (line 82) | def handle_plot(args) -> None: function _load_df (line 93) | def _load_df(args): function handle_info (line 101) | def handle_info(args) -> None: function handle_hotspot (line 118) | def handle_hotspot(args) -> None: function handle_author (line 132) | def handle_author(args) -> None: function handle_hotgraph (line 141) | def handle_hotgraph(args) -> None: function pretty_print_hotspot (line 156) | def pretty_print_hotspot(df) -> None: function add_file_filter_option (line 174) | def add_file_filter_option(parser): function add_author_filter_option (line 190) | def add_author_filter_option(parser): function add_log_option (line 206) | def add_log_option(parser): function add_plot_option (line 244) | def add_plot_option(parser): function add_info_option (line 273) | def add_info_option(parser): function add_hotspot_option (line 293) | def add_hotspot_option(parser): function add_hotgraph_option (line 322) | def add_hotgraph_option(parser): function add_author_option (line 372) | def add_author_option(parser): function main (line 432) | def main(): FILE: src/gilot/core.py function text_to_date (line 17) | def text_to_date(date_text:str) -> datetime.date: function date_to_text (line 21) | def date_to_text(date: datetime.date) -> str: class Duration (line 26) | class Duration: method since_text (line 31) | def since_text(self) -> str: method __str__ (line 34) | def __str__(self) -> str: method until_text (line 39) | def until_text(self) -> str: method delta (line 44) | def delta(self) -> datetime.timedelta: method months (line 50) | def months(cls:Type[Duration], months: int,*,since:Optional[str] = Non... method range (line 63) | def range(cls:Type[Duration],since: str, until: str) -> Duration: class Repo (line 71) | class Repo: method from_dir (line 76) | def from_dir( method commits (line 82) | def commits(self, duration: Duration) -> Iterator[Commit]: function timestamp_to_date_text (line 87) | def timestamp_to_date_text(timestamp: int) -> str: function is_merge (line 91) | def is_merge(commit: Commit) -> bool: class CommitRecord (line 99) | class CommitRecord: method compose (line 110) | def compose(cls, commit: Commit, full: bool = False) -> CommitRecord: method to_dict (line 129) | def to_dict(self) -> dict: method expand (line 132) | def expand(self) -> List[dict]: method filter_files (line 144) | def filter_files(self,is_match_file:Callable[[str],bool]) -> Optional[... class CommitDataFrame (line 172) | class CommitDataFrame(pd.DataFrame): method _constructor (line 176) | def _constructor(self): method _constructor_sliced (line 180) | def _constructor_sliced(self): method _constructor_expanddim (line 184) | def _constructor_expanddim(self): method from_dataframe (line 192) | def from_dataframe(cls, df: pd.DataFrame) -> CommitDataFrame: method up (line 198) | def up(cls, df: pd.DataFrame) -> CommitDataFrame: method from_records (line 208) | def from_records(cls, commits: List[CommitRecord]) -> CommitDataFrame: method from_commits (line 215) | def from_commits(cls, commits: List[git.Commit], *, full: bool = False... method expand_files (line 221) | def expand_files(self, filter_func=None): method filter_files (line 255) | def filter_files(self, is_match: Callable[[str], bool]) -> CommitDataF... method to_records (line 268) | def to_records(self) -> List[CommitRecord]: function from_csv (line 274) | def from_csv(csvFileName: str) -> CommitDataFrame: function from_csvs (line 278) | def from_csvs(csvFileNames: List[str]) -> CommitDataFrame: function from_dir (line 283) | def from_dir( FILE: src/gilot/filetracker.py function track_name (line 27) | def track_name(before:str,after:str,begin:str = "",end:str = "") -> Tupl... function match (line 33) | def match(str:str) -> Optional[Tuple[str,str]]: class FileTracker (line 44) | class FileTracker(): method _search_recursive (line 47) | def _search_recursive(self, file_name: str) -> str: method newest_name (line 52) | def newest_name(self, file_expression: str) -> str: method create (line 60) | def create(cls, file_expressions: List[str]) -> FileTracker: FILE: src/gilot/hotgraph.py function all_commit_list (line 18) | def all_commit_list(df: pd.DataFrame) -> List[List[str]]: function search_threshold (line 22) | def search_threshold(df,rank=70) -> int: function short_name (line 30) | def short_name(path:str, newline:bool) -> str: function add_edge_with_weight (line 36) | def add_edge_with_weight(graph,pair,weight=1) : function gen_commit_to_pattern (line 43) | def gen_commit_to_pattern(stop_retry: bool, timeout=10, max_retry=5, aut... function set_hotspot_point (line 72) | def set_hotspot_point(g, df): function set_page_rank (line 78) | def set_page_rank(g): function set_partition_number (line 84) | def set_partition_number(g): function graph_edge_size (line 90) | def graph_edge_size(g): function graph_label_name (line 94) | def graph_label_name(g, newline): function graph_node_size (line 98) | def graph_node_size(g): function graph_node_color (line 102) | def graph_node_color(g): function plot_hotgraph (line 106) | def plot_hotgraph(df: pd.DataFrame, *, FILE: src/gilot/hotspot.py function remove_outer_lines (line 8) | def remove_outer_lines(df : pd.DataFrame) -> pd.DataFrame: function get_hotspots (line 14) | def get_hotspots(df : pd.DataFrame) -> pd.DataFrame: FILE: src/gilot/plotter.py function gini (line 11) | def gini(x): function lorenz (line 19) | def lorenz(v): function _ts_to_string (line 30) | def _ts_to_string(ts): function _in_sprint (line 42) | def _in_sprint(df, timeslot="2W"): function _plot_gini (line 58) | def _plot_gini(df, plt): function _plot_hist (line 75) | def _plot_hist(df, plt, ts): function _plot_text (line 89) | def _plot_text(plt, text): function _plot_authors (line 98) | def _plot_authors(df, plt): function _plot_code (line 112) | def _plot_code(df, plt): function _plot_productivity (line 148) | def _plot_productivity(df,plt): function prod_to_level (line 168) | def prod_to_level(prod) : function plot (line 174) | def plot(df, timeslot='2W', output=False, name="[This Graph]"): function info (line 203) | def info(df, timeslot="2W"): function _top_authors (line 255) | def _top_authors(df,num): function _count_commits (line 259) | def _count_commits(df, top=15, only=None): function _commit_ratio (line 273) | def _commit_ratio(df): function authors (line 282) | def authors(df, output=False, top=None, name="--", only=None): FILE: tests/test_app.py function tempdir (line 11) | def tempdir(): function test_log_repo (line 17) | def test_log_repo(): function test_log_branch (line 22) | def test_log_branch(): function test_log_output (line 34) | def test_log_output(): function test_log_duration (line 41) | def test_log_duration(): function test_hotspot_option (line 69) | def test_hotspot_option(): function test_handlers (line 79) | def test_handlers(tempdir): function test_gilot_info_react_csv_matches_readme (line 136) | def test_gilot_info_react_csv_matches_readme(): FILE: tests/test_core.py function tempdir (line 10) | def tempdir(): function echo (line 16) | def echo(p): function test_duration_constructor (line 21) | def test_duration_constructor(): function test_commit_record (line 26) | def test_commit_record(tempdir): function test_expander (line 38) | def test_expander(): function test_expander_with_filter (line 50) | def test_expander_with_filter():