
    j%                    b    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9 " S S5      5       r
g	)
    )annotations)	dataclassfield)NormalizedNamecanonicalize_name)CommandErrorT)slotsc                      \ 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          u/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/pip/_internal/models/release_control.pyhandle_mutual_excludes%ReleaseControl.handle_mutual_excludes   s    C  K  kk#nKKMLLNJJwKK	734,cii(1,,-s" n Dx""Ix#89$T*DMM$JJtKK	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_prereleasesJ   sC     ....)))'r,    N)
r#   strr$   r   r%   r   r&   r5   returnNone)r6   r   )r1   r   r6   zbool | None)__name__
__module____qualname____firstlineno____doc__r   setr   __annotations__r   listr   r*   r.   r2   __static_attributes__r4   r,   r)   r   r   
   sv    C"37L(7 5J5$)D%e%F! %2%2"*%23;%2HK%2	%2Nr,   r   N)
__future__r   dataclassesr   r   pip._vendor.packaging.utilsr   r   pip._internal.exceptionsr   r   r4   r,   r)   <module>rE      s2    " ( I 1 P P Pr,   