~~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'.