
    )Ph                    L    d dl mZ d dlmZ  G d dej
                  e         Zy)    )annotationsNc                      e Zd ZdZ	 	 	 d	 	 	 	 	 ddZdddZddZddZddZddZ	dd	Z
dd
Z	 	 	 d	 	 	 	 	 	 	 ddZddZddZddZddZddZddZy)ETagszYA set that can be used to check if one etag is present in a collection
    of etags.
    Nc                    |s|rt        |      | _        nt               | _        t        |xs d      | _        || _        y )N )	frozenset_strong_weakstar_tag)selfstrong_etags
weak_etagsr   s       n/mnt/c/Users/Administrator/Desktop/help_/test_env/lib/python3.12/site-packages/werkzeug/datastructures/etag.py__init__zETags.__init__   s6     L$\2DL$;DLz/R0
     c                j    t        | j                        }|r|j                  | j                         |S )zoConvert the `ETags` object into a python set.  Per default all the
        weak etags are not part of this set.)setr	   updater
   )r   include_weakrvs      r   as_setzETags.as_set   s*     IIdjj!	r   c                    || j                   v S )zCheck if an etag is weak.)r
   r   etags     r   is_weakzETags.is_weak!   s    tzz!!r   c                    || j                   v S )zCheck if an etag is strong.)r	   r   s     r   	is_strongzETags.is_strong%   s    t||##r   c                J    | j                  |      xs | j                  |      S )zCCheck if an etag is part of the set including weak and strong tags.)r   containsr   s     r   contains_weakzETags.contains_weak)   s    ||D!8T]]4%88r   c                >    | j                   ry| j                  |      S )zxCheck if an etag is part of the set ignoring weak tags.
        It is also possible to use the ``in`` operator.
        T)r   r   r   s     r   r   zETags.contains-   s     ==~~d##r   c                l    ddl m}  ||      \  }}|r| j                  |      S | j                  |      S )zWhen passed a quoted tag it will check if this tag is part of the
        set.  If the tag is weak it is checked against weak and strong tags,
        otherwise strong only.   )unquote_etag)httpr$   r    r   )r   r   r$   weaks       r   contains_rawzETags.contains_raw5   s8     	(!$'
d%%d++}}T""r   c           	         | j                   rydj                  | j                  D cg c]  }d| d
 c}| j                  D cg c]  }d| d
 c}z         S c c}w c c}w )z0Convert the etags set into a HTTP header string.*z, "zW/")r   joinr	   r
   )r   xs     r   	to_headerzETags.to_header@   sY    ==yy#||,!q1X,DJJ/Oq#aS
/OO
 	
,/Os   AA
c                z    ||t        d      ddlm}  ||      }|r|| j                  v ry|| j                  v S )Nz,'data' is required when 'etag' is not given.r#   )generate_etagT)	TypeErrorr%   r/   r
   r	   )r   r   datar   r/   s        r   __call__zETags.__call__H   sH     <| NOO, &Dtzz!t||##r   c                d    t        | j                  xs | j                  xs | j                        S N)boolr   r	   r
   r   s    r   __bool__zETags.__bool__Z   s#    DMM?T\\?TZZ@@r   c                "    | j                         S r4   )r-   r6   s    r   __str__zETags.__str__]   s    ~~r   c                ,    t        | j                        S r4   )lenr	   r6   s    r   __len__zETags.__len__`   s    4<<  r   c                ,    t        | j                        S r4   )iterr	   r6   s    r   __iter__zETags.__iter__c   s    DLL!!r   c                $    | j                  |      S r4   )r   r   s     r   __contains__zETags.__contains__f   s    }}T""r   c                L    dt        |       j                   dt        |       dS )N< >)type__name__strr6   s    r   __repr__zETags.__repr__i   s&    4:&&'qTQ77r   )NNF)r   cabc.Iterable[str] | Noner   rJ   r   r5   )F)r   r5   returnzset[str])r   rH   rK   r5   )rK   rH   )r   z
str | Noner1   zbytes | Noner   r5   rK   r5   )rK   r5   )rK   int)rK   zcabc.Iterator[str])rG   
__module____qualname____doc__r   r   r   r   r    r   r'   r-   r2   r7   r9   r<   r?   rA   rI   r   r   r   r   r      s     3704	!/! .! 	!"$9$	#
  !"	$$ $ 	$
 
$$A !"#8r   r   )
__future__r   collections.abcabccabc
CollectionrH   r   r   r   r   <module>rU      s"    " d8DOOC  d8r   