beerds/server/modules/recognizer/repository/repository.py

51 lines
1.5 KiB
Python

from abc import ABCMeta, abstractmethod
from functools import lru_cache
import ujson
from aiocache import Cache, cached # type: ignore
class ARecognizerRepository(metaclass=ABCMeta):
@abstractmethod
async def images_dogs(self) -> dict:
pass
@abstractmethod
async def images_cats(self) -> dict:
pass
@abstractmethod
def labels_dogs(self) -> dict:
pass
@abstractmethod
def labels_cats(self) -> dict:
pass
class RecognizerRepository(ARecognizerRepository):
def __init__(self):
pass
@cached(ttl=60, cache=Cache.MEMORY)
async def images_dogs(self) -> dict:
with open("server/modules/recognizer/repository/meta/images.json") as f: # noqa: ASYNC230
return ujson.loads(f.read())["dog"]
@cached(ttl=60, cache=Cache.MEMORY)
async def images_cats(self) -> dict:
with open("server/modules/recognizer/repository/meta/images.json") as f: # noqa: ASYNC230
return ujson.loads(f.read())["cat"]
@lru_cache
def labels_cats(self) -> dict:
with open("server/modules/recognizer/repository/meta/labels_cats.json") as f: # noqa: ASYNC230
data_labels = f.read()
return ujson.loads(data_labels)
@lru_cache
def labels_dogs(self) -> dict:
with open("server/modules/recognizer/repository/meta/labels_dogs.json") as f: # noqa: ASYNC230
data_labels = f.read()
return ujson.loads(data_labels)