U
    42‹i	  ã                   @  sL   d dl mZ d dlmZ d dlZedƒdddœdd	„ƒZddd
œdd„ZdS )é    )Úannotations)Ú	lru_cacheNéd   ÚstrÚint)ÚcÚreturnc                 C  s¬   t | ƒ}d|  krdk r$n ndS |dkspd|  kr@dkspn d|  krVdkspn d	|  krld
krtn ndS t | ¡}|dkrŠdS |dkr–dS t | ¡dkr¨dS dS )z¯Determine how many columns are needed to display a character in a terminal.

    Returns -1 if the character is not printable.
    Returns 0, 1 or 2 for other characters.
    é    é   é   r   i   i   i(   i.   i`   ic   ÚCcéÿÿÿÿ)ZMeZMn)ÚFÚWé   )ÚordÚunicodedataÚcategoryÚeast_asian_width)r   Úor   © r   ú7/tmp/pip-unpacked-wheel-7n2p7kht/_pytest/_io/wcwidth.pyÚwcwidth   s:    ÿ þþ ýý üü

r   )Úsr   c                 C  s8   d}t  d| ¡D ]"}t|ƒ}|dk r* dS ||7 }q|S )zŽDetermine how many columns are needed to display a string in a terminal.

    Returns -1 if the string contains non-printable characters.
    r   ÚNFCr   )r   Ú	normalizer   )r   Úwidthr   Zwcr   r   r   Úwcswidth.   s    
r   )Ú
__future__r   Ú	functoolsr   r   r   r   r   r   r   r   Ú<module>   s
   &