B
    æ¹`  ã               @   s@   d dl Z d dlZd dlmZ dd„ Zdd„ Zdd„ Zd	d
„ ZdS )é    N)Úreraisec             C   sÒ   | dkrt  ¡ } | d tksBt| d ƒ d¡dksBt| d ddƒrF| S d| d _tjt 	|¡Ž }d	 
tt|ƒ¡}|r€|r€|d	7 }|r¨t| ¡ ƒ}|d	 
d
d„ |D ƒ¡7 }d| }d| d ||f }|f| d _| S )ad  
    Given an exception, this will test if the exception was due to a
    signature error, and annotate the error with better information if
    so.

    Usage::

      try:
          val = callable(*args, **kw)
      except TypeError:
          exc_info = fix_type_error(None, callable, args, kw)
          raise exc_info[0], exc_info[1], exc_info[2]
    Nr   é   Ú	argumentséÿÿÿÿÚ_type_error_fixedFTz, c             S   s   g | ]\}}d | ‘qS )z%s=...© )Ú.0ÚnÚvr   r   úY/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/paste/deploy/util.pyú
<listcomp>$   s    z"fix_type_error.<locals>.<listcomp>z(%s)z%s; got %s, wanted %s)ÚsysÚexc_infoÚ	TypeErrorÚstrÚfindÚgetattrr   ÚinspectÚformatargspecÚ
getargspecÚjoinÚmapÚ_short_reprÚsortedÚitemsÚargs)r   ÚcallableÚvarargsÚkwargsZargspecr   ZgotspecÚmsgr   r   r   Úfix_type_error	   s$    
r    c             C   s4   t | ƒ} t| ƒdkr0| d d… d | dd …  } | S )Né   é   z...éüÿÿÿ)ÚreprÚlen)r
   r   r   r   r   +   s    r   c             O   s>   y| ||Ž}W n* t k
r8   td| ||ƒ}t|Ž  Y nX |S )zN
    Call ``callable(*args, **kw)`` fixing any type errors that come out.
    N)r   r    r   )r   r   ÚkwÚvalr   r   r   r   Úfix_call2   s    r(   c             C   s^   d| kr|   d¡n| df\}}t|ƒ}x2|  d¡dd… |rB|gng  D ]}t||ƒ}qHW |S )z—
    Looks up a module or object from a some.module:func_name specification.
    To just look up a module, omit the colon and everything after it.
    ú:NÚ.r   )ÚsplitÚ
__import__r   )ÚspecÚpartsÚtargetÚmoduleÚpartr   r   r   Úlookup_object>   s
    &r2   )r   r   Zpaste.deploy.compatr   r    r   r(   r2   r   r   r   r   Ú<module>   s   "