
Research
/Security News
Contagious Interview Campaign Escalates With 67 Malicious npm Packages and New Malware Loader
North Korean threat actors deploy 67 malicious npm packages using the newly discovered XORIndex malware loader.
WARNING: This library is still in development stage.
Validators for different russian banking values.
Values you can validate:
validate_inn
validate_inn_ip
validate_inn_le
validate_kpp
validate_bic
validate_ogrn
validate_ogrnip
validate_snils
validate_oktmo
You should pass value as str
, otherwise exception will be raised.
If passed value is wrong, all functions will raise ValidationError
.
Also, optionally, you can use validators as Pydantic fields
validate_inn("3664069397")
try:
validate_inn("770708389")
except ValidationError as e:
print(f"wrong inn: {e}")
validate_kpp("616401001")
validate_bic("044525901")
validate_ogrn("1027700132195")
validate_snils("11223344595")
validate_oktmo("69701000001")
from pydantic import BaseModel, ValidationError
from vitya.pydantic_fields import INN
class InnModel(BaseModel):
inn: INN
inn_model = InnModel(inn="302502032671")
assert inn_model.inn == "302502032671"
try:
InnModel(inn="3664069398")
except ValidationError as e:
print(e.errors())
Для валидации платежей используется следующий базовый класс, от которого необходимо наследоваться:
class BaseModelChecker
У наследников этого класса есть переменная класса:
__checkers__: ClassVar[List[Tuple[Type[BaseChecker], List[str]]]] = []
В этой переменной содержится список чекеров (наследников BaseChecker), которые будут вызваны (вызовется метод check) при инициализации инстансов BaseModelChecker
Класс чекеров наследуется от BaseChecker
class BaseChecker(ABC):
@abstractmethod
def check(self) -> None: # pragma: no cover
pass
При инициализации инстансов класса BaseModelChecker, когда появляется проверка чекеров не выполняется успешно, выбрасывается ошибка CheckerError, которая затем оборачивается в pydantic.ValidationError
class CheckerError(ValueError):
def __init__(self, errors: Sequence[Exception]):
self._errors = errors
@property
def errors(self) -> Sequence[Exception]:
return self._errors
Для примера разберем базовую ситуацию: ключевание номера счёта и БИКа банка. Чтобы это проверить, нам нужно создать класс наследник BaseModelChecker, со встроенным чекером ключевания счёта и БИКа. Такой чекер есть в базовых реализациях и называется AccountBicChecker.
Пример кода:
class MyPayment(BaseModelChecker):
account_number: AccountNumber
bic: BIC
__checkers__ = [
(AccountBicChecker, ['account_number', 'bic'])
]
try:
payment = MyPayment(account_number='40802810722200035222', bic='045004861')
except ValidationError as e:
print('ой, что-то не так с данными: ', str(e))
else:
print('все отлично!')
Результат выполнения:
ой, что-то не так с данными: 1 validation error for TestAccountBicModelChecker
__root__
[AccountValidationBICValueError()] (type=value_error.checker; _errors=[AccountValidationBICValueError()])
Поменяем БИК на корректный (последнюю цифру)
try:
payment = MyPayment(account_number='40802810722200035222', bic='045004864')
except ValidationError as e:
print('ой, что-то не так с данными: ', str(e))
else:
print('все отлично!')
Результат выполнения:
все отлично!
FAQs
Validators for different russian banking values
We found that vitya demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
North Korean threat actors deploy 67 malicious npm packages using the newly discovered XORIndex malware loader.
Security News
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
Security News
CAI is a new open source AI framework that automates penetration testing tasks like scanning and exploitation up to 3,600× faster than humans.