
    <iY                     P   U d Z ddlmZ ddlZdZerddlmZmZ ddlm	Z	 nddlmZ dZ
d	ed
<   dZd	ed<   	 dZd	ed<   	 e G d de                      Ze G d de                      Ze G d d                      Zd ej        d           ej        d          fd ej        d           ej        d          fd ej        d           ej        d          fd ej        d           ej        d           fd! ej        d"           ej        d#          fd$ ej        d%           ej        d&          fd' ej        d(           ej        d)          fd* ej        d+           ej        d,          fd- ej        d.           ej        d/          fd0 ej        d1           ej        d2          fd3 ej        d4           ej        d5          fd6 ej        d7           ej        d8          fd ej        d9           ej        d:          fgZd	ed;<   dS )<z/Conversion between integers and roman numerals.    )annotationsNF)Finalfinal)Self)r   )MAXMINInvalidRomanNumeralErrorOutOfRangeErrorRomanNumeralr   __all__   r   i  r   c                      e Zd ZdZdS )r
   z2Number out of range (must be between 1 and 4,999).N)__name__
__module____qualname____doc__     /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/docutils/utils/_roman_numerals.pyr
   r
   +   s        <<<<r   r
   c                  $     e Zd ZdZd	 fdZ xZS )
r	   zNot a valid Roman numeral.valuestrargsobjectreturnNonec                F    d| } t                      j        |g|R   d S )NzInvalid Roman numeral: )super__init__)selfr   r   msg	__class__s       r   r   z!InvalidRomanNumeralError.__init__4   s5    ///$t$$$$$$r   )r   r   r   r   r   r   )r   r   r   r   r   __classcell__r"   s   @r   r	   r	   0   sC        $$% % % % % % % % % %r   r	   c                       e Zd ZU dZdZded<   d fdZdd	ZddZddZ	ddZ
ddZddZd fdZddZddZedd            Z xZS ) r   zA Roman numeral.

    Only values between 1 and 4,999 are valid.
    Stores the value internally as an ``int``.

    >>> answer = RomanNumeral(42)
    >>> print(answer.to_uppercase())
    XLII
    _valueintr'   r   r   r   c                  t          |t                    s(t          |          j        }d|}t	          |          |t
          k     s|t          k    rd| d}t          |          t                      	                    d|           d S )Nz*RomanNumeral: an integer is required, not z7Number out of range (must be between 1 and 4,999). Got .r'   )

isinstancer(   typer   	TypeErrorr   r   r
   r   __setattr__)r    r   value_qualnamer!   r"   s       r   r   zRomanNumeral.__init__H   s    %%% 	!!%[[5NQ~QQCC.. 3;;%#++TETTTC!#&&&He,,,,,r   c                    | j         S )z)Return the integer value of this numeral.r&   r    s    r   __int__zRomanNumeral.__int__R   s
    {r   r   c                *    |                                  S )z;Return the well-formed (uppercase) string for this numeral.)to_uppercaser1   s    r   __str__zRomanNumeral.__str__V   s      """r   c                0    | j         j         d| j        dS )z1Return the string representation of this numeral.())r"   r   r'   r1   s    r   __repr__zRomanNumeral.__repr__Z   s     .)<<DK<<<<r   otherr   boolc                Z    t          |t                    r| j        |j        k    S t          S )zReturn self == other.r+   r   r'   NotImplementedr    r:   s     r   __eq__zRomanNumeral.__eq__^   s)    e\** 	/;%,..r   c                Z    t          |t                    r| j        |j        k     S t          S )zReturn self < other.r=   r?   s     r   __lt__zRomanNumeral.__lt__d   s)    e\** 	.;--r   c                *    t          | j                  S )z(Return the hashed value of this numeral.)hashr'   r1   s    r   __hash__zRomanNumeral.__hash__j   s    DK   r   keyc                    |dk    rd|d}t          |          t                                          ||           dS )z%Implement setattr(self, name, value).r'   zCannot set the z attribute.N)AttributeErrorr   r.   )r    rF   r   r!   r"   s       r   r.   zRomanNumeral.__setattr__n   sJ    (??6C666C %%%C'''''r   c                    g }| j         }t          D ],\  }}}||k    r ||z  }|                    |           ||k     -d                    |          S )zConvert a ``RomanNumeral`` to an uppercase string.

        >>> answer = RomanNumeral(42)
        >>> assert answer.to_uppercase() == 'XLII'
         r'   _ROMAN_NUMERAL_PREFIXESappendjoin)r    outnr   name_s         r   r4   zRomanNumeral.to_uppercaseu   sg     K5 	! 	!NE4u**U


4    u** wws||r   c                    g }| j         }t          D ],\  }}}||k    r ||z  }|                    |           ||k     -d                    |          S )zConvert a ``RomanNumeral`` to a lowercase string.

        >>> answer = RomanNumeral(42)
        >>> assert answer.to_lowercase() == 'xlii'
        rJ   rK   )r    rO   rP   r   rR   rQ   s         r   to_lowercasezRomanNumeral.to_lowercase   sg     K5 	! 	!NE1du**U


4    u** wws||r   stringr   c               b   |rt          |t                    st          |          |                                r*|                                r|                    d          }n_|                                r<|                                r(|                                                    d          }nt          |          t          d          	                    |          st          |          d}d}t          d          D ]}|||dz            dk    r|dz  }|dz  } t          |          |k    r | |          S |||dz            d	k    r|d
z  }|dz  }ne|||dz            dk    r|dz  }|dz  }nI|||dz            dk    r
|dz  }|dz  }t          d          D ]}|||dz            dk    r|dz  }|dz  } t          |          |k    r | |          S |||dz            dk    r|dz  }|dz  }ne|||dz            dk    r|dz  }|dz  }nI|||dz            dk    r
|dz  }|dz  }t          d          D ]}|||dz            dk    r|dz  }|dz  } t          |          |k    r | |          S |||dz            dk    r|dz  }|dz  }ne|||dz            dk    r|dz  }|dz  }nI|||dz            dk    r
|dz  }|dz  }t          d          D ]}|||dz            dk    r|dz  }|dz  } t          |          |k    r | |          S t          |          ) zCreate a ``RomanNumeral`` from a well-formed string representation.

        Returns ``RomanNumeral`` or raises ``InvalidRomanNumeralError``.

        >>> answer = RomanNumeral.from_string('XLII')
        >>> assert int(answer) == 42
        asciis   IVXLCDMr      r      M     s   CM  s   CD     D        Cd   s   XCZ   s   XL(      L2      X
   s   IX	   s   IV   V      I)r+   r   r	   isasciiisupperencodeislowerupper	frozenset
issupersetrangelen)clsrU   charsresultidxrR   s         r   from_stringzRomanNumeral.from_string   s     	3Z44 	3*6222 >> 	3 0 0 	3MM'**EE^^ 	3&.."2"2 	3LLNN))'22EE +6222 $$//66 	3*6222 q 	 	ASq[!T))$qu::3v;; S1W&&cMF1HCC3sQw;5((cMF1HCCSq[!T))#q1XX  S1W%--cMF1HCCu::3v;; S1W&&bLF1HCC3sQw;5((bLF1HCCSq[!T))"q1XX  S1W%--bLF1HCCu::3v;; S1W&&aKF1HCC3sQw;5((aKF1HCCSq[!T))!q1XX  S1W%--aKF1HCCu::3v;;&v...r   )r   r(   r   r   )r   r(   )r   r   )r:   r   r   r;   )rF   r   r   r   r   r   )rU   r   r   r   )r   r   r   r   	__slots____annotations__r   r2   r5   r9   r@   rB   rE   r.   r4   rT   classmethodrz   r#   r$   s   @r   r   r   9   s?          IKKK- - - - - -   # # # #= = = =      ! ! ! !( ( ( ( ( (       d/ d/ d/ [d/ d/ d/ d/ d/r   r   rZ   Mmr\   CMcmr_   Ddr]   CDcdrb   Ccrc   XCxcrf   Llrd   XLxlrh   Xxri   IXixrk   VvrX   IVivIirL   )r   
__future__r   sysTYPE_CHECKINGtypingr   r   docutils.utils._typingr   r   r|   r   r   r-   r
   
ValueErrorr	   r   internrL   r   r   r   <module>r      s(   6 5 5 " " " " " " 



 -########+++++++,,,,,,      :      9 = = = = =i = = = % % % % %z % % % |/ |/ |/ |/ |/ |/ |/ |/@ 
:3:c??JCJsOO,*#*T

JCJt,,-*#*S//:3:c??+*#*T

JCJt,,-*#*S//:3:c??+D		:3:d++,C*#*S//*D		:3:d++,C*#*S//*

4*#*T**+

3C)

4*#*T**+

3C)"      C Br   