
    Ki                         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   z  Z
e
ee
   z  Zdededeegdf   d	efd
Zy)    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                    t        |      r+t        t        t           |      D ]  }t	        | ||      }  | S t        |      r ||       S |xdk(  r t        | t              rt        j                  | rdnd       yt        | t              rt        j                  |        y|  ||        t        j                  d       yt        j                  d       yxdk(  r | S xdk(  r t        |       r |        S | S xdk(  rg t        | t              rt        j                  | rdnd       yt        | t              rt        j                  |        yt        j                  d       yxdk(  r5 t        | t              r| rdS dS t        | t              r| S | 	 ||        yyxd	k(  rC t        | t              r	 ||        yt        | t              r| rdS dS t        | t              r| S yxd
k(  r t        | t              r ||        yxdk(  r4 |  ||        t        | t              r| rdS dS t        | t              r| S yxdk(  r |  ||        yxdk(  r* t        | t              r| rdS dS t        | t              r| S yxdk(  r yxdk(  r yxdk(  r
  ||        yxdk(  r t        j                  d       ydk(  r ||        t        j                  d       y	 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_actions       c/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/cyclopts/_result_action.pyr   r      s]   8 6!(+=">G 	KM)&-JF	Kf~
%&$'f!,FC( # MxM&$'f!,FC( 4&$'"q))FC(# 0&#& FD)"q))FC($&#& 5! &$'"q))FC()! 0&$'"q))FC( VHHQK"VHHQK    )r#   collections.abcr   r   typingr   r   r   cyclopts.utilsr   r   ResultActionr    r*   r)   <module>r0      s    
 . % % & 	" ucz# * "H-?$@@ttt ud{#t 		tr*   