Source code for swh.counters.in_memory
# 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 collections import defaultdict
from typing import Any, Dict, Iterable, List
[docs]
class InMemory:
"""InMemory implementation of the counters.
Naive implementation using a Dict[str, Set]"""
def __init__(self):
self.counters = defaultdict(set)
[docs]
def check(self):
return "OK"
[docs]
def add(self, collection: str, keys: Iterable[Any]) -> None:
for value in keys:
self.counters[collection].add(value)
[docs]
def get_count(self, collection: str) -> int:
return len(self.counters.get(collection, []))
[docs]
def get_counts(self, collections: List[str]) -> Dict[str, int]:
return {coll: self.get_count(coll) for coll in collections}
[docs]
def get_counters(self) -> Iterable[str]:
return list(self.counters.keys())