o
    i                     @   s   d dl Z d dlmZmZ d dlmZmZmZ d dlm	Z	 ed eegef B Z
e
ee
 B Zdededeegdf d	efd
dZdS )    N)CallableIterable)AnyLiteralcast)is_iterable)return_valuecall_if_callable%print_non_int_return_int_as_exit_code!print_str_return_int_as_exit_codeprint_str_return_zero&print_non_none_return_int_as_exit_codeprint_non_none_return_zero!return_int_as_exit_code_else_zeroprint_non_int_sys_exitsys_exitreturn_nonereturn_zeroprint_return_zerosys_exit_zeroprint_sys_exit_zeroresultactionprint_fnreturnc                 C   s  t |rttt |D ]}t| ||} q| S t|r|| S | dkrV t| tr4t	| r/dnd dS t| t
r@t	|  dS | durO||  t	d dS t	d dS  dkr] | S  dkrk t| ri|  S | S  dkr t| trt	| r{dnd dS t| t
rt	|  dS t	d dS  dkr t| tr| rdS dS t| t
r| S | dur||  dS dS  d	kr t| tr||  dS t| tr| rdS dS t| t
r| S dS  d
kr t| tr||  dS  dkr | dur||  t| tr| rdS dS t| t
r| S dS  dkr  | dur||  dS  dkr= t| tr3| r1dS dS t| t
r;| S dS  dkrE dS  dkrM dS  dkrY ||  dS  dkrf t	d dS dkru||  t	d dS 	 t)u  Handle command result based on result_action.

    When ``action`` is a sequence, actions are applied left-to-right in a pipeline,
    where each action receives the result of the previous action. For example,
    with ``result_action=[uppercase, add_greeting]``:

        result → uppercase(result) → add_greeting(uppercase(result))

    Parameters
    ----------
    result : Any
        The command's return value.
    action : ResultAction
        The action (or sequence of actions) to take with the result.
        If a sequence, actions are chained left-to-right.
    print_fn : Callable[[Any], None]
        Function to call to print output (e.g., console.print).

    Returns
    -------
    Any
        Processed result based on action (may call sys.exit() and not return).
    r   r      Nr   r	   r   r
   r   r   r   r   r   r   r   r   r   r   )r   r   r   ResultActionSinglehandle_result_actioncallable
isinstanceboolsysexitintstr
ValueError)r   r   r   single_action r'   ]/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/cyclopts/_result_action.pyr      s   

















r   )r!   collections.abcr   r   typingr   r   r   cyclopts.utilsr   r   ResultActionr   r'   r'   r'   r(   <module>   s(    