ó
    ¢'ÔiK  ã                  óZ   • S SK Jr  S SKJrJr  S SKJrJr  S SKJ	r	  \ " S S5      5       r
g)é    )Úannotations)Ú	dataclassÚfield)ÚNormalizedNameÚcanonicalize_name)ÚCommandErrorc                  ó”   • \ rS rSr% Sr\" \S9rS\S'   \" \S9r	S\S'   \" S\
SSS9rS	\S
'             SS jrSS jrSS jrSrg)ÚReleaseControlé   z9Helper for managing which release types can be installed.)Údefault_factoryúset[str]Úall_releasesÚ
only_finalF)Úinitr   ÚcompareÚreprúlist[tuple[str, str]]Ú_orderc                ój  • UR                  S5      (       a  [        S5      eUR                  S5      nSU;   at  UR                  5         UR                  5         UR	                  S5        U R
                  R                  US45        USUR                  S5      S-   2	 SU;  a  gSU;   a  Mt  U H�  nUS:X  a/  UR                  5         U R
                  R                  US45        M8  [        U5      nUR                  U5        UR	                  U5        U R
                  R                  XF45        Mƒ     g)a˜  Parse and apply release control option value.

Processes comma-separated package names or special values `:all:` and `:none:`.

When adding packages to target, they're removed from other to maintain mutual
exclusivity between all_releases and only_final. All operations are tracked in
order so that the original command-line argument sequence can be reconstructed
when passing options to build subprocesses.
Ú-z9--all-releases / --only-final option requires 1 argument.Ú,ú:all:Né   z:none:)
Ú
startswithr   ÚsplitÚclearÚaddr   ÚappendÚindexr   Údiscard)ÚselfÚvalueÚtargetÚotherÚ	attr_nameÚnewÚnames          Úc/var/www/surfInsights/venv3-11/lib/python3.13/site-packages/pip/_internal/models/release_control.pyÚhandle_mutual_excludesÚ%ReleaseControl.handle_mutual_excludes   s  € ð ×Ñ˜C× Ñ ÜØKóð ð �k‰k˜#ÓˆØ˜‹nØ�K‰KŒMØ�L‰LŒNØ�J‰J�wÔà�K‰K×Ñ 	¨7Ð3Ô4ØÐ,�c—i‘i Ó(¨1Ñ,Ð,Ð-à˜sÓ"Øð ˜�nó ˆDØ�xÓØ—‘”à—‘×"Ñ" I¨xÐ#8Ô9ÙÜ$ TÓ*ˆDØ�M‰M˜$ÔØ�J‰J�tÔà�K‰K×Ñ 	Ð0Ö1ò ó    c                ó    • U R                   SS $ )at  
Get ordered list of (flag_name, value) tuples for reconstructing CLI args.

Returns:
    List of tuples where each tuple is (attribute_name, value).
    The attribute_name is either 'all_releases' or 'only_final'.

Example:
    [("all_releases", ":all:"), ("only_final", "simple")]
    would be reconstructed as:
    ["--all-releases", ":all:", "--only-final", "simple"]
N)r   )r!   s    r(   Úget_ordered_argsÚReleaseControl.get_ordered_args<   s   € ð �{‰{™1ˆ~Ðr+   c                óˆ   • XR                   ;   a  gXR                  ;   a  gSU R                   ;   a  gSU R                  ;   a  gg)zð
Determine if pre-releases are allowed for a package.

Returns:
    True: Pre-releases are allowed (package in all_releases)
    False: Only final releases allowed (package in only_final)
    None: No specific setting, use default behavior
TFr   N)r   r   )r!   Úcanonical_names     r(   Úallows_prereleasesÚ!ReleaseControl.allows_prereleasesK   sC   € ð ×.Ñ.Ó.ØØŸ™Ó.ØØ˜×)Ñ)Ó)ØØ˜Ÿ™Ó'ØØr+   © N)
r"   Ústrr#   r   r$   r   r%   r4   ÚreturnÚNone)r5   r   )r0   r   r5   zbool | None)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úsetr   Ú__annotations__r   Úlistr   r)   r-   r1   Ú__static_attributes__r3   r+   r(   r
   r
      sv   ‡ áCá"°3Ñ7€L�(Ó7Ù °Ñ5€J�Ó5Ù$)Ø D°%¸eñ%€FÐ!ó ð%2Øð%2Ø"*ð%2Ø3;ð%2ØHKð%2à	ô%2ôN÷r+   r
   N)Ú
__future__r   Údataclassesr   r   Úpip._vendor.packaging.utilsr   r   Úpip._internal.exceptionsr   r
   r3   r+   r(   Ú<module>rD      s-   ðÝ "ç (ç Iå 1ð ÷Pð Pó ñPr+   