from dataclasses import dataclass
from typing import Any, Type, TypeVar
T = TypeVar("T")
@dataclass
class Request:
id: int
tokens: int
requests_raw = [
{"id": 1, "tokens": 1200},
{"id": 2, "tokens": 4500},
{"id": 3, "tokens": 800},
{"id": 4, "tokens": 6700},
{"id": 5, "tokens": 2100},
{"id": 6, "tokens": 9100},
{"id": 7, "tokens": 3300},
{"id": 8, "tokens": 2900},
{"id": 9, "tokens": 5000},
{"id": 10, "tokens": 1500},
]
def create_objects(data: list[Any], cls: Type[T]) -> list[T]:
result: list[T] = []
for item in data:
result.append(cls(**item))
return result
requests: list[Request] = create_objects(data=requests_raw, cls=Request)
def expensive_requests(requests: list[Request], limit: int) -> list[Request]:
result: list[Request] = []
for request in requests:
if request.tokens > limit:
result.append(request)
return result
print(expensive_requests(requests=requests, limit=3000))