+
    VBiY                       a  0 t $ R t^ RIHt ^ RItRt]'       d   ^ RIHtHt ^ RI	H
t
 M^ RI	Ht R1tR]R&   ^tR]R&    RtR]R&    ] ! R R
]4      4       t] ! R R	]4      4       t] ! R R4      4       tR]P(                  ! R4      ]P(                  ! R4      3R]P(                  ! R4      ]P(                  ! R4      3R]P(                  ! R4      ]P(                  ! R4      3R]P(                  ! R4      ]P(                  ! R4      3^d]P(                  ! R4      ]P(                  ! R4      3^Z]P(                  ! R 4      ]P(                  ! R!4      3^2]P(                  ! R"4      ]P(                  ! R#4      3^(]P(                  ! R$4      ]P(                  ! R%4      3^
]P(                  ! R&4      ]P(                  ! R'4      3^	]P(                  ! R(4      ]P(                  ! R)4      3^]P(                  ! R*4      ]P(                  ! R+4      3^]P(                  ! R,4      ]P(                  ! R-4      3^]P(                  ! R.4      ]P(                  ! R/4      3.tR]R0&   R# )2z/Conversion between integers and roman numerals.)annotationsNF)Finalfinal)Self)r   MAXMINInvalidRomanNumeralErrorOutOfRangeErrorRomanNumeralr   __all__i  c                      ] tR t^+tRtRtR# )r	   z2Number out of range (must be between 1 and 4,999). N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       C/usr/lib/python3.14/site-packages/docutils/utils/_roman_numerals.pyr	   r	   +   s    <r   c                  2   a  ] tR t^0tRtR V 3R lltRtV ;t# )r   zNot a valid Roman numeral.c               $    V ^8  d   QhRRRRRR/# )   valuestrargsobjectreturnNoner   )formats   "r   __annotate__%InvalidRomanNumeralError.__annotate__4   s!     % %c %& %T %r   c                	6   < R V 2p\         SV `  ! V.VO5!   R# )zInvalid Roman numeral: N)super__init__)selfr   r   msg	__class__s   &&* r   r$   !InvalidRomanNumeralError.__init__4   s!    'w/$t$r   r   )r   r   r   r   r   r$   r   __classcell__r'   s   @r   r   r   0   s    $% %r   c                     a  ] tR t^9t$ RtRtR]R&   R V 3R lltR R ltR R	 lt	R
 R lt
R R ltR R ltR R ltR V 3R lltR R ltR R lt]R R l4       tRtV ;t# )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intc                    V ^8  d   QhRRRR/# )r   r   r-   r   r   r   )r   s   "r   r    RomanNumeral.__annotate__H   s     - -c - -r   c               	   < \        V\        4      '       g'   \        V4      P                  pR V: 2p\	        V4      hV\
        8  g   V\        8  d   RV R2p\        V4      h\        SV `%  RV4       R# )z*RomanNumeral: an integer is required, not z7Number out of range (must be between 1 and 4,999). Got .r,   N)

isinstancer-   typer   	TypeErrorr   r   r	   r#   __setattr__)r%   r   value_qualnamer&   r'   s   ""  r   r$   RomanNumeral.__init__H   sl    %%%!%[55N>~>PQCC. 3;%#+KE7RSTC!#&&He,r   c                   V ^8  d   QhRR/# r   r   r-   r   )r   s   "r   r    r/   R   s       r   c                    V P                   # )z)Return the integer value of this numeral.r,   r%   s   &r   __int__RomanNumeral.__int__R   s    {{r   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r    r/   V   s     # # #r   c                "    V P                  4       # )z;Return the well-formed (uppercase) string for this numeral.)to_uppercaser<   s   &r   __str__RomanNumeral.__str__V   s      ""r   c                   V ^8  d   QhRR/# r@   r   )r   s   "r   r    r/   Z   s     = =# =r   c                P    V P                   P                   RV P                  : R2# )z1Return the string representation of this numeral.())r'   r   r,   r<   s   &r   __repr__RomanNumeral.__repr__Z   s$    ..))*!DKK?!<<r   c                    V ^8  d   QhRRRR/# r   otherr   r   boolr   )r   s   "r   r    r/   ^         F t r   c                l    \        V\        4      '       d   V P                  VP                  8H  # \        # )zReturn self == other.r2   r
   r,   NotImplementedr%   rM   s   &&r   __eq__RomanNumeral.__eq__^   s(    e\**;;%,,..r   c                    V ^8  d   QhRRRR/# rL   r   )r   s   "r   r    r/   d   rO   r   c                l    \        V\        4      '       d   V P                  VP                  8  # \        # )zReturn self < other.rQ   rS   s   &&r   __lt__RomanNumeral.__lt__d   s(    e\**;;--r   c                   V ^8  d   QhRR/# r9   r   )r   s   "r   r    r/   j   s     ! !# !r   c                ,    \        V P                  4      # )z(Return the hashed value of this numeral.)hashr,   r<   s   &r   __hash__RomanNumeral.__hash__j   s    DKK  r   c               $    V ^8  d   QhRRRRRR/# )r   keyr   r   r   r   r   r   )r   s   "r   r    r/   n   s!     ( (s (6 (d (r   c                X   < VR8X  d   RV: R2p\        V4      h\        SV `	  W4       R# )z%Implement setattr(self, name, value).r,   zCannot set the z attribute.N)AttributeErrorr#   r5   )r%   r`   r   r&   r'   s   &&& r   r5   RomanNumeral.__setattr__n   s0    (?#C7+6C %%C'r   c                   V ^8  d   QhRR/# r@   r   )r   s   "r   r    r/   u         c r   c                    . pV P                   p\         F'  w  r4pW#8  g   K  W#,          pVP                  V4       K#  	  RP                  V4      # )z}Convert 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   rB   RomanNumeral.to_uppercaseu   sH     KK5NE*


4  6 wws|r   c                   V ^8  d   QhRR/# r@   r   )r   s   "r   r    r/      re   r   c                    . pV P                   p\         F'  w  r4pW#8  g   K  W#,          pVP                  V4       K#  	  RP                  V4      # )z|Convert a ``RomanNumeral`` to a lowercase string.

>>> answer = RomanNumeral(42)
>>> assert answer.to_lowercase() == 'xlii'
rg   rh   )r%   rl   rm   r   ro   rn   s   &     r   to_lowercaseRomanNumeral.to_lowercase   sH     KK5NEd*


4  6 wws|r   c                    V ^8  d   QhRRRR/# )r   stringr   r   r   r   )r   s   "r   r    r/      s     d/ d/ d/D d/r   c                  V'       d   \        V\        4      '       g   \        V4      hVP                  4       '       d)   VP	                  4       '       d   VP                  R4      pMWVP                  4       '       d7   VP                  4       '       d!   VP                  4       P                  R4      pM\        V4      h\        R4      P                  V4      '       g   \        V4      h^ p^ p\        ^4       F'  pW$V^,            R8X  d   VR,          pV^,          pK'   M	  \        V4      V8X  d	   V ! V4      # W$V^,            R8X  d   VR,          pV^,          pM{W$V^,            R8X  d   VR,          pV^,          pMXW$V^,            R	8X  d   VR
,          pV^,          p\        ^4       F'  pW$V^,            R8X  d   V^d,          pV^,          pK'   M	  \        V4      V8X  d	   V ! V4      # W$V^,            R8X  d   V^Z,          pV^,          pM{W$V^,            R8X  d   V^(,          pV^,          pMXW$V^,            R8X  d   V^2,          pV^,          p\        ^4       F'  pW$V^,            R8X  d   V^
,          pV^,          pK'   M	  \        V4      V8X  d	   V ! V4      # W$V^,            R8X  d   V^	,          pV^,          pM{W$V^,            R8X  d   V^,          pV^,          pMXW$V^,            R8X  d   V^,          pV^,          p\        ^4       F'  pW$V^,            R8X  d   V^,          pV^,          pK'   M	  \        V4      V8X  d	   V ! V4      # \        V4      h)zCreate a ``RomanNumeral`` from a well-formed string representation.

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

>>> answer = RomanNumeral.from_string('XLII')
>>> assert int(answer) == 42
asciis   IVXLCDM   M  s   CM  s   CD     D     Cs   XCs   XL   L   Xs   IXs   IV   V   I)r2   r   r   isasciiisupperencodeislowerupper	frozenset
issupersetrangelen)clsrv   charsresultidxro   s   ""    r   from_stringRomanNumeral.from_string   s.    Z44*622 >> 0 0MM'*E^^&.."2"2LLN))'2E +622 $//66*622 qAq!T)$q  u:v; S1W&cMF1HCsQw5(cMF1HCq!T)#q1XS1W%-cMF1HC  u:v; S1W&bLF1HCsQw5(bLF1HCq!T)"q1XS1W%-bLF1HC  u:v; S1W&aKF1HCsQw5(aKF1HCq!T)!q1XS1W%-aKF1HC  u:v;&v..r   r   r;   )r   r   r   r   r   	__slots____annotations__r$   r=   rC   rI   rT   rX   r]   r5   rB   rs   classmethodr   r   r)   r*   s   @r   r
   r
   9   sf     IK- -#=!( ( d/ d/r   rz   Mmr{   CMcmr~   Ddr|   CDcdCcXCxcLlXLxlXxIXixVvIVivIiri   )r   r   r   r	   r
   )__conditional_annotations__r   
__future__r   sysTYPE_CHECKINGtypingr   r   docutils.utils._typingr   r   r   r   r   r4   r	   
ValueErrorr   r
   internri   )r   s   @r   <module>r      s   6 " 
#+,  U : U  9 =i = = %z % % |/ |/ |/@ 
3::c?CJJsO,#**T
CJJt,-#**S/3::c?+#**T
CJJt,-#**S/3::c?+D	3::d+,C#**S/*D	3::d+,C#**S/*

4#**T*+

3C)

4#**T*+

3C)"   Cr   