Validators - Validadores

Funções de validação reutilizáveis.

Validadores Disponíveis

from velox.validators import (
    validate_email,
    validate_url,
    validate_phone,
    validate_cpf,
    validate_cnpj,
    validate_min_length,
    validate_max_length,
    validate_range,
    validate_regex,
    validate_file_extension,
    validate_file_size,
)

validate_email

from velox.validators import validate_email

try:
    validate_email('user@domain.com')
    print('Email válido')
except ValueError as e:
    print(f'Erro: {e}')

validate_cpf

from velox.validators import validate_cpf

try:
    validate_cpf('123.456.789-09')
    print('CPF válido')
except ValueError:
    print('CPF inválido')

validate_cnpj

from velox.validators import validate_cnpj

try:
    validate_cnpj('12.345.678/0001-90')
    print('CNPJ válido')
except ValueError:
    print('CNPJ inválido')

validate_phone

from velox.validators import validate_phone

# Aceita vários formatos
validate_phone('(11) 99999-9999')
validate_phone('11999999999')
validate_phone('+55 11 99999 9999')

validate_url

from velox.validators import validate_url

validate_url('https://example.com')
validate_url('http://test.com/path')  # URL completa

validate_min_length / validate_max_length

from velox.validators import validate_min_length, validate_max_length

validate_min_length('abc', 2)  # ✓
validate_min_length('a', 2)    # ✗ ValueError

validate_max_length('abc', 5)  # ✓
validate_max_length('abcdef', 5)  # ✗ ValueError

validate_range

from velox.validators import validate_range

validate_range(10, min=0, max=100)  # ✓
validate_range(-1, min=0, max=100)   # ✗ ValueError

validate_regex

from velox.validators import validate_regex

validate_regex('abc123', r'^[a-z]+\d+$')  # ✓
validate_regex('123', r'^[a-z]+\d+$')     # ✗ ValueError

validate_file_extension

from velox.validators import validate_file_extension

validate_file_extension('photo.jpg', ['jpg', 'png', 'gif'])
validate_file_extension('document.pdf', ['jpg', 'png', 'gif'])  # ✗

validate_file_size

from velox.validators import validate_file_size

# max_size em bytes
validate_file_size(file_size=1024 * 1024, max_size=5 * 1024 * 1024)  # ✓
validate_file_size(file_size=10 * 1024 * 1024, max_size=5 * 1024 * 1024)  # ✗

Validação Combinada

from velox.validators import validate_email, validate_min_length

def validate_user_data(data):
    errors = []

    try:
        validate_email(data['email'])
    except ValueError:
        errors.append('Email inválido')

    try:
        validate_min_length(data['name'], 2)
    except ValueError:
        errors.append('Nome muito curto')

    return errors

Validadores Customizados

def validate_username(username):
    if not username.replace('_', '').isalnum():
        raise ValueError('Username deve ter apenas letras, números e underscore')
    if len(username) < 3:
        raise ValueError('Username deve ter no mínimo 3 caracteres')
    if len(username) > 30:
        raise ValueError('Username deve ter no máximo 30 caracteres')