~~NOTOC~~ Текст документации сгенерирован автоматически из [[https://github.com/iron-mesh/Pyrog|исходного кода]].\\ Если обнаружили ошибку, отправьте об этом сообщение на [[feedback@ironmesh.ru|📧почту]]. ====== Module: utils ====== Provides various utilitarian functions. ===== Functions ===== ==== validate_dict ==== def validate_dict(data: dict, schema: dict, mode: Literal['s', 'mka'] = 's') -> tuple[bool, Exception | None] Validates input dictionary by scheme **Parameters:** * **data**: //dict// — dictionary to be validated * **schema**: //dict// — validation schema, for example: { 'key': { 'type': data type, 'comparison' (optional): { 'keys': list of keys (["min", "max"]), 'validator': function for validating value (lambda self, range: self >= range[0] and self <= range[1]), 'error_msg': output this message if validation fails} } } * **mode**: //Literal%%[%%'s', 'mka'%%]%%// — key set checking mode * //"s"// — strict mode, keysets must be equal. * //"mka"// — "missing keys are allowed" mode, dict may not have a complete set of keys. **Returns:** * //tuple%%[%%bool, Exception | None%%]%%// — (without description) * //bool// — Validation result (True if validation passed) * //Exception// — Error message if validation fails or None if validation passed **Raises:** * **TypeError** — If args are not a dict * **RuntimeError** — If set of keys are not equal or values don't match the specified conditions * **ValueError** — If arg is invalid ==== get_lang_const_translation ==== def get_lang_const_translation(data: LangConstant | str, n: int | float = 1) -> str Returns translation of language constant or unmodified string **Parameters:** * **data**: //[[.:types:lang_constant#langconstant|LangConstant]] | str// — language constant or string * **n**: //int | float// — a numeral for determining the plural form. **Returns:** * //str// — translation of language constant or source string ==== retranslate_nested_langconstants ==== def retranslate_nested_langconstants(object, lang_code: Optional[str] = None) Searches objects of [[.:types:lang_constant#langconstant|LangConstant]] type and calls translate() method for each instance, also scans nested classes **Parameters:** * **object** — Module or Class object * **lang_code**: //Optional%%[%%str%%]%%// — language code, for example 'en' or 'en_GB'.