Source code for projectreport.analyzer.ts.base
from datetime import datetime
from typing import Any, Callable, Dict, List, Sequence, Union
from github.Repository import Repository
from projectreport.analyzer.ts.types import DictList
[docs]class TimeSeriesAnalysis:
analysis_attrs: Sequence[str] = tuple()
[docs] def get_event_data(self, item: str, **kwargs) -> DictList:
func = self.event_functions[item]
return func(*self.analysis_items, **kwargs)
[docs] def get_counts(self, item: str, freq: str, **kwargs) -> DictList:
event_data = self.get_event_data(item)
func = self.count_functions[item]
return func(event_data, freq, **kwargs)
@property
def event_functions(self) -> Dict[str, Callable]:
raise NotImplementedError
@property
def count_functions(self) -> Dict[str, Callable]:
raise NotImplementedError
@property
def analysis_items(self) -> List[Any]:
return [getattr(self, attr) for attr in self.analysis_attrs]
@property
def supported_items(self) -> List[str]:
return list(self.event_functions.keys())