ó
    °"³j  ã                  ó¶   • S SK Jr  S SKrS SKJr  S SKJrJrJrJ	r	J
r
  S SKJr  \\-  \	-  rSS jrSS jrSS jrSS	 jrSS
 jrSS jrSS jrSS jrSS jrg)é    )ÚannotationsN)ÚIterable)ÚMAX_EMAXÚMIN_EMINÚContextÚDecimalÚlocalcontext)ÚIntegralc                ó´  • [        U[        5      (       a  [        U 5      e[        U[        5      (       a  US:  a  [        U 5      e[	        U5      $ [        U5      [        L a.  [        R                  " U5      (       a  US:  a  [        U 5      eU$ [        U[        5      (       a(  UR                  5       (       a  US:  a  [        U 5      eU$ [        U 5      e)Nr   )Ú
isinstanceÚboolÚ_invalid_usage_valuer
   ÚintÚtypeÚfloatÚmathÚisfiniter   Ú	is_finite)Ú	usage_keyÚvalues     ÚP/home/mande/repo/quber/.venv/lib/python3.13/site-packages/genai_prices/_usage.pyÚvalidate_usage_valuer      s¯   € Ü�%œ×ÑÜ" 9Ó-Ð-ä�%œ×"Ñ"Ø�1‹9Ü& yÓ1Ð1Ü�5‹zÐäˆEƒ{”eÒÜ�}Š}˜U×#Ñ# u¨q£yÜ& yÓ1Ð1Øˆä�%œ×!Ñ!Ø�‰× Ñ  E¨A£IÜ& yÓ1Ð1Øˆä
˜yÓ
)Ð)ó    c                ó˜   • [        U [        5      (       a  U $ [        U [        5      (       a  [        U 5      $ [        [        U 5      5      $ ©N)r   r   r   Úrepr)r   s    r   Úusage_value_as_decimalr   !   s:   € Ü�%œ×!Ñ!ØˆÜ�%œ×ÑÜ�u‹~ÐÜ”4˜“;ÓÐr   c                ó   • [        X45      $ r   )Úsum_usage_values)ÚleftÚrights     r   Úadd_usage_valuesr"   )   s   € Ü˜T˜MÓ*Ð*r   c                ó  • [        U 5      n [        S U  5       5      (       a  [        U 5      $ [        S U  5       5      n[        [	        U5      5         [        U[        S5      S9nS S S 5        [        WU 5      $ ! , (       d  f       N= f)Nc              3  óB   #   • U  H  n[        U[        5      v •  M     g 7fr   ©r   r   ©Ú.0r   s     r   Ú	<genexpr>Ú#sum_usage_values.<locals>.<genexpr>/   s   é € Ð
6ªv eŒ:�eœS×!Ð!ªvùó   ‚c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr   ©r   r&   s     r   r(   r)   2   s   é € ÐMÂf¸UÔ1°%×8Ð8Âfùó   ‚r   ©Ústart)ÚtupleÚallÚsumr	   Ú_usage_contextr   Ú_decimal_result)ÚvaluesÚdecimal_valuesÚtotals      r   r   r   -   sp   € Ü�6‹]€FÜ
Ñ
6©vÓ
6×6Ñ6Ü�6‹{ÐäÑMÁfÓMÓM€NÜ	”n ^Ó4Õ	5Ü�N¬'°!«*Ñ5ˆ÷ 
6ô ˜5 &Ó)Ð)÷ 
6Õ	5ús   ÁA<Á<
B
c                ól  • [        U5      n[        U [        5      (       a%  [        S U 5       5      (       a  U [	        U5      -
  $ [        S U /UQ7 5       5      n[        [        U5      5         US   [	        USS  [        S5      S9-
  nS S S 5        [        WU /UQ75      $ ! , (       d  f       N= f)Nc              3  óB   #   • U  H  n[        U[        5      v •  M     g 7fr   r%   r&   s     r   r(   Ú(subtract_usage_values.<locals>.<genexpr>;   s   é € Ð'XÊKÀ5¬
°5¼#×(>Ð(>ÊKùr*   c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr   r,   r&   s     r   r(   r:   >   s   é € Ð^ÒF]¸UÔ1°%×8Ð8ÒF]ùr-   r   é   r.   )	r0   r   r   r1   r2   r	   r3   r   r4   )ÚminuendÚsubtrahendsr6   Úresults       r   Úsubtract_usage_valuesr@   9   s¥   € Ü˜Ó$€KÜ�'œ3×Ñ¤CÑ'XÉKÓ'X×$XÑ$XØœ˜[Ó)Ñ)Ð)äÑ^ÀwÐF]ÐQ\ÒF]Ó^Ó^€NÜ	”n ^Ó4Õ	5Ø Ñ"¤S¨¸¸Ð);Ä7È1Ã:Ñ%NÑNˆ÷ 
6ô ˜6 GÐ#:¨kÑ#:Ó;Ð;÷ 
6Õ	5ús   Á0B%Â%
B3c                óâ   • [        S U  5       5      n[        S U  5       5      nU[        U5      -
  S-   [        [	        [        U 5      5      5      -   n[        [        US5      [        [        S9$ )Nc              3  óh   #   • U  H(  n[        UR                  5       R                  5      v •  M*     g 7fr   )r   Úas_tupleÚexponentr&   s     r   r(   Ú!_usage_context.<locals>.<genexpr>F   s%   é € ÐIÂ&¸”c˜%Ÿ.™.Ó*×3Ñ3×4Ð4Â&ùs   ‚02c              3  ó@   #   • U  H  oR                  5       v •  M     g 7fr   )Úadjustedr&   s     r   r(   rE   G   s   é € Ð<²V¨E—~‘~×'Ð'²Vùs   ‚r<   )ÚprecÚEmaxÚEmin)r0   ÚmaxÚminÚlenÚstrr   r   r   )r5   Ú	exponentsÚmax_adjustedÚ	precisions       r   r3   r3   E   s^   € ÜÑIÁ&ÓIÓI€IÜÑ<±VÓ<Ó<€LØœs 9›~Ñ-°Ñ1´C¼¼CÀ»KÓ8HÓ4IÑI€IÜœ˜I qÓ)´¼xÑHÐHr   c                óh   • [        U 5      n[        R                  " U5      (       d  [        S5      eU$ )Nz,Usage arithmetic produced a non-finite float)r   r   r   Ú
ValueError)r   r?   s     r   Ú_decimal_result_as_floatrT   L   s+   € Ü�5‹\€FÜ�=Š=˜× Ñ ÜÐGÓHÐHØ€Mr   c                óJ   • [        S U 5       5      (       a  U $ [        U 5      $ )Nc              3  óB   #   • U  H  n[        U[        5      v •  M     g 7fr   )r   r   )r'   Úoperands     r   r(   Ú"_decimal_result.<locals>.<genexpr>T   s   é € Ð
@²x¨GŒ:�gœw×'Ð'²xùr*   )ÚanyrT   )r   Úoperandss     r   r4   r4   S   s#   € Ü
Ñ
@±xÓ
@×@Ñ@ØˆÜ# EÓ*Ð*r   c                ó    • [        SU  S35      $ )NzInvalid usage value for z7: expected a finite non-negative int, float, or Decimal)rS   )r   s    r   r   r   Y   s   € ÜÐ0°°Ð;rÐsÓtÐtr   )r   rN   r   ÚobjectÚreturnÚ
UsageValue)r   r^   r]   r   )r    r^   r!   r^   r]   r^   )r5   úIterable[UsageValue]r]   r^   )r=   r^   r>   r_   r]   r^   )r5   ztuple[Decimal, ...]r]   r   )r   r   r]   r   )r   r   rZ   ztuple[UsageValue, ...]r]   r^   )r   rN   r]   rS   )Ú
__future__r   r   Úcollections.abcr   Údecimalr   r   r   r   r	   Únumbersr
   r   r   r^   r   r   r"   r   r@   r3   rT   r4   r   © r   r   Ú<module>re      sT   ðÝ "ã Ý $ß FÕ FÝ à�5‰[˜7Ñ"€
ô*ô, ô+ô	*ô	<ôIôô+õur   