
    jV                         d Z ddlmZ defdZdefdZedefd            Zedefd            Zedefd	            Zd
S )zFinance.   )	validatorcusipc                    d\  }}t          d          D ]}| |         }|dk    r&|dk    r t          |          t          d          z
  }n||dk    r)|dk    r#dt          |          z   t          d          z
  }nM|dk    r)|d	k    r#dt          |          z   t          d          z
  }n|d
k    rd}n|dk    rd}n|dk    rd}n dS |dz  r||z  }||dz  z   |dz  z   }|dz  dk    S )N    N	   09AZ
   az*$   @%   #&   Fr   r   rangeord)r   checkvalidxcs        U/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/validators/finance.py_cusip_checksumr      s    JE3Qxx 1 1#J88Sa&&3s88#CC#XX!s((s1vv+C(CC#XX!s((s1vv+C(CC#XXCC#XXCC#XXCC557 	3JC#sRx0BJ1    valuec                    d\  }}t          d          D ]}| |         }|dk    r,|dk    r&|dk    r t          |          t          d          z
  }na|dk    r)|dk    r#dt          |          z   t          d          z
  }n2|d	k    r)|d
k    r#dt          |          z   t          d	          z
  }n dS |dz  r||z  }|dz  dk    S )Nr      r	   r
   r   r   r   r   r   r   Fr   r   )r    r   r   r   r   s        r   _isin_checksumr#   "   s    JE3Ryy  #J88SS1WWa&&3s88#CC#XX!s((s1vv+C(CC#XX!s((s1vv+C(CC557 	3JCBJ1r   c                 F    t          |           dk    ot          |           S )a  Return whether or not given value is a valid CUSIP.

    Checks if the value is a valid [CUSIP][1].
    [1]: https://en.wikipedia.org/wiki/CUSIP

    Examples:
        >>> cusip('037833DP2')
        True
        >>> cusip('037833DP3')
        ValidationError(func=cusip, args={'value': '037833DP3'})

    Args:
        value: CUSIP string to validate.

    Returns:
        (Literal[True]): If `value` is a valid CUSIP string.
        (ValidationError): If `value` is an invalid CUSIP string.
    r   )lenr   r    s    r   r   r   6   s!    ( u::?5u555r   c                 F    t          |           dk    ot          |           S )aE  Return whether or not given value is a valid ISIN.

    Checks if the value is a valid [ISIN][1].
    [1]: https://en.wikipedia.org/wiki/International_Securities_Identification_Number

    Examples:
        >>> isin('037833DP2')
        ValidationError(func=isin, args={'value': '037833DP2'})
        >>> isin('037833DP3')
        ValidationError(func=isin, args={'value': '037833DP3'})

    Args:
        value: ISIN string to validate.

    Returns:
        (Literal[True]): If `value` is a valid ISIN string.
        (ValidationError): If `value` is an invalid ISIN string.
    r"   )r%   r#   r&   s    r   isinr(   M   s"    ( u::5u 5 55r   c                 h   t          |           dk    rdS g d}d}t          d          D ]}| |         }|dv r dS d}|dk    r&|dk    r t          |          t          d          z
  }n2|d	k    r)|d
k    r#dt          |          z   t          d	          z
  }n dS ||||         z  z  }|dz  dk    S )a  Return whether or not given value is a valid SEDOL.

    Checks if the value is a valid [SEDOL][1].
    [1]: https://en.wikipedia.org/wiki/SEDOL

    Examples:
        >>> sedol('2936921')
        True
        >>> sedol('29A6922')
        ValidationError(func=sedol, args={'value': '29A6922'})

    Args:
        value: SEDOL string to validate.

    Returns:
        (Literal[True]): If `value` is a valid SEDOL string.
        (ValidationError): If `value` is an invalid SEDOL string.
       F)r      r   r*   r+   r   r   r   AEIOUNr	   r
   r   r   r   )r%   r   r   )r    weightsr   r   r   r   s         r   sedolr.   d   s    ( 5zzQu###GEQxx $ $#J<<5588Sa&&3s88#CC#XX!s((s1vv+C(CC55ws|##BJ1r   N)	__doc__utilsr   strr   r#   r   r(   r.    r   r   <module>r3      s          3    8#    ( 6 6 6 6 6, 6 6 6 6 6, & & & & & & &r   