
    yj%                    |    d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	  ed           G d d                      Z
d	S )
    )annotations)	dataclassfield)NormalizedNamecanonicalize_name)CommandErrorT)slotsc                      e Zd ZU dZ ee          Zded<    ee          Zded<    ede	dd          Z
ded	<   ddZddZddZdS )ReleaseControlz9Helper for managing which release types can be installed.)default_factoryset[str]all_releases
only_finalF)initr   comparereprlist[tuple[str, str]]_ordervaluestrtargetother	attr_namereturnNonec                   |                     d          rt          d          |                    d          }d|v r~|                                 |                                 |                    d           | j                            |df           |d|                    d          dz   = d|vrdS d|v ~|D ]}|dk    r1|                                 | j                            |df           9t          |          }|	                    |           |                    |           | j                            ||f           dS )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)selfr   r   r   r   newnames          e/usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/pip/_internal/models/release_control.pyhandle_mutual_excludesz%ReleaseControl.handle_mutual_excludes   sl    C   	K   kk#nnKKMMMLLNNNJJwK	73444,cii((1,,-s"" nn  
	2 
	2Dx""Ix#8999$T**DMM$JJtK	401111
	2 
	2    c                     | j         dd         S )a  
        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_argszReleaseControl.get_ordered_args;   s     {111~r-   canonical_namer   bool | Nonec                ^    || j         v rdS || j        v rdS d| j         v rdS d| j        v rdS dS )a   
        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(   r0   s     r+   allows_prereleasesz!ReleaseControl.allows_prereleasesJ   sS     T...4t..5)))4''5tr-   N)
r   r   r   r   r   r   r   r   r   r   )r   r   )r0   r   r   r1   )__name__
__module____qualname____doc__r   setr   __annotations__r   listr   r,   r/   r3    r-   r+   r   r   
   s         CC"U3777L7777 5555J5555$)ED%e% % %F    %2 %2 %2 %2N        r-   r   N)
__future__r   dataclassesr   r   pip._vendor.packaging.utilsr   r   pip._internal.exceptionsr   r   r;   r-   r+   <module>r@      s    " " " " " " ( ( ( ( ( ( ( ( I I I I I I I I 1 1 1 1 1 1 P P P P P P P P P Pr-   