
    S`v                     H    d dl Z d dlZd dlZd dlmZ d Zd Z G d d      Zy)    N)chainc                     d | D        } d |j                         D        }dj                  dj                  t        | |                  S )Nc              3   2   K   | ]  }t        |        y wN)repr).0as     ;/usr/lib/python3/dist-packages/compose/cli/verbose_proxy.py	<genexpr>zformat_call.<locals>.<genexpr>   s     "DG"s   c              3   :   K   | ]  } d j                   |   yw)z	{!s}={!r}N)format)r   items     r
   r   zformat_call.<locals>.<genexpr>	   s     CD k  $'Cs   z({})z, )itemsr   joinr   )argskwargss     r
   format_callr      s;    "T"DCFLLNCF==5v#6788    c                 6   t        | t        t        t        f      r.dj	                  t        |       j                  t        |             S | rMt        j                  |       j                  d      }t        |      |kD  rdnd}dj                  |d |       |z   S | S )Nz({} with {} items)
z
... )
isinstancelisttuplesetr   type__name__lenpprintpformatsplitr   )result	max_lineslinesextras       r
   format_returnr&      s    &4,-#**4<+@+@#f+NNv&,,T2u:	1ryyz	*+e33Mr   c                   $    e Zd ZdZddZd Zd Zy)VerboseProxyzrProxy all function calls to another class and log method name, arguments
    and return values for each call.
    Nc                 r    || _         || _        || _        t        j                  |xs t
              | _        y r   )obj_nameobjr#   logging	getLoggerr   log)selfr*   r+   log_namer#   s        r
   __init__zVerboseProxy.__init__   s.     "$$X%9:r   c                     t        | j                  |      }t        |      s|S t        j                  | j
                  |      S r   )getattrr+   callable	functoolspartialproxy_callable)r/   nameattrs      r
   __getattr__zVerboseProxy.__getattr__$   s7    txx&~K  !4!4d;;r   c           	         | j                   j                  d| j                  |t        ||              t	        | j
                  |      |i |}| j                   j                  d| j                  |t        || j                               |S )Nz%s %s <- %sz%s %s -> %s)r.   infor*   r   r3   r+   r&   r#   )r/   	call_namer   r   r"   s        r
   r7   zVerboseProxy.proxy_callable,   sw    mmm!$/	1
 .9-t>v>mmm#FDNN;	= r   )N
   )r   
__module____qualname____doc__r1   r:   r7    r   r
   r(   r(      s    ;<r   r(   )r5   r,   r   	itertoolsr   r   r&   r(   rB   r   r
   <module>rD      s%       9	 r   