cache.py 556 Bytes
Newer Older
Olivier Dehaene's avatar
Olivier Dehaene committed
1
from typing import Dict, Optional
Olivier Dehaene's avatar
Init  
Olivier Dehaene committed
2

3
4
from text_generation.models.types import Batch

Olivier Dehaene's avatar
Init  
Olivier Dehaene committed
5
6
7

class Cache:
    def __init__(self):
Olivier Dehaene's avatar
Olivier Dehaene committed
8
        self.cache: Dict[int, Batch] = {}
Olivier Dehaene's avatar
Init  
Olivier Dehaene committed
9

Olivier Dehaene's avatar
Olivier Dehaene committed
10
    def pop(self, batch_id: int) -> Optional[Batch]:
Olivier Dehaene's avatar
Init  
Olivier Dehaene committed
11
12
        return self.cache.pop(batch_id, None)

Olivier Dehaene's avatar
Olivier Dehaene committed
13
    def set(self, entry: Batch):
Olivier Dehaene's avatar
Init  
Olivier Dehaene committed
14
15
16
        if entry is not None:
            self.cache[entry.batch_id] = entry

Olivier Dehaene's avatar
Olivier Dehaene committed
17
    def delete(self, batch_id: int):
Olivier Dehaene's avatar
Init  
Olivier Dehaene committed
18
19
20
21
22
23
24
        del self.cache[batch_id]

    def clear(self):
        self.cache.clear()

    def __len__(self):
        return len(self.cache.keys())