Ë
      çiM  ã                   óš   — d Z ddlZddlZddlZddlZdi fdej                  ej                  e      de	fd„Z
 G d„ d«      Z G d„ d	«      Zy)
z*
Non signal processing related utilities.
é    NÚattrsÚ	overridesc                 óâ  — t        j                  | j                  «      j                  }g }|€t	        |j                  «       «      }|D ]z  }d}||v r||   }nt        | |«      rt        | |«      }nŒ)||v r3||   }|j                  t         j                  u s||j                  k7  rd}nd}|sŒe|j                  |› d|› �«       Œ| | j                  j                  › ddj                  |«      › d�S )z„
    Return a simple representation string for `obj`.
    If `attrs` is not None, it should be a list of attributes to include.
    FTÚ=Ú(Ú,Ú))ÚinspectÚ	signatureÚ	__class__Ú
parametersÚlistÚkeysÚhasattrÚgetattrÚdefaultÚ_emptyÚappendÚ__name__Újoin)	Úobjr   r   ÚparamsÚ
attrs_reprÚattrÚdisplayÚvalueÚparams	            úa/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/julius/utils.pyÚsimple_reprr      sì   € ô ×Ñ˜sŸ}™}Ó-×8Ñ8€FØ€JØ€}Ü�V—[‘[“]Ó#ˆÛˆØˆØ�9ÑØ˜d‘O‰EÜ�S˜$ÔÜ˜C Ó&‰EàØ�6‰>Ø˜4‘LˆEØ�}‰}¤§¡Ñ.°%¸5¿=¹=Ò2HØ‘àˆGâØ×Ñ   a¨ wÐ/Õ0ð! ð" �m‰m×$Ñ$Ð% Q s§x¡x°
Ó';Ð&<¸AÐ>Ð>ó    c                   ó@   — e Zd ZdZej
                  fd„Zd„ Zd„ Zd„ Z	y)ÚMarkdownTablea9  
    Simple MarkdownTable generator. The column titles should be large enough
    for the lines content. This will right align everything.

    >>> import io  # we use io purely for test purposes, default is sys.stdout.
    >>> file = io.StringIO()
    >>> table = MarkdownTable(["Item Name", "Price"], file=file)
    >>> table.header(); table.line(["Honey", "5"]); table.line(["Car", "5,000"])
    >>> print(file.getvalue().strip())  # Strip for test purposes
    | Item Name | Price |
    |-----------|-------|
    |     Honey |     5 |
    |       Car | 5,000 |
    c                 ó    — || _         || _        y ©N)ÚcolumnsÚfile)Úselfr%   r&   s      r   Ú__init__zMarkdownTable.__init__:   s   € ØˆŒØˆ�	r    c                 ód   — | j                   j                  ddj                  |«      z   dz   «       y )NÚ|z|
)r&   Úwriter   )r'   Úlines     r   Ú_writelnzMarkdownTable._writeln>   s$   € Ø�	‰	�‰˜˜cŸh™h t›nÑ,¨uÑ4Õ5r    c                 óŒ   — | j                  d„ | j                  D «       «       | j                  d„ | j                  D «       «       y )Nc              3   ó(   K  — | ]
  }d |› d �–— Œ y­w)Ú N© ©Ú.0Úcols     r   Ú	<genexpr>z'MarkdownTable.header.<locals>.<genexpr>B   s   è ø€ Ð9©L S˜˜#˜˜a”j©Lùs   ‚c              3   ó>   K  — | ]  }d t        |«      dz   z  –— Œ y­w)Ú-é   N)Úlenr2   s     r   r5   z'MarkdownTable.header.<locals>.<genexpr>C   s   è ø€ ÐC±l¨s�cœS ›X¨™\Õ*±lùs   ‚)r-   r%   ©r'   s    r   ÚheaderzMarkdownTable.headerA   s.   € Ø�‰Ñ9¨D¯LªLÓ9Ô9Ø�‰ÑC°d·l²lÓCÕCr    c           
      óÖ   — g }t        || j                  «      D ]=  \  }}t        |dt        t	        |«      «      z   «      }|j                  d|z   dz   «       Œ? | j                  |«       y )NÚ>r0   )Úzipr%   ÚformatÚstrr9   r   r-   )r'   r,   ÚoutÚvalr4   s        r   r,   zMarkdownTable.lineE   s[   € ØˆÜ˜D $§,¡,Ö/‰HˆC�Ü˜˜c¤C¬¨C«£MÑ1Ó2ˆCØ�J‰J�s˜S‘y 3‘Õ'ð 0ð 	�‰�cÕr    N)
r   Ú
__module__Ú__qualname__Ú__doc__ÚsysÚstdoutr(   r-   r;   r,   r1   r    r   r"   r"   +   s%   „ ñð &)§Z¡Zó ò6òDór    r"   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚChronoa¼  
    Measures ellapsed time, calling `torch.cuda.synchronize` if necessary.
    `Chrono` instances can be used as context managers (e.g. with `with`).
    Upon exit of the block, you can access the duration of the block in seconds
    with the `duration` attribute.

    >>> with Chrono() as chrono:
    ...     _ = sum(range(10_000))
    ...
    >>> print(chrono.duration < 10)  # Should be true unless on a really slow computer.
    True
    c                 ó   — d | _         y r$   )Údurationr:   s    r   r(   zChrono.__init__Z   s	   € Øˆ�r    c                 ó8   — t        j                   «       | _        | S r$   )ÚtimeÚ_beginr:   s    r   Ú	__enter__zChrono.__enter__]   s   € Ü—i‘i“kˆŒØˆr    c                 óÀ   — dd l }|j                  j                  «       r|j                  j                  «        t	        j                  «       | j
                  z
  | _        y )Nr   )ÚtorchÚcudaÚis_availableÚsynchronizerM   rN   rK   )r'   Úexc_typeÚ	exc_valueÚexc_tracebckrQ   s        r   Ú__exit__zChrono.__exit__a   s;   € ÛØ�:‰:×"Ñ"Ô$Ø�J‰J×"Ñ"Ô$ÜŸ	™	› d§k¡kÑ1ˆ�r    N)r   rC   rD   rE   r(   rO   rX   r1   r    r   rI   rI   M   s   „ ñòòó2r    rI   )rE   r
   ÚtypingÚtprF   rM   ÚOptionalÚSequencer@   Údictr   r"   rI   r1   r    r   Ú<module>r^      s\   ðñó Û Û 
Û ð =AØ"$ñ?˜BŸK™K¨¯©°CÑ(8Ñ9ð ?Øó?÷<ñ ÷D2ò 2r    