pedroferreira's picture
adds sampling mode to back-end
cd059dd
raw
history blame
1.12 kB
from abc import ABC, abstractmethod
from typing import List
from dataclasses import dataclass
from aiohttp.web import Response, Request, StreamResponse
@dataclass
class QueryValidatorParams:
k_miners: int
exclude: List[str]
roles: List[str]
messages: List[str]
timeout: int
prefer: str
request: Request
sampling_mode: str
@staticmethod
def from_request(request: Request):
data = request["data"]
return QueryValidatorParams(
k_miners=data.get("k", 10),
exclude=data.get("exclude", []),
roles=data["roles"],
messages=data["messages"],
timeout=data.get("timeout", 10),
prefer=data.get("prefer", "longest"),
request=request,
sampling_mode=data.get("sampling_mode", "random"),
)
class ValidatorAPI(ABC):
@abstractmethod
async def query_validator(self, params: QueryValidatorParams) -> StreamResponse:
pass
class MockValidator(ValidatorAPI):
async def query_validator(self, params: QueryValidatorParams) -> StreamResponse:
...