def get_iterations_data(self, iter_buckets: dict) -> dict: """ Convert a list of bucket entries to `x`s array and `y`s array """ return extract_properties_to_lists( ("x", "y"), iter_buckets[self.name]["buckets"], self._get_iterations_data_single, )
def get_activity_series(active_only: bool = False) -> ActivityReportSeries: ret = worker_bll.stats.get_activity_report( company_id=company_id, from_date=req_model.from_date, to_date=req_model.to_date, interval=req_model.interval, active_only=active_only, ) if not ret: return ActivityReportSeries(dates=[], counts=[]) count_by_date = extract_properties_to_lists(["date", "count"], ret) return ActivityReportSeries(dates=count_by_date["date"], counts=count_by_date["count"])
def _get_variant_metric_stats( metric: str, agg_names: Sequence[str], stats: Sequence[dict], variant: Optional[str] = None, ) -> MetricStats: stat_by_name = extract_properties_to_lists(agg_names, stats) return MetricStats( metric=metric, variant=variant, dates=stat_by_name["date"], stats=[ AggregationStats(aggregation=name, values=aggs) for name, aggs in stat_by_name.items() if name != "date" ], )
def get_queue_metrics(call: APICall, company_id, req_model: GetMetricsRequest) -> GetMetricsResponse: ret = queue_bll.metrics.get_queue_metrics( company_id=company_id, from_date=req_model.from_date, to_date=req_model.to_date, interval=req_model.interval, queue_ids=req_model.queue_ids, ) queue_dicts = { queue: extract_properties_to_lists( ["date", "avg_waiting_time", "queue_length"], data) for queue, data in ret.items() } return GetMetricsResponse(queues=[ QueueMetrics( queue=queue, dates=data["date"], avg_waiting_times=data["avg_waiting_time"], queue_lengths=data["queue_length"], ) if data else QueueMetrics(queue=queue) for queue, data in queue_dicts.items() ])