Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vitya-0.20.19.tar.gz (27.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vitya-0.20.19-py3-none-any.whl (29.1 kB view details)

Uploaded Python 3

File details

Details for the file vitya-0.20.19.tar.gz.

File metadata

  • Download URL: vitya-0.20.19.tar.gz
  • Upload date:
  • Size: 27.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.21

File hashes

Hashes for vitya-0.20.19.tar.gz
Algorithm Hash digest
SHA256 18f99cd8b9131a6a66e9aac76218bdee79a147f1ff6ad9a101a235b7424231bd
MD5 caff1c43aa0efd40207f31fb96c44c98
BLAKE2b-256 63fece946b5aba8d9a33fa178ab3de659e0a1f0013b9f7fabf4f0f5c8cd2c1a5

See more details on using hashes here.

File details

Details for the file vitya-0.20.19-py3-none-any.whl.

File metadata

  • Download URL: vitya-0.20.19-py3-none-any.whl
  • Upload date:
  • Size: 29.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.21

File hashes

Hashes for vitya-0.20.19-py3-none-any.whl
Algorithm Hash digest
SHA256 7c0f5ed151c7cf4995bbb0932fcc7f16ff97f03fcccef25c1dc4c8ac7d0bd399
MD5 c2240ad68ed5cef4683907149a9a6900
BLAKE2b-256 40f9b4e6c1958bd7bd989e9b60d90f7f947c4089e3be4865a1b77d648aaf18a5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page