Ë
    ��h_  ã                   ó¬  — d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	 e j                  dk\  rd dlmZ nd dlmZ  G d„ de«      Zd	ed
e	e   dee   fd„Zd	edee   dee   dee   dee   f
d„Z	 dd	edee   deee      dee   fd„Zedk(  rHd dlmZ e G d„ d«      «       Z ed eddd«       eddd«       eddd«      g«      Z e ee«      «       yy)é    N)ÚFraction)Úceil)ÚcastÚListÚOptionalÚSequence)é   é   )ÚProtocolc                   óB   — e Zd ZU dZdZee   ed<   dZeed<   dZ	eed<   y)ÚEdgez1Any object that defines an edge (such as Layout).NÚsizeé   ÚratioÚminimum_size)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚintÚ__annotations__r   r   © ó    úU/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pip/_vendor/rich/_ratio.pyr   r      s&   … Ù;à€Dˆ(�3‰-ÓØ€Eˆ3ƒNØ€L�#Ôr   r   ÚtotalÚedgesÚreturnc                 ó´  — |D �cg c]  }|j                   xs d‘Œ }}t        }d|v �rt        t        ||«      «      D ���cg c]  \  }\  }}|€||f‘Œ }}}}| t	        d„ |D «       «      z
  }|dk  r1t        ||«      D ��cg c]  \  }}|€|j
                  xs dn|‘Œ c}}S  ||t	        d„ |D «       «      «      }	|D ]2  \  }}|	|j                  z  |j
                  k  sŒ#|j
                  ||<    n8  |d«      }
|D ])  \  }}t        |	|j                  z  |
z   d«      \  }}
|||<   Œ+ nd|v r�Œt        t        t           |«      S c c}w c c}}}w c c}}w )aŒ  Divide total space to satisfy size, ratio, and minimum_size, constraints.

    The returned list of integers should add up to total in most cases, unless it is
    impossible to satisfy all the constraints. For instance, if there are two edges
    with a minimum size of 20 each and `total` is 30 then the returned list will be
    greater than total. In practice, this would mean that a Layout object would
    clip the rows that would overflow the screen height.

    Args:
        total (int): Total number of characters.
        edges (List[Edge]): Edges within total space.

    Returns:
        List[int]: Number of characters for each edge.
    Nc              3   ó(   K  — | ]
  }|xs d –— Œ y­w)r   Nr   )Ú.0r   s     r   ú	<genexpr>z ratio_resolve.<locals>.<genexpr>2   s   è ø€ Ò<¨d ¢	¨£	Ñ<ùs   ‚r   r   c              3   óB   K  — | ]  \  }}|j                   xs d –— Œ y­w)r   N)r   )r    Ú_Úedges      r   r!   z ratio_resolve.<locals>.<genexpr>;   s   è ø€ ÒK±°°D˜DŸJ™JšO¨!›OÑKùs   ‚)r   r   Ú	enumerateÚzipÚsumr   r   Údivmodr   r   r   )r   r   r$   ÚsizesÚ	_FractionÚindexr   Úflexible_edgesÚ	remainingÚportionÚ	remainders              r   Úratio_resolver0      sž  € ð" .3Ö3 Tˆd�i‰iÒ˜4ÑÐ3€EÐ3ä€Ið �%Š-ô (1´°U¸EÓ1BÓ'C÷
ð 
á#�‘|˜˜dØˆ|ð �DŠMð
ˆò 
ð œCÑ<°eÔ<Ó<Ñ<ˆ	Ø˜Š>ô #& e¨UÓ"3÷á�D˜$ð .2¨\�$×#Ñ#Ò(¡q¸tÑCóð ñ
 Ø”sÑK¸NÔKÓKó
ˆð
 *ò 	‰KˆE�4Ø˜Ÿ™Ñ# t×'8Ñ'8Ó8Ø#×0Ñ0��e‘áð		ñ " !›ˆIØ-ò $‘��tÜ"(¨°4·:±:Ñ)=À	Ñ)IÈ1Ó"M‘��iØ#��e’ð$ð ðE �%‹-ôH ””S‘	˜5Ó!Ð!ùòS 4ùô
ùós   …EÁEÂEÚratiosÚmaximumsÚvaluesc                 óF  — t        ||«      D ��cg c]  \  }}|r|nd‘Œ }}}t        |«      }|s|dd S | }g }|j                  }	t        |||«      D ]F  \  }}
}|r6|dkD  r1t        |
t	        ||z  |z  «      «      } |	||z
  «       ||z  }||z  }Œ? |	|«       ŒH |S c c}}w )ad  Divide an integer total in to parts based on ratios.

    Args:
        total (int): The total to divide.
        ratios (List[int]): A list of integer ratios.
        maximums (List[int]): List of maximums values for each slot.
        values (List[int]): List of values

    Returns:
        List[int]: A list of integers guaranteed to sum to total.
    r   N)r&   r'   ÚappendÚminÚround)r   r1   r2   r3   r   Ú_maxÚtotal_ratioÚtotal_remainingÚresultr5   ÚmaximumÚvalueÚdistributeds                r   Úratio_reducer?   Q   sÊ   € ô 7:¸&À(Ó6K×L¡{ u¨d‘t‰e Ñ"ÐL€FÑLÜ�f“+€KÙØ‘aˆyÐØ€OØ€FØ�]‰]€FÜ!$ V¨X°vÓ!>ò Ñˆˆw˜Ù�[ 1’_Ü˜g¤u¨U°_Ñ-DÀ{Ñ-RÓ'SÓTˆKÙ�5˜;Ñ&Ô'Ø˜{Ñ*ˆOØ˜5Ñ ‰Ká�5�Mðð €Mùó Ms   �BÚminimumsc                 ób  — |r"t        ||«      D ��cg c]  \  }}|r|nd‘Œ }}}t        |«      }|dkD  sJ d«       ‚| }g }|j                  }|€dgt        |«      z  }	n|}	t        ||	«      D ]:  \  }}
|dkD  rt	        |
t        ||z  |z  «      «      }n|} ||«       ||z  }||z  }Œ< |S c c}}w )a<  Distribute an integer total in to parts based on ratios.

    Args:
        total (int): The total to divide.
        ratios (List[int]): A list of integer ratios.
        minimums (List[int]): List of minimum values for each slot.

    Returns:
        List[int]: A list of integers guaranteed to sum to total.
    r   zSum of ratios must be > 0)r&   r'   r5   ÚlenÚmaxr   )r   r1   r@   r   Ú_minr9   r:   Údistributed_totalr5   Ú	_minimumsÚminimumr>   s               r   Úratio_distributerH   q   sã   € ñ Ü:=¸fÀhÓ:O×P©;¨5°$™4‘% QÑ&ÐPˆÑPÜ�f“+€KØ˜Š?Ð7Ð7Ó7ˆ?à€OØ#%ÐØ×%Ñ%€FØÐØ�Cœ#˜f›+Ñ%‰	àˆ	Ü˜f iÓ0ò '‰ˆˆwØ˜Š?Ü˜g¤t¨E°OÑ,CÀkÑ,QÓ'RÓS‰Kà)ˆKÙˆ{ÔØ�uÑˆØ˜;Ñ&‰ð'ð Ðùó' Qs   ’B+Ú__main__)Ú	dataclassc                   ó>   — e Zd ZU dZee   ed<   dZeed<   dZeed<   y)ÚENr   r   r   r   )	r   r   r   r   r   r   r   r   r   r   r   r   rL   rL   ˜   s#   … à"ˆˆh�s‰mÓ"Øˆˆs‹Øˆ�cÔr   rL   én   r   )N)ÚsysÚ	fractionsr   Úmathr   Útypingr   r   r   r   Úversion_infor   Úpip._vendor.typing_extensionsr   r   r0   r?   rH   r   ÚdataclassesrJ   rL   ÚresolvedÚprintr'   r   r   r   ú<module>rW      s5  ðÛ 
Ý Ý ß 1Ó 1à×Ñ�vÒÞå6ôˆ8ô ð:"˜ð :" X¨d¡^ð :"¸¸S¹	ó :"ðzØðØ˜S™	ðØ-1°#©YðØ@DÀSÁ	ðà	ˆ#�YóðB DHñ!Øð!Ø˜S™	ð!Ø-5°d¸3±iÑ-@ð!à	ˆ#�Yó!ðH ˆzÒÝ%à÷ð ó ðñ
 ˜S¡1 T¨1¨a£=±!°D¸!¸Q³-ÁÀ4ÈÈAÃÐ"OÓP€HÙ	‰#ˆh‹-Õð r   