Source code for profile_photo.helpers

from __future__ import annotations

from concurrent.futures import ThreadPoolExecutor

from dataclass_wizard.decorators import cached_class_property

from .errors import FileTooLarge, MissingParams
from .models import Params


[docs]class Util: """Helper Utilities.""" pool: ThreadPoolExecutor max_threads = 3 # noinspection PyMethodParameters @cached_class_property def pool(cls): return ThreadPoolExecutor(max_workers=cls.max_threads)
[docs] @staticmethod def validate_file_len(size: int, _max_size=5_000_000): """Validate file length is < 5 MB. The maximum images size as raw bytes passed in as parameter to the Rekognition API is 5 MB. See: https://docs.aws.amazon.com/rekognition/latest/dg/limits.html#quotas """ if size > _max_size: raise FileTooLarge(size, _max_size) from None
[docs] @staticmethod def validate_params(required_if_missing: Params | None = None, **params): """Validate required parameters are passed in.""" invalid: list | None = None for p in params: if not params[p]: if invalid: invalid.append(p) else: invalid = [p] if invalid: raise MissingParams(*invalid, required_if_missing=required_if_missing) from None