o
    h-	                     @  sZ   d Z ddlmZ ddlZddlZddlZddlmZmZ ddd	Z	dddZ
dddZdS )zA bunch of useful utilities.    )annotationsN)AnyCallablefuncCallable[..., Any]returnc                   s    g t   fdd}|S )z2Decorator to memoize the result of a no-args func.c                     s   s    d S )Nr   )append r   resultr	   B/var/www/vscode/kcb/lib/python3.10/site-packages/streamlit/util.pywrapped_func   s   zmemoize.<locals>.wrapped_func)	functoolswraps)r   r   r	   r
   r   memoize   s   r   selfr   strc                   s|   j j}dddg t i g tr  fddtD }n fddj D }ddd |D }| d	| d
S )zA clean repr for a class, excluding both values that are likely defaults,
    and those explicitly default for dataclasses.
    N Fc                 3  sJ    | ] }|j r"t|j|jkr"t|j vr|jt|jfV  qd S N)reprgetattrnamedefault).0fdefaultsr   r	   r   	<genexpr>/   s    zrepr_.<locals>.<genexpr>c                 3  s$    | ]\}}| vr||fV  qd S r   r	   )r   r   v)r   r	   r   r   7   s   " z, c                 s  s"    | ]\}}| d |V  qdS )=Nr	   )r   fieldvaluer	   r	   r   r   9   s     ())		__class____name__setdataclassesis_dataclassfields__dict__itemsjoin)r   	classnamefields_valsfield_reprsr	   r   r   repr_&   s   
r0   sbytes | strc                 C  s8   t jddd}t| tr| dn| }|| | S )ziReturn the md5 hash of the given string.

    This should not be used for security-related purposes.
    md5F)usedforsecurityzutf-8)hashlibnew
isinstancer   encodeupdate	hexdigest)r1   hbr	   r	   r   calc_md5=   s   
r=   )r   r   r   r   )r   r   r   r   )r1   r2   r   r   )__doc__
__future__r   r'   r   r5   typingr   r   r   r0   r=   r	   r	   r	   r   <module>   s   

