
    !<i#                         d Z ddlZddlZddlmZ ddlmZ ddlm	Z	 e	rddl
mZ ddlmZ ed             Zd	eez  d
edef         fdZdS )z.Load Cyclopts App objects from Python scripts.    N)contextmanager)Path)TYPE_CHECKINGApp)CommandSpecc               #   h   K   ddl m}  | j        }d }	 || _        dV  || _        dS # || _        w xY w)zTemporarily disable App.__call__ to prevent execution during module loading.

    This context manager replaces App.__call__ with a no-op function, allowing
    scripts that call app() at module level to be imported without executing.
    r   r   c                     dS )z9No-op replacement for App.__call__ during module loading.N )selfargskwargss      /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/cyclopts/loader.py_dummy_callz,_suppress_app_execution.<locals>._dummy_call   s    t    N)cycloptsr   __call__)r   original_callr   s      r   _suppress_app_executionr      sc       LM  %"$}$$$$s   ( 	1scriptreturnr   c                 \   ddl m} d}t          |           }d|v rX|                    dd          \  }r-t	          fddD                       s}t          |          }nt          |           }nt          |           }|                                }|                                s3t          d| d	t          j
        
           t          j        d           |j        dk    s3t          d| dt          j
        
           t          j        d           t          j                            d|          }||j        3t          d| dt          j
        
           t          j        d           t          j                            |          }|t          j        d<   t'                      5  |j                            |           ddd           n# 1 swxY w Y   |rt+          ||          s6t          d| d| dt          j
        
           t          j        d           t-          ||          }t/          ||          s3t          d| dt          j
        
           t          j        d           ||fS g }	t1          |          D ]N}
|
                    d          s7t-          ||
          }t/          ||          r|	                    |
|f           O|	s3t          d| dt          j
        
           t          j        d           t7          |	          dk    rg |	D ]K\  }}t+          |d          r6                    d |j                                        D                        Lfd|	D             }|r|}	t7          |	          dk    r{d                    d |	D                       }t/          | t
                    rt          |           n| }t          d| d| dt          j
        
           t          j        d           |	d         \  }
}||
fS )aG  Load a Cyclopts App object from a Python script.

    Parameters
    ----------
    script : str | Path
        Python script path, optionally with ``':app_object'`` notation to specify
        the :class:`App` object. If not specified, will search for :class:`App`
        objects in the script's global namespace.

    Returns
    -------
    tuple[App, str]
        The loaded :class:`App` object and its name.

    Raises
    ------
    SystemExit
        If the script cannot be loaded, no App objects are found, or multiple
        App objects exist without specification.
    r   r   N:   c              3       K   | ]}|v V  	d S Nr   ).0seppotential_app_names     r   	<genexpr>z'load_app_from_script.<locals>.<genexpr>E   s)      )[)[#1C*C)[)[)[)[)[)[r   )/\zError: Script 'z' not found.)filez.pyzError: 'z' is not a Python file.__cyclopts_doc_modulez#Error: Could not load module from 'z'.zError: No object named 'z' found in 'z' is not a Cyclopts App object._z)Error: No Cyclopts App objects found in '	_commandsc              3   D   K   | ]}t          |t                    |V  d S r   )
isinstancer   )r   cmds     r   r    z'load_app_from_script.<locals>.<genexpr>   s4      *u*u3XbcfhsXtXt*u3*u*u*u*u*u*ur   c                 &    g | ]\  }}|v	||fS r   r   )r   nameappregistered_appss      r   
<listcomp>z(load_app_from_script.<locals>.<listcomp>   s,    dddYT3TcIcIcdC[IcIcIcr   z, c              3       K   | ]	\  }}|V  
d S r   r   )r   r+   r%   s      r   r    z'load_app_from_script.<locals>.<genexpr>   s&      !B!B74$!B!B!B!B!B!Br   z#Error: Multiple App objects found: z. Please specify one using 'z:app_name'.) r   r   strrsplitanyr   resolveexistsprintsysstderrexitsuffix	importlibutilspec_from_file_locationloadermodule_from_specmodulesr   exec_modulehasattrgetattrr(   dir
startswithappendlenextendr&   valuesjoin)r   r   app_name
script_strscript_path_strscript_pathspecmoduleapp_objapp_objectsr+   objr%   r,   filtered_appsnamesr   r-   s                   @@r   load_app_from_scriptrU   %   s   ,  HVJ
j.8.?.?Q.G.G++  	'c)[)[)[)[{)[)[)[&[&[ 	')H//KK v,,KK6ll%%''K 9999
KKKK&&====CJOOOO >112I;WWD|t{*CKCCC#*UUUU^,,T22F+1CK'(	 	"	" ( ('''( ( ( ( ( ( ( ( ( ( ( ( ( ( (  0vx(( 	RXRR;RRRY\YcddddHQKKK&(++'3'' 	FXFFFSZXXXXHQKKK   KK 	4 	4D??3'' 4fd++c3'' 4&&c{333 	MkMMMTWT^____HQKKK{a !O% v v33,, v#***u*u#-:N:N:P:P*u*u*uuuu eddd+dddM ,+;!##		!B!Bk!B!B!BBB,6vt,D,DPS[[[&
t%tt]gttt    #Ag}s   6GG!$G!)__doc__importlib.utilr:   r6   
contextlibr   pathlibr   typingr   r   r   cyclopts.command_specr   r   r0   tuplerU   r   r   r   <module>r]      s    4 4     



 % % % % % %                    - - - - - - % % %*qt qeSj0A q q q q q qr   