
    !<i
"                        d Z ddlZddlmZmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZmZmZmZmZmZmZ erddlmZ  ed	e	
          ZddlmZmZ ddlmZmZmZ ddlmZm Z m!Z!m"Z"m#Z#m$Z$ ddl%m&Z& ej'        dk    rddlm(Z( ndZ( e&ddddddd          Z)i e!e!fe!e!e fe e!efee!e#fe#e!e"fe"e e!fe e e fe e efde e#fe#e e"fdee!feee fdeefeee#fdee"fe"e#e!fe e#e fe e#efde#e#fe#e#e"fde"e!fee"e fde"efee"e#fde"e"fe"iZ*de+dee,ge,f         de-e,         fdZ.d Z/deege0e,e$f         f         dede0e,ef         ge-e,         f         fdZ1d Z2de+e         de0e,e3f         dee,ge,f         defdZ4dede0e5e,df         e&f         fd Z6d! Z7d"e5e,df         de5e,df         fd#Z8	 d(d$e5e,df         dz  dee5e5e,df         ef                  fd%Z9d&e,de,fd'Z:dS ))z?Shared helper functions and constants for the argument package.    N)CallableIterator)suppress)EnumFlag)partial)TYPE_CHECKING	AnnotatedAnyLiteralTypeVarget_args
get_origin)ArgumentF)bound)ITERABLE_TYPESconvert_enum_flag)is_class_and_subclassis_unionresolve_annotated)KEYWORD_ONLYPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDVAR_KEYWORDVAR_POSITIONAL	FieldInfo)	Parameter)      )TypeAliasType)namealias	converter	validatoraccepts_keysconsume_multipleenv_vartype_name_transformreturnc                    t          t                    g }t          |           }t          | t                    r=t          | t                    r(|                    fd| j        D                        nmt          |          r9fdt          |           D             }|D ]}|r|                    |           n%|t          u r-|                    d t          |           D                        n|t          v rrt          |           }t          |          dk    s+|t          u rFt          |          dk    r3|d         t          u r$|                     |d                              nt|t           u r,|                     t#          |                                n?t$          8t          | t$                    r#|                     | j                             |S )a  Extract completion choices from a type hint.

    Recursively extracts choices from Literal types, Enum types, and Union types.

    Parameters
    ----------
    type_ : type
        Type annotation to extract choices from.
    name_transform : Callable[[str], str]
        Function to transform choice names (e.g., for case conversion).

    Returns
    -------
    list[str]
        List of choice strings extracted from the type hint.
    )r*   c              3   .   K   | ]} |          V  d S N ).0xr*   s     /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/cyclopts/argument/utils.py	<genexpr>z(get_choices_from_hint.<locals>.<genexpr>`   s-      DDQ~~a((DDDDDD    c                 &    g | ]} |          S r/   r/   )r0   innerget_choicess     r2   
<listcomp>z)get_choices_from_hint.<locals>.<listcomp>b   s#    IIIU++IIIr4   c              3   4   K   | ]}t          |          V  d S r.   )strr0   r1   s     r2   r3   z(get_choices_from_hint.<locals>.<genexpr>g   s(      77!s1vv777777r4         r   )r   get_choices_from_hintr   
isinstancetyper   r   extend__members__r   r   r   r   lentupleEllipsisr
   r   r!   	__value__)r)   r*   choices_origininner_choicesr1   argsr7   s    `     @r2   r>   r>   K   s   " /OOOKGG% 5#8#E#E 5DDDD%2CDDDDDDD	'		 5IIII%III 	" 	"A "q!!!	" 
G		77x7777777	N	"	"t99>>g..3t99>>d1gQYFYFYNN;;tAw//000	I		{{#4U#;#;<<====		"z%'G'G	"{{5?33444Nr4   c                 V    d } ||                                 ||                    S )Nc                 .    |                      dd          S )N_-)replace)ss    r2   	normalizezstartswith.<locals>.normalizet   s    yyc"""r4   )
startswith)stringprefixrQ   s      r2   rR   rR   s   s;    # # # 9V''		&(9(9:::r4   get_field_infor   c                 n     dddt           t          t          f         dt          t                   f fd}|S )Nargumentr   datar+   c                     t          |           | j                  }fd|                                D             S )Nc                 0    g | ]\  }}|j         |v|S r/   )required)r0   kvprovided_keyss      r2   r8   z7missing_keys_factory.<locals>.inner.<locals>.<listcomp>   s.    \\\daQZ\A]DZDZDZDZDZr4   )sethintitems)rW   rX   
field_infor^   rU   s      @r2   r6   z#missing_keys_factory.<locals>.inner}   sF    D		#^HM22
\\\\j..00\\\\r4   )dictr:   r   list)rU   r6   s   ` r2   missing_keys_factoryre   z   sR    ]
 ]$sCx. ]T#Y ] ] ] ] ] ]
 Lr4   c                 l    t          |           dd          D ]}	 |j        c S # t          $ r Y w xY wd S )Nr<   )r   discriminatorAttributeError)
annotationmetas     r2   get_annotated_discriminatorrk      s[    $$QRR(  	%%%% 	 	 	D	4s   $
11	enum_typerX   c                 \    t          | d |                                D             |          S )a5  Convert a dictionary of boolean flags to a Flag enum value.

    Parameters
    ----------
    enum_type : type[F]
        The Flag enum type to convert to.
    data : dict[str, bool]
        Dictionary mapping flag names to boolean values.

    Returns
    -------
    F
        The combined flag value.
    c              3   $   K   | ]\  }}||V  d S r.   r/   )r0   r\   r]   s      r2   r3   z&enum_flag_from_dict.<locals>.<genexpr>   s+      (I(Itq!q(I(I(I(I(I(I(Ir4   )r   ra   )rl   rX   r*   s      r2   enum_flag_from_dictro      s-    & Y(I(Itzz||(I(I(I>ZZZr4   f.c           	         ddl m} t          t                    5  | j        } d d d            n# 1 swxY w Y   i }t          | dd           x}rt          |d d                   D ]l}	  ||          }|j        D ]?}t          |j	                  |t          |j                            d                    <   @V# t          t          f$ r Y iw xY wnk	  ||           }|j        D ]?}t          |j	                  |t          |j                            d                    <   @n# t          t          f$ r Y nw xY w|S )Nr   )parse_from_object__mro__)help.)docstring_parserrr   r   rh   funcgetattrreversedparamsr   descriptionrD   arg_namesplit	TypeError)rp   rr   resultmro
base_classparseddparams          r2   extract_docstring_helpr      s   222222	.	!	!  F               F aD)))s  #3ss8,, 	 	J**:66$m c cF@IvOa@b@b@bF5!6!6s!;!;<<==c~.   		&&q))F - _ _<E6K]<^<^<^uV_223778899_>* 	 	 	D	 Ms2   /33)AB<<CCAD( (D<;D<c                     |                      d          r| d d                             d          } | r|                     d          sd| z   } | S )N*rt   rv   rN   --)endswithrstriprR   )elems    r2   resolve_parameter_name_helperr      sZ    }}S %CRCy$$ DOOC(( d{Kr4   argssc                     t          d | D                       } t          |           dk    rdS t          |           dk    rt          d | d         D                       S g }| d         D ]d}t          |          }| d         D ]J}|                    d          s|s|                    |           /|                    |dz   |z              Ket          t          |          g| dd	         R  S )
a  Resolve parameter names by combining and formatting multiple tuples of strings.

    Parameters
    ----------
    *argss
        Each tuple represents a group of parameter name components.

    Returns
    -------
    tuple[str, ...]
        A tuple of resolved parameter names.
    c              3      K   | ]}||V  	d S r.   r/   r;   s     r2   r3   z)resolve_parameter_name.<locals>.<genexpr>   s'      ((a(!((((((r4   r   r/   r<   c              3   D   K   | ]}|d k    rd nt          |          V  dS )r   N)r   r;   s     r2   r3   z)resolve_parameter_name.<locals>.<genexpr>   s7      ]]qAHHSS*G*J*J]]]]]]r4   rN   rv   r=   N)rD   rC   r   rR   appendresolve_parameter_name)r   outa1a2s       r2   r   r      s    ((U(((((E
5zzQr	Uq]]TYZ[T\]]]]]]
CAh * **2..( 	* 	*B}}S!! * *

2

28b=))))		* "%**9uQRRy9999r4   parent_keysc              #      K   |d}t          | t                    rT|                                 D ]=\  }}||fz   }t          |t                    rt          ||          E d {V  7||fV  >d S d| fV  d S )Nr/   )r?   rc   ra   walk_leaves)dr   keyvaluecurrent_keyss        r2   r   r      s       !T '')) 	* 	*JC&#/L%&& *&ul;;;;;;;;;;"E)))))	* 	* !er4   keysc                  2    dd                     |           z   S )Nr   rv   )join)r   s    r2   to_cli_option_namer     s    #((4..  r4   r.   );__doc__syscollections.abcr   r   
contextlibr   enumr   r   	functoolsr   typingr	   r
   r   r   r   r   r   cyclopts.argument._argumentr   r   cyclopts._convertr   r   cyclopts.annotationsr   r   r   cyclopts.field_infor   r   r   r   r   r   cyclopts.parameterr   version_infor!   PARAMETER_SUBKEY_BLOCKERKIND_PARENT_CHILD_REASSIGNMENTr@   r:   rd   r>   rR   rc   re   rk   boolro   rD   r   r   r   r   r   r/   r4   r2   <module>r      sQ   E E 



 . . . . . . . .                     X X X X X X X X X X X X X X X X X X 5444444GCt ? ? ? ? ? ? ? ?         
                ) ( ( ( ( (w$$$$$$$M$9	
   "124I"O,o" L)<" N+^	"
 K(+" +,o" o&" l#T" n%~" k"D" ()<" ?#T" < ," >"D" ;"  *+_!"" _%#"$ \"D^$n[!4'(,/"D,.!4+3" " :% %xs
7K %PTUXPY % % % %P; ; ;cUDi$889z4S>*DI56     [Aw[
sDy/[ cUCZ([ 	[ [ [ [,%h %4c3h0J+K % % % %P  :5c? :uS#X : : : :D +/ sCx4' eE#s(OS()*   $!c !c ! ! ! ! ! !r4   