
    Ii                     x    S r SSKJr  S\4S jrS\4S jr\S\4S j5       r\S\4S j5       r\S\4S	 j5       rg
)zFinance.   )	validatorcusipc                    Su  p[        S5       H  nX   nUS:  a  US::  a  [        U5      [        S5      -
  nOkUS:  a!  US::  a  S[        U5      -   [        S5      -
  nODUS:  a!  US	::  a  S[        U5      -   [        S5      -
  nOUS
:X  a  SnOUS:X  a  SnOUS:X  a  SnO  gUS-  (       a  X"-  nXS-  -   US-  -   nM     US-  S:H  $ )N    N	   09AZ
   az*$   @%   #&   Fr   r   rangeord)r   checkvalidxcs        8/venv/lib/python3.13/site-packages/validators/finance.py_cusip_checksumr      s    JEQxJ8Sa&3s8#C#X!s(s1v+C(C#X!s(s1v+C(C#XC#XC#XC7JC#sRx0) , BJ1    valuec                 Z   Su  p[        S5       H  nX   nUS:  a$  US::  a  US:  a  [        U5      [        S5      -
  nOPUS:  a!  US::  a  S[        U5      -   [        S5      -
  nO)US	:  a!  US
::  a  S[        U5      -   [        S	5      -
  nO  gUS-  (       d  M  X"-  nM     US-  S:H  $ )Nr      r	   r
   r   r   r   r   r   r   Fr   r   )r    r   r   r   r   s        r   _isin_checksumr#   "   s    JERyJ8SS1Wa&3s8#C#X!s(s1v+C(C#X!s(s1v+C(C77JC  BJ1r   c                 B    [        U 5      S:H  =(       a    [        U 5      $ )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')
    ValidationFailure(func=cusip, ...)

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5r   c                 B    [        U 5      S:H  =(       a    [        U 5      $ )a  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')
    True
    >>> isin('037833DP3')
    ValidationFailure(func=isin, ...)

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5r   c                 *   [        U 5      S:w  a  g/ SQnSn[        S5       Hg  nX   nUS;   a    gSnUS:  a  US::  a  [        U5      [        S5      -
  nO)US	:  a!  US
::  a  S[        U5      -   [        S	5      -
  nO  gX%X   -  -  nMi     US-  S:H  $ )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')
    ValidationFailure(func=sedol, ...)

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    ( 5zQ#GEQxJ<8Sa&3s8#C#X!s(s1v+C(Cw|##  BJ1r   N)	__doc__utilsr   strr   r#   r   r(   r.    r   r   <module>r3      st     3 8# ( 6 6 6, 6 6 6, & & &r   