o
    Ð­j".  ã                   @   sÊ  d Z ddlZddlZddlZddlmZmZmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ eeeef\ZZZZejZedd	„ d
D ƒƒZedd	„ dD ƒƒZe d¡Zzer\ddlZne‚W n eyj   dZY nw zej dd� W n e!y€   e  ¡  Y nw d6dd„Z"G dd„ dƒZ#G dd„ dƒZ$G dd„ dƒZ%G dd„ de%ƒZ&G dd„ de%ƒZ'G dd„ de%ƒZ(dd„ Z)d d!„ Z*d"d#„ Z+d$d%„ Z,d&d'„ Z-d(d)„ Z.d*d+„ Z/d,d-„ Z0d.d/„ Z1d0d1„ Z2d2d3„ Z3d4d5„ Z4dS )7z*
General helpers required for `tqdm.std`.
é    N)ÚpartialÚpartialmethodÚwraps)Ú	signature©Úeast_asian_width)Úwarn©Úproxyc                 c   ó   � | ]}t  |¡V  qd S ©N©ÚCUR_OSÚ
startswith©Ú.0Úi© r   úG/var/www/html/CropPilot/venv/lib/python3.10/site-packages/tqdm/utils.pyÚ	<genexpr>   ó   € r   )Úwin32Úcygwinc                 c   r   r   r   r   r   r   r   r      r   )ÚaixÚlinuxÚdarwinÚfreebsdz\x1b\[[;\d]*[A-Za-z]F)Ústripc                    sN   ˆdu ri ‰t ˆƒ‰‡‡fdd„tj ¡ D ƒ‰ |rtnt‰‡ ‡‡fdd„}|S )a  
    Override parameter defaults via `os.environ[prefix + param_name]`.
    Maps UPPER_CASE env vars map to lower_case param names.
    camelCase isn't supported (because Windows ignores case).

    Precedence (highest first):

    - call (`foo(a=3)`)
    - environ (`FOO_A=2`)
    - signature (`def foo(a=1)`)

    Parameters
    ----------
    prefix  : str
        Env var prefix, e.g. "FOO_"
    types  : dict, optional
        Fallback mappings `{'param_name': type, ...}` if types cannot be
        inferred from function signature.
        Consider using `types=collections.defaultdict(lambda: ast.literal_eval)`.
    is_method  : bool, optional
        Whether to use `functools.partialmethod`. If (default: False) use `functools.partial`.

    Examples
    --------
    ```
    $ cat foo.py
    from tqdm.utils import envwrap
    @envwrap("FOO_")
    def test(a=1, b=2, c=3):
        print(f"received: a={a}, b={b}, c={c}")

    $ FOO_A=42 FOO_C=1337 python -c 'import foo; foo.test(c=99)'
    received: a=42, b=2, c=99
    ```
    Nc                    s,   i | ]\}}|  ˆ¡r|ˆ d …  ¡ |“qS r   )r   Úlower©r   ÚkÚv)r   Úprefixr   r   Ú
<dictcomp>I   s   , zenvwrap.<locals>.<dictcomp>c              
      sÜ   t | ƒj‰ ‡ fdd„ˆ ¡ D ƒ}|D ]S}ˆ | }|j|jur?t|jd|jfƒD ]}z
||| ƒ||< W n	 ty<   Y q'w  q|jd urPt|jƒ|| ƒ||< qzˆ| || ƒ||< W q t	ye   Y qw ˆ| fi |¤ŽS )Nc                    s   i | ]\}}|ˆ v r||“qS r   r   r   ©Úparamsr   r   r#   O   ó    z)envwrap.<locals>.wrap.<locals>.<dictcomp>Ú__args__)
r   Ú
parametersÚitemsÚ
annotationÚemptyÚgetattrÚ	ExceptionÚdefaultÚtypeÚKeyError)ÚfuncÚ	overridesr    ÚparamÚtyp)Úenv_overridesÚpartÚtypesr$   r   ÚwrapL   s*   
ÿ€
ÿzenvwrap.<locals>.wrap)ÚlenÚosÚenvironr)   r   r   )r"   r7   Ú	is_methodr8   r   )r5   r   r6   r"   r7   r   Úenvwrap"   s   $r=   c                   @   s"   e Zd ZdZddd„Zdd„ ZdS )	ÚFormatReplacezN
    >>> a = FormatReplace('something')
    >>> f"{a:5d}"
    'something'
    Ú c                 C   s   || _ d| _d S ©Nr   )ÚreplaceÚformat_called)ÚselfrA   r   r   r   Ú__init__l   s   
zFormatReplace.__init__c                 C   s   |  j d7  _ | jS )Né   )rB   rA   )rC   Ú_r   r   r   Ú
__format__p   s   zFormatReplace.__format__N)r?   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rD   rG   r   r   r   r   r>   f   s    
r>   c                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )Ú
Comparablez1Assumes child has self._comparable attr/@propertyc                 C   s   | j |j k S r   ©Ú_comparable©rC   Úotherr   r   r   Ú__lt__w   ó   zComparable.__lt__c                 C   s   | |k p| |kS r   r   rO   r   r   r   Ú__le__z   s   zComparable.__le__c                 C   s   | j |j kS r   rM   rO   r   r   r   Ú__eq__}   rR   zComparable.__eq__c                 C   s
   | |k S r   r   rO   r   r   r   Ú__ne__€   ó   
zComparable.__ne__c                 C   s
   | |k S r   r   rO   r   r   r   Ú__gt__ƒ   rV   zComparable.__gt__c                 C   s
   | |k  S r   r   rO   r   r   r   Ú__ge__†   rV   zComparable.__ge__N)
rH   rI   rJ   rK   rQ   rS   rT   rU   rW   rX   r   r   r   r   rL   u   s    rL   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚObjectWrapperc                 C   s   t | j|ƒS r   )r,   Ú_wrapped©rC   Únamer   r   r   Ú__getattr__‹   rR   zObjectWrapper.__getattr__c                 C   s   t | j||ƒS r   )ÚsetattrrZ   ©rC   r\   Úvaluer   r   r   Ú__setattr__Ž   s   zObjectWrapper.__setattr__c                 C   s,   zt  | |¡W S  ty   t| |ƒ Y S w )z7Actual `self.getattr` rather than self._wrapped.getattr)Úobjectr]   ÚAttributeErrorr,   r[   r   r   r   Úwrapper_getattr‘   s
   ÿzObjectWrapper.wrapper_getattrc                 C   s   t  | ||¡S )z7Actual `self.setattr` rather than self._wrapped.setattr)rb   ra   r_   r   r   r   Úwrapper_setattr˜   s   zObjectWrapper.wrapper_setattrc                 C   s   |   d|¡ dS )z4
        Thin wrapper around a given object
        rZ   N)re   )rC   Úwrappedr   r   r   rD   œ   s   zObjectWrapper.__init__N)rH   rI   rJ   r]   ra   rd   re   rD   r   r   r   r   rY   Š   s    rY   c                       s0   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Z‡  ZS )ÚSimpleTextIOWrapperz™
    Change only `.write()` of the wrapped object by encoding the passed
    value and passing the result to the wrapped object's `.write()` method.
    c                    s   t ƒ  |¡ |  d|¡ d S )NÚencoding)ÚsuperrD   re   )rC   rf   rh   ©Ú	__class__r   r   rD   ©   s   zSimpleTextIOWrapper.__init__c                 C   s   | j  | |  d¡¡¡S )zP
        Encode `s` and pass to the wrapped object's `.write()` method.
        rh   )rZ   ÚwriteÚencoderd   )rC   Úsr   r   r   rl   ­   s   zSimpleTextIOWrapper.writec                 C   ó   | j t|d|ƒkS ©NrZ   ©rZ   r,   rO   r   r   r   rT   ³   ó   zSimpleTextIOWrapper.__eq__)rH   rI   rJ   rK   rD   rl   rT   Ú__classcell__r   r   rj   r   rg   £   s
    rg   c                       s4   e Zd ZdZedd„ ƒZ‡ fdd„Zdd„ Z‡  ZS )ÚDisableOnWriteErrorzO
    Disable the given `tqdm_instance` upon `write()` or `flush()` errors.
    c                    s   t ˆƒ‰‡ ‡fdd„}|S )zV
        Quietly set `tqdm_instance.miniters=inf` if `func` raises `errno=5`.
        c                     sÖ   zˆ | i |¤ŽW S  t y9 } z%|jdkr‚ ztdƒˆ_W n	 ty&   Y nw W Y d }~d S W Y d }~d S d }~w tyj } z&dt|ƒvrG‚ ztdƒˆ_W n	 tyW   Y nw W Y d }~d S W Y d }~d S d }~ww )Né   ÚinfÚclosed)ÚOSErrorÚerrnoÚfloatÚminitersÚReferenceErrorÚ
ValueErrorÚstr)ÚargsÚkwargsÚe©r1   Útqdm_instancer   r   ÚinnerÂ   s2   
ÿÿ€ÿÿ€úz7DisableOnWriteError.disable_on_exception.<locals>.innerr	   )rƒ   r1   r„   r   r‚   r   Údisable_on_exception»   s   z(DisableOnWriteError.disable_on_exceptionc                    sT   t ƒ  |¡ t|dƒr|  d|  ||j¡¡ t|dƒr(|  d|  ||j¡¡ d S d S )Nrl   Úflush)ri   rD   Úhasattrre   r…   rl   r†   )rC   rf   rƒ   rj   r   r   rD   Õ   s   
ÿ
ÿÿzDisableOnWriteError.__init__c                 C   ro   rp   rq   rO   r   r   r   rT   Þ   rr   zDisableOnWriteError.__eq__)	rH   rI   rJ   rK   Ústaticmethodr…   rD   rT   rs   r   r   rj   r   rt   ·   s    
	rt   c                       s   e Zd Zd‡ fdd„	Z‡  ZS )ÚCallbackIOWrapperÚreadc                    sz   t ƒ  |¡ t||ƒ‰|dkr"tˆƒ‡ ‡fdd„ƒ}|  d|¡ dS |dkr9tˆƒ‡ ‡fdd„ƒ}|  d|¡ dS tdƒ‚)	z{
        Wrap a given `file`-like object's `read()` or `write()` to report
        lengths to the given `callback`
        rl   c                    s&   ˆ| g|¢R i |¤Ž}ˆ t | ƒƒ |S r   ©r9   )Údatar   r€   Úres©Úcallbackr1   r   r   rl   ë   s   z)CallbackIOWrapper.__init__.<locals>.writerŠ   c                     s   ˆ| i |¤Ž}ˆ t |ƒƒ |S r   r‹   )r   r€   rŒ   rŽ   r   r   rŠ   ò   s   z(CallbackIOWrapper.__init__.<locals>.readz Can only wrap read/write methodsN)ri   rD   r,   r   re   r0   )rC   r�   ÚstreamÚmethodrl   rŠ   rj   rŽ   r   rD   ã   s   
zCallbackIOWrapper.__init__)rŠ   )rH   rI   rJ   rD   rs   r   r   rj   r   r‰   â   s    r‰   c                 C   sf   zd  | ¡ W dS  ty   Y dS  ty2   z|  ¡  d¡p#d| kW  Y S  ty1   Y Y dS w w )Nu   â–ˆâ–‰Fzutf-ÚU8T)rm   ÚUnicodeEncodeErrorr-   r   r   )rh   r   r   r   Ú_is_utfü   s   	øÿýr”   c                 C   s"   zt | jƒW S  ty   Y dS w ©NF)r”   rh   rc   ©Úfpr   r   r   Ú_supports_unicode
  s
   ÿr˜   c                 C   s2   t | tƒr| D ]}t|ƒdkr dS qdS t| ƒS )Néÿ   FT)Ú
isinstancer~   Úordr˜   )rn   Úcr   r   r   Ú	_is_ascii  s   
ÿr�   c                  C   s$   d} t rt} | du rt} trt} | S )zy
    Return a function which returns console dimensions (width, height).
    Supported: linux, osx, windows, cygwin.
    N)ÚIS_WINÚ_screen_shape_windowsÚ_screen_shape_tputÚIS_NIXÚ_screen_shape_linux)Ú_screen_shaper   r   r   Ú_screen_shape_wrapper  s   r¤   c                 C   s¾   zTdd l }ddlm}m} ddlm}m} d}| |krd}n| |kr$d}|j |¡}|dƒ}|j 	||¡}	|	rR| 
d|j¡\}
}}}}}}}}}}|| || fW S W d	S  ty^   Y d	S w )
Nr   )Úcreate_string_bufferÚwindll)ÚstdinÚstdoutiôÿÿÿiöÿÿÿiõÿÿÿé   ÚhhhhHhhhhhh©NN)ÚstructÚctypesr¥   r¦   Úsysr§   r¨   Úkernel32ÚGetStdHandleÚGetConsoleScreenBufferInfoÚunpackÚrawr-   )r—   r¬   r¥   r¦   r§   r¨   Ú	io_handleÚhÚcsbir�   Ú_bufxÚ_bufyÚ_curxÚ_curyÚ_wattrÚleftÚtopÚrightÚbottomÚ_maxxÚ_maxyr   r   r   rŸ   )  s.   ÿýþþrŸ   c                     s@   zddl ‰ddlm‰  ‡ ‡fdd„dD ƒW S  ty   Y dS w )zcygwin xterm (windows)r   N)Ú
check_callc                    s&   g | ]}t ˆ ˆ d | ¡ƒƒd ‘qS )ztput rE   )ÚintÚsplitr   ©rÂ   Úshlexr   r   Ú
<listcomp>F  s    ÿz&_screen_shape_tput.<locals>.<listcomp>)ÚcolsÚlinesr«   )rÆ   Ú
subprocessrÂ   r-   )rF   r   rÅ   r   r    A  s   ÿþr    c                 C   s¦   zddl m } ddlm} ddlm} W n
 ty   Y dS w z|d|| |dƒƒd d… \}}||fW S  tyR   z
d	d
„ dD ƒW  Y S  ttfyQ   Y Y dS w w )Nr   )Úarray)Úioctl)Ú
TIOCGWINSZr«   rµ   z        é   c                 S   s   g | ]}t tj| ƒd  ‘qS )rE   )rÃ   r:   r;   r   r   r   r   rÇ   [  r&   z'_screen_shape_linux.<locals>.<listcomp>)ÚCOLUMNSÚLINES)	rË   ÚfcntlrÌ   ÚtermiosrÍ   ÚImportErrorr-   r0   r}   )r—   rË   rÌ   rÍ   ÚrowsrÈ   r   r   r   r¢   M  s"   ÿ
ÿýr¢   c                     s4   t dtdd� tƒ ‰ ˆ sdS tˆ ƒ‡ fdd„ƒ} | S )zd
    Return a function which returns console width.
    Supported: linux, osx, windows, cygwin.
    zQUse `_screen_shape_wrapper()(file)[0]` instead of `_environ_cols_wrapper()(file)`rÎ   )Ú
stacklevelNc                    s   ˆ | ƒd S r@   r   r–   ©Úshaper   r   r„   k  s   z$_environ_cols_wrapper.<locals>.inner)r   ÚDeprecationWarningr¤   r   )r„   r   rÖ   r   Ú_environ_cols_wrapper`  s   ÿrÙ   c                   C   s   t jdkrtd u rdS dS )NÚntr?   z[A)r:   r\   Úcoloramar   r   r   r   Ú_term_move_upr  s   rÜ   c                 C   s   t dd„ t| ƒD ƒƒS )Nc                 s   s$   � | ]}t |ƒd v rdndV  qdS )ÚFWrÎ   rE   Nr   )r   Úchr   r   r   r   w  s   €" z_text_width.<locals>.<genexpr>)Úsumr~   )rn   r   r   r   Ú_text_widthv  s   rà   c                 C   s   t t d| ¡ƒS )zp
    Returns the real on-screen length of a string which may contain
    ANSI control codes and wide chars.
    r?   )rà   ÚRE_ANSIÚsub)rŒ   r   r   r   Údisp_lenz  s   rã   c                 C   sz   t | ƒt| ƒkr| d|… S tt | ¡ƒ}t| ƒ|kr'| dd… } t| ƒ|ks|r;tt | ¡ƒr;|  d¡r7| S | d S | S )zB
    Trim a string which may contain ANSI control characters.
    Néÿÿÿÿz[0m)r9   rã   Úboolrá   ÚsearchÚendswith)rŒ   ÚlengthÚansi_presentr   r   r   Ú	disp_trim‚  s   ÿrê   r•   )5rK   r:   Úrer®   Ú	functoolsr   r   r   Úinspectr   Úunicodedatar   Úwarningsr   Úweakrefr
   ÚrangeÚchrr~   Ú_rangeÚ_unichÚ_unicodeÚ_basestringÚplatformr   Úanyrž   r¡   Úcompilerá   rÛ   rÓ   ÚinitÚ	TypeErrorr=   r>   rL   rY   rg   rt   r‰   r”   r˜   r�   r¤   rŸ   r    r¢   rÙ   rÜ   rà   rã   rê   r   r   r   r   Ú<module>   s\    

þÿÿ
D+	