Validators for different russian banking values
Project description
vitya
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
Examples:
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())
Валидация платежей по реквизитам (Russian)
Для валидации платежей используется следующий базовый класс, от которого необходимо наследоваться:
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('все отлично!')
Результат выполнения:
все отлично!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file vitya-0.20.17.tar.gz
.
File metadata
- Download URL: vitya-0.20.17.tar.gz
- Upload date:
- Size: 27.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 331a1880d9ab9e40be6b3fceef74210ca27b158f981a553e016c68e7efa273d3 |
|
MD5 | f2d29746ff9a402156d271e5ff6f3e0a |
|
BLAKE2b-256 | e0374edb481a5ac895325fae3d34606d66d0893b78dd28f928e11530508e293d |
File details
Details for the file vitya-0.20.17-py3-none-any.whl
.
File metadata
- Download URL: vitya-0.20.17-py3-none-any.whl
- Upload date:
- Size: 29.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c35d68daba7140285c179b5dca4824e9dd815e279812804feee14bb7e975d39b |
|
MD5 | bf84822f7d4b3c296f68295944488a94 |
|
BLAKE2b-256 | 6c7b58179acd94ad8432317964f0816269a7f34e0c7507df7dcc717173c8325c |