-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcache.py
More file actions
58 lines (42 loc) · 1.46 KB
/
Copy pathcache.py
File metadata and controls
58 lines (42 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from abc import ABC, abstractmethod
from datetime import datetime
from io import BytesIO
from xmlrpc.client import boolean
from stock import Stock
from dataclasses import dataclass, field
from PIL import Image
class ICache(ABC):
@abstractmethod
def add(self):
pass
@abstractmethod
def tryGet(self):
pass
@dataclass
class StockCache(ICache):
stocks: dict = field(default_factory=dict)
def add(self, ticker: str, price: float, change: float,
percentChange: float, time: datetime) -> None:
stock = Stock(ticker, price, change, percentChange, time)
self.stocks[stock.ticker] = stock
def tryGet(self, ticker: str) -> boolean:
stock = True if ticker in self.stocks.keys() else False
return stock
def update(self, price: float, change: float, percentChange: float,
stock: Stock, time: datetime) -> None:
stock.update(price, change, percentChange, time)
def print_stocks(self) -> None:
for stock in self.stocks.values():
print(stock)
def get_stocks(self) -> dict:
return self.stocks
@dataclass
class LogoCache(ICache):
logos: dict = field(default_factory=dict)
def add(self, ticker: str, logo: Image):
self.logos[ticker] = logo
def tryGet(self, ticker: str) -> boolean:
logo = True if ticker in self.logos.keys() else False
return logo
def get_logos(self) -> dict:
return self.logos