
    kj                     d   d Z ddlZddlmZmZmZmZmZm	Z	m
Z
mZmZ ddlmZmZ  eej                            d                              d                    Z eed                   Z eed                   Zeefdk    Zeefd	k    Z ed
          Z ede          Z ed          Zdeeee         f         deeef         fdZdedefdZ d<de!deddfdZ"d=dee         dedee         fdZ#ddddedededed edefd!Z$deded edefd"Z%	 d>d#ed$ed%ed&edef
d'Z&d(e	e         de	e         fd)Z'd(ede!fd*Z(d+ee	e                  dee         fd,Z)d-ed.eddfd/Z*d0edefd1Z+ G d2 d3e,          Z- G d4 d5e-6          Z.deeef         d7e
e         ddfd8Z/d?d9ed:edefd;Z0dS )@zGeneric utilities.    N)	AnyDictHashableIterableListOptionalSequenceTypeTypeVar)MISSINGPossiblyclick.   )   r   )r      TK)boundVdreturnc                 >    d |                                  D             S )Nc                 ,    i | ]\  }}|t           u||S  )r   ).0keyvals      F/home/agentuser/manim-venv/lib/python3.11/site-packages/cloup/_util.py
<dictcomp>z$pick_non_missing.<locals>.<dictcomp>   s(    EEEc#W2D2DC2D2D2D    )items)r   s    r   pick_non_missingr#      s    EEQWWYYEEEEr!   objc                     | j         j        S N)	__class____name__)r$   s    r   
class_namer)      s    =!!r!    	conditionmsgc                 (    | st          |          d S r&   )
ValueError)r+   r,   s     r   	check_argr/      s      oo r!   r   lineswidthc                 *    d|z  fd| D             S )N c                     g | ]}|z   S r   r   )r   linespacess     r   
<listcomp>z indent_lines.<locals>.<listcomp>#   s    ,,,dFTM,,,r!   r   )r0   r1   r6   s     @r   indent_linesr8   !   s&    5[F,,,,e,,,,r!   <   )	_line_len_indentargsr:   r;   kwargsc                   | j         j        }g d |D             d |                                D             }t          d |D                       }t	          |          |z   dt	          |          z  z   }d|cxk    r|k     r1n n.t          ||          }	d                    |	          }
| d|
 d	S d
                    |          }
| d|
 dS )a  
    Generate repr(obj).

    :param obj:
        object to represent
    :param args:
        positional arguments in the repr
    :param _line_len:
        if the repr length exceeds this, arguments will be on their own line;
        if negative, the repr will be in a single line regardless of its length
    :param _indent:
        indentation width of arguments in case they are shown in their own line
    :param kwargs:
        keyword arguments in the repr
    :return: str
    c              3   4   K   | ]}t          |          V  d S r&   )repr)r   args     r   	<genexpr>zmake_repr.<locals>.<genexpr>?   s(      	$	$$s))	$	$	$	$	$	$r!   c              3   *   K   | ]\  }}| d |V  dS )=Nr   )r   r   values      r   rB   zmake_repr.<locals>.<genexpr>@   s4      	>	>eS

5

	>	>	>	>	>	>r!   c              3   4   K   | ]}t          |          V  d S r&   )len)r   ss     r   rB   zmake_repr.<locals>.<genexpr>B   s(      ..c!ff......r!   r   r   )r1   z,
z(
z
)z, ())r'   r(   r"   sumrG   r8   join)r$   r:   r;   r<   r=   cls_namearglistlen_arglist	total_lenr0   	args_texts              r   	make_reprrR   &   s   . }%H	$	$t	$	$	$	>	>v||~~	>	>	>G ..g.....KH+a#g,,.>>II!!!!	!!!!!WG444JJu%%	--y----IIg&&	))Y))))r!   c                 &    t          | g|R ddi|S )Nr:   )rR   )r$   r<   r=   s      r   make_one_line_reprrU   M   s%    S8488828888r!   countzeroonemanyc                 V    | dk    r|r|S | dk    r|r|S |                     |           S )Nr   r   )rV   )format)rV   rW   rX   rY   s       r   	pluralizer\   Q   s<     zzdzzzcz
;;U;###r!   valuesc                  6    t          d | D             d          S )zVReturn the first value that is not ``None``
    (or ``None`` if no such value exists).c              3      K   | ]}||V  	d S r&   r   r   r   s     r   rB   zcoalesce.<locals>.<genexpr>^   s"      ::#/////::r!   Nnextr]   s    r   coalescerd   [   s#     :::::DAAAr!   c                  4    t          d | D                       S )zHReturn the first bool (or raises ``StopIteration`` if no bool is found).c              3   D   K   | ]}t          |t                    |V  d S r&   )
isinstanceboolr`   s     r   rB   zfirst_bool.<locals>.<genexpr>c   s1      ??C)>)>???????r!   ra   rc   s    r   
first_boolri   a   s    ??v??????r!   iterablec                     d | D             S )Nc                     g | ]}||S r&   r   )r   xs     r   r7   z!pick_not_none.<locals>.<listcomp>g   s    111!1=A===r!   r   )rj   s    r   pick_not_nonern   f   s    11x1111r!   rE   arg_namec                     d }t          | t                    st          }n| dk    rt          }|r |d| d|           d S )Nr   z
argument `z&` should be a positive integer; it is )rg   int	TypeErrorr.   )rE   ro   
error_types      r   check_positive_intrt   j   sg    ,0JeS!!  

	!
 
jRRRRR
 
 	

 
r!   rm   c                     | S r&   r   )rm   s    r   identityrv   v   s    Hr!   c                   x     e Zd Zdef fdZdededdf fdZdeeef         fdZd	ede	fd
Z
d	edefdZ xZS )FrozenSpaceMetar<   c                      t                      j        |  d t          |                                           D             }t                              | d|           d S )Nc                 D    i | ]\  }}|                     d           ||S )_)
startswith)r   kvs      r   r    z,FrozenSpaceMeta.__init__.<locals>.<dictcomp>}   s/    IIIdaq||C7H7HIQIIIr!   _dict)super__init__varsr"   type__setattr__)clsr<   r   r'   s      r   r   zFrozenSpaceMeta.__init__{   sX    $IId3iioo//IIIgq)))))r!   r   rE   r   Nc                     |                     d          r"t                                          ||          S t          d          )N__zyou can't set attributes on this class; only special dunder attributes (e.g. __annotations__) are allowed to be set for compatibility reasons.)r|   r   r   	Exception)r   r   rE   r'   s      r   r   zFrozenSpaceMeta.__setattr__   sI    >>$ 	77&&sE222Z  r!   c                     | j         S r&   r   )r   s    r   asdictzFrozenSpaceMeta.asdict   s
    yr!   itemc                 .    ||                                  v S r&   )r   r   r   s     r   __contains__zFrozenSpaceMeta.__contains__   s    szz||##r!   c                     | j         |         S r&   r   r   s     r   __getitem__zFrozenSpaceMeta.__getitem__   s    yr!   )r(   
__module____qualname__r   r   strr   r   r   rh   r   r   __classcell__)r'   s   @r   rx   rx   z   s        *S * * * * * *
c # $      tCH~    $ $ $ $ $ $s s        r!   rx   c                       e Zd ZdZddZdS )FrozenSpacez4A class used just as frozen namespace for constants.r   Nc                      t          d          )NzDthis class is just a namespace for constants, it's not instantiable.)r   )selfs    r   r   zFrozenSpace.__init__   s    RT T 	Tr!   )r   N)r(   r   r   __doc__r   r   r!   r   r   r      s4        >>T T T T T Tr!   r   )	metaclasskeysc                     |D ]}| |= d S r&   r   )r   r   r   s      r   delete_keysr      s$      cFF r!   textindentc                     dd l }|                     d          r
| dd          } |                    |           } |r|                    | d|z            S | S )Nr   
r   r3   )textwrapr|   dedentr   )r   r   tws      r   reindentr      sc    t ABBx99T??D -yysV|,,,Kr!   )r*   )r   )r*   r*   r*   )r   )1r   importlib.metadata	importlibtypingr   r   r   r   r   r   r	   r
   r   cloup.typingr   r   tuplemetadataversionsplitclick_version_tuplerq   click_majorclick_minorclick_version_ge_8_1click_version_ge_8_2r   r   r   r#   objectr   r)   rh   r/   r8   rR   rU   r\   rd   ri   rn   rt   rv   r   rx   r   r   r   r   r!   r   <module>r      s                              + * * * * * * *eI.66w??EEcJJKK c%a())c%a())#[1V; #[1V; GCLLGCx   GCLLFQ^, Fad F F F F"F "s " " " "  C     
- - -c -$s) - - - - 	$* $* $*	$*$* $* 	$*
 $* 	$* $* $* $*N9F 93 9# 9# 9 9 9 9
 <>$ $$$%($58$$ $ $ $Bhqk Bhqk B B B B@ @ @ @ @ @
2HXa[1 2d1g 2 2 2 2	
c 	
S 	
T 	
 	
 	
 	
 a        d   2T T T T TO T T T T4S> # 4    
 3  C      r!   