ó
    â“,jM  ã                   óž   • S r SSKrSSKrSSKrSSKrS0 4S\R                  \R                  \      S\	4S jjr
 " S S5      r " S S	5      rg)
z*
Non signal processing related utilities.
é    NÚattrsÚ	overridesc                 ó   • [         R                  " U R                  5      R                  n/ nUc  [	        UR                  5       5      nU H†  nSnXR;   a  X%   nO[        X5      (       a  [        X5      nOM-  XS;   a3  X5   nUR                  [         R                  L d  XxR                  :w  a  SnOSnU(       d  Mp  UR                  U SU 35        Mˆ     U R                  R                   SSR                  U5       S3$ )zx
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	            ÚšC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\julius/utils.pyÚsimple_reprr      sä   € ô ×Ò˜sŸ}™}Ó-×8Ñ8€FØ€JØ�}Ü�V—[‘[“]Ó#ˆÛˆØˆØÓØ‘O‰EÜ�S×ÑÜ˜CÓ&‰EáØ‹>Ø‘LˆEØ�}‰}¤§¡Ò.°%¿=¹=Ó2HØ�øàˆGçˆ7Ø×Ñ   a¨ wÐ/Ö0ñ! ð" �m‰m×$Ñ$Ð% Q s§x¡x°
Ó';Ð&<¸AÐ>Ð>ó    c                   óJ   • \ rS rSrSr\R                  4S jrS rS r	S r
Srg)	ÚMarkdownTableé+   a	  
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                 ó   • Xl         X l        g ©N©ÚcolumnsÚfile)Úselfr'   r(   s      r   Ú__init__ÚMarkdownTable.__init__:   s   € ØŒØ�	r    c                 ód   • U R                   R                  SSR                  U5      -   S-   5        g )NÚ|z|
)r(   Úwriter   )r)   Úlines     r   Ú_writelnÚMarkdownTable._writeln>   s$   € Ø�	‰	�‰˜˜cŸh™h t›nÑ,¨uÑ4Õ5r    c                 óŒ   • U R                  S U R                   5       5        U R                  S U R                   5       5        g )Nc              3   ó.   #   • U  H  nS U S 3v •  M     g7f)Ú N© ©Ú.0Úcols     r   Ú	<genexpr>Ú'MarkdownTable.header.<locals>.<genexpr>B   s   é € Ð9ªL S˜˜#˜˜a•jªLùs   ‚c              3   óD   #   • U  H  nS [        U5      S-   -  v •  M     g7f)Ú-é   N)Úlenr6   s     r   r9   r:   C   s   é € ÐC²l¨s�cœS ›X¨™\Ö*²lùs   ‚ )r0   r'   ©r)   s    r   ÚheaderÚMarkdownTable.headerA   s.   € Ø�‰Ñ9¨D¯LªLÓ9Ô9Ø�‰ÑC°d·l²lÓCÕCr    c           
      óÖ   • / n[        XR                  5       H=  u  p4[        US[        [	        U5      5      -   5      nUR                  SU-   S-   5        M?     U R                  U5        g )NÚ>r4   )Úzipr'   ÚformatÚstrr>   r   r0   )r)   r/   ÚoutÚvalr8   s        r   r/   ÚMarkdownTable.lineE   sW   € ØˆÜ˜D§,¡,Ö/‰HˆCÜ˜˜c¤C¬¨C«£MÑ1Ó2ˆCØ�J‰J�s˜S‘y 3‘Ö'ñ 0ð 	�‰�cÕr    r&   N)r   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚsysÚstdoutr*   r0   r@   r/   Ú__static_attributes__r5   r    r   r"   r"   +   s%   † ñð &)§Z¡Zô ò6òDõr    r"   c                   ó*   • \ rS rSrSrS rS rS rSrg)ÚChronoéM   a”  
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                 ó   • S U l         g r%   )Údurationr?   s    r   r*   ÚChrono.__init__Z   s	   € Øˆ�r    c                 ó:   • [         R                   " 5       U l        U $ r%   )ÚtimeÚ_beginr?   s    r   Ú	__enter__ÚChrono.__enter__]   s   € Ü—i’i“kˆŒØˆr    c                 óÌ   • SS K nUR                  R                  5       (       a  UR                  R                  5         [        R                  " 5       U R
                  -
  U l        g )Nr   )ÚtorchÚcudaÚis_availableÚsynchronizerX   rY   rU   )r)   Úexc_typeÚ	exc_valueÚexc_tracebckr]   s        r   Ú__exit__ÚChrono.__exit__a   s>   € ÛØ�:‰:×"Ñ"×$Ñ$Ø�J‰J×"Ñ"Ô$ÜŸ	š	› d§k¡kÑ1ˆ�r    )rY   rU   N)	r   rJ   rK   rL   rM   r*   rZ   rd   rP   r5   r    r   rR   rR   M   s   † ñòòõ2r    rR   )rM   r
   ÚtypingÚtprN   rX   ÚOptionalÚSequencerF   Údictr   r"   rR   r5   r    r   Ú<module>rk      s\   ðñó Û Û 
Û ð =AØ"$ñ?˜BŸK™K¨¯©°CÑ(8Ñ9ð ?Øõ?÷<ñ ÷D2ò 2r    