Source code for swh.counters.interface
# Copyright (C) 2021 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
from typing import Any, Dict, Iterable, List
from typing_extensions import Protocol
from swh.core.api import remote_api_endpoint
[docs]
class CountersInterface(Protocol):
[docs]
@remote_api_endpoint("check")
def check(self):
"""Dedicated method to execute some specific check per implementation."""
...
[docs]
@remote_api_endpoint("add")
def add(self, collection: str, keys: Iterable[Any]) -> None:
"""Add the provided keys to the collection
Only count new keys.
"""
...
[docs]
@remote_api_endpoint("count")
def get_count(self, collection: str) -> int:
"""Return the number of keys for the provided collection"""
...
[docs]
@remote_api_endpoint("counts")
def get_counts(self, collections: List[str]) -> Dict[str, int]:
"""Return the number of keys for the provided collection"""
...
[docs]
@remote_api_endpoint("counters")
def get_counters(self) -> Iterable[str]:
"""Return the list of managed counters"""
...
[docs]
class HistoryInterface(Protocol):
[docs]
@remote_api_endpoint("history")
def get_history(self, cache_file: str):
"""Return the content of an history file previously created
by the refresh_counters method"""
...
[docs]
@remote_api_endpoint("refresh_history")
def refresh_history(self, cache_file: str):
"""Refresh the cache file containing the counters historical data.
It can be an aggregate of live data and static data stored on
a separate file"""
...