CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-validators

Python Data Validation for Humans™ - comprehensive validation library for various data types without schema definitions

Overview
Eval results
Files

financial-validation.mddocs/

Financial Validation

Validators for financial instruments including credit cards, banking codes, and securities identifiers. These validators implement industry-standard algorithms like Luhn checksum and provide comprehensive coverage of major financial data formats.

Capabilities

Credit Card Validation

Validates credit card numbers using the Luhn algorithm and card-specific format rules.

def card_number(value: str, /) -> Union[Literal[True], ValidationError]:
    """
    Validate generic credit card numbers using Luhn algorithm.
    
    Parameters:
    - value: Credit card number string (digits only or with spaces/dashes)
    
    Returns:
    True if valid card number, ValidationError otherwise
    
    Uses Luhn checksum algorithm for validation.
    Accepts numbers with or without separators.
    """

def visa(value: str, /) -> Union[Literal[True], ValidationError]:
    """
    Validate Visa credit card numbers.
    
    Parameters:
    - value: Visa card number string
    
    Returns:
    True if valid Visa number, ValidationError otherwise
    
    Validates length (13, 16, or 19 digits) and prefix (4).
    Includes Luhn checksum validation.
    """

def mastercard(value: str, /) -> Union[Literal[True], ValidationError]:
    """
    Validate Mastercard credit card numbers.
    
    Parameters:
    - value: Mastercard number string
    
    Returns:
    True if valid Mastercard number, ValidationError otherwise
    
    Validates length (16 digits) and prefix ranges.
    Includes Luhn checksum validation.
    """

def amex(value: str, /) -> Union[Literal[True], ValidationError]:
    """
    Validate American Express credit card numbers.
    
    Parameters:
    - value: American Express card number string
    
    Returns:
    True if valid Amex number, ValidationError otherwise
    
    Validates length (15 digits) and prefix (34 or 37).
    Includes Luhn checksum validation.
    """

def unionpay(value: str, /) -> Union[Literal[True], ValidationError]:
    """
    Validate UnionPay credit card numbers.
    
    Parameters:
    - value: UnionPay card number string
    
    Returns:
    True if valid UnionPay number, ValidationError otherwise
    """

def diners(value: str, /) -> Union[Literal[True], ValidationError]:
    """
    Validate Diners Club credit card numbers.
    
    Parameters:
    - value: Diners Club card number string
    
    Returns:
    True if valid Diners number, ValidationError otherwise
    
    Validates length (14 digits) and prefix ranges.
    Includes Luhn checksum validation.
    """

def jcb(value: str, /) -> Union[Literal[True], ValidationError]:
    """
    Validate JCB credit card numbers.
    
    Parameters:
    - value: JCB card number string
    
    Returns:
    True if valid JCB number, ValidationError otherwise
    
    Validates length (16 digits) and prefix ranges.
    Includes Luhn checksum validation.
    """

def discover(value: str, /) -> Union[Literal[True], ValidationError]:
    """
    Validate Discover credit card numbers.
    
    Parameters:
    - value: Discover card number string
    
    Returns:
    True if valid Discover number, ValidationError otherwise
    
    Validates length (16 digits) and prefix ranges.
    Includes Luhn checksum validation.
    """

def mir(value: str, /) -> Union[Literal[True], ValidationError]:
    """
    Validate Mir payment system card numbers.
    
    Parameters:
    - value: Mir card number string
    
    Returns:
    True if valid Mir number, ValidationError otherwise
    
    Russian payment system card validation.
    Includes Luhn checksum validation.
    """

Banking Codes

Validates international banking and account identifiers.

def iban(value: str, /) -> Union[Literal[True], ValidationError]:
    """
    Validate International Bank Account Numbers (IBAN).
    
    Parameters:
    - value: IBAN string to validate
    
    Returns:
    True if valid IBAN, ValidationError otherwise
    
    Validates:
    - Country code (2 letters)
    - Check digits (2 digits)
    - Basic Bank Account Number (up to 30 alphanumeric)
    - MOD-97 checksum algorithm
    
    Accepts IBANs with or without spaces.
    """

Securities Identifiers

Validates financial securities identifiers used in trading and reporting.

def cusip(value: str, /) -> Union[Literal[True], ValidationError]:
    """
    Validate CUSIP (Committee on Uniform Securities Identification Procedures) identifiers.
    
    Parameters:
    - value: CUSIP identifier string
    
    Returns:
    True if valid CUSIP, ValidationError otherwise
    
    Validates:
    - Length (9 characters)
    - Format (6 alphanumeric + 2 alphanumeric + 1 check digit)
    - Check digit algorithm
    
    Used primarily in North American markets.
    """

def isin(value: str, /) -> Union[Literal[True], ValidationError]:
    """
    Validate ISIN (International Securities Identification Number) codes.
    
    Parameters:
    - value: ISIN code string
    
    Returns:
    True if valid ISIN, ValidationError otherwise
    
    Validates:
    - Length (12 characters)
    - Format (2 letter country code + 9 alphanumeric + 1 check digit)
    - Luhn algorithm check digit
    
    International standard for securities identification.
    """

def sedol(value: str, /) -> Union[Literal[True], ValidationError]:
    """
    Validate SEDOL (Stock Exchange Daily Official List) codes.
    
    Parameters:
    - value: SEDOL code string
    
    Returns:
    True if valid SEDOL, ValidationError otherwise
    
    Validates:
    - Length (7 characters)
    - Format (6 alphanumeric + 1 check digit)
    - Check digit algorithm
    
    Used primarily in UK and Irish markets.
    """

Usage Examples

import validators

# Credit card validation
validators.card_number('4111111111111111')    # True (generic Luhn check)
validators.visa('4111111111111111')           # True (Visa specific)
validators.mastercard('5555555555554444')     # True (Mastercard specific)
validators.amex('378282246310005')            # True (15-digit Amex)

# Card numbers with separators
validators.visa('4111-1111-1111-1111')        # True
validators.visa('4111 1111 1111 1111')        # True

# Different card types
validators.diners('30569309025904')           # True (14-digit Diners)
validators.jcb('3530111333300000')            # True (JCB)
validators.discover('6011111111111117')       # True (Discover)
validators.unionpay('6200000000000005')       # True (UnionPay)
validators.mir('2200000000000004')            # True (Mir)

# IBAN validation
validators.iban('GB82 WEST 1234 5698 7654 32')  # True (with spaces)
validators.iban('GB82WEST12345698765432')        # True (without spaces)
validators.iban('DE89 3704 0044 0532 0130 00')  # True (German IBAN)

# Securities identifiers
validators.cusip('037833100')                  # True (Apple Inc.)
validators.isin('US0378331005')                # True (Apple Inc. ISIN)
validators.sedol('0263494')                    # True (British Petroleum)

# Invalid examples
validators.visa('4111111111111112')            # ValidationError (bad check digit)
validators.iban('GB82WEST12345698765433')      # ValidationError (bad checksum)
validators.cusip('037833101')                  # ValidationError (bad check digit)

Error Handling

Financial validators provide detailed error information:

import validators

# Get validation details
result = validators.visa('1234567890123456')
if not result:
    print(f"Validation failed: {result}")
    print(f"Function: {result.func.__name__}")
    print(f"Value: {result.value}")

# Raise exceptions for invalid data
try:
    validators.iban('INVALID-IBAN', r_ve=True)
except validators.ValidationError as e:
    print(f"IBAN validation failed: {e}")

Install with Tessl CLI

npx tessl i tessl/pypi-validators

docs

basic-validation.md

country-validation.md

crypto-validation.md

encoding-validation.md

financial-validation.md

i18n-validation.md

index.md

network-validation.md

system-validation.md

tile.json