
    NviK                    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          `/var/www/html/land-ocr/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_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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
   r3   r+   r(   <module>rD      s-    " ( I 1 P P Pr+   