
    g	                        U d Z ddlmZ ddlZddlZddlZddlZddlmZm	Z	 ej                  dk\  rddini Zded	<   dd
ZddZddZy)zA bunch of useful utilities.    )annotationsN)AnyCallable)   	   usedforsecurityFzdict[str, Any]HASHLIB_KWARGSc                J     g t        j                          fd       }|S )z2Decorator to memoize the result of a no-args func.c                 >    sj                                  d   S )Nr   )append)funcresults   C/var/www/openai/venv/lib/python3.12/site-packages/streamlit/util.pywrapped_funczmemoize.<locals>.wrapped_func$   s    MM$&!ay    )	functoolswraps)r   r   r   s   ` @r   memoizer       s+    F__T 
 r   c                B     j                   j                  }dddg t               i gt        j                         r  fdt        j
                         D        }n#fd j                  j                         D        }dj                  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     K   | ]m  }|j                   r_t        |j                        |j                  k7  r<t        |j                        vr$|j                  t        |j                        f o y wN)reprgetattrnamedefault).0fdefaultsselfs     r   	<genexpr>zrepr_.<locals>.<genexpr>6   s^      
-vvaff%2aff%X5	 VVWT166*+-s   A3A6c              3  6   K   | ]  \  }}|vs||f  y wr    )r   r   vr   s      r   r!   zrepr_.<locals>.<genexpr>>   s#     W,A&1aQhEV1v,As   	z, c              3  0   K   | ]  \  }}| d |  yw)=Nr#   )r   fieldvalues      r   r!   zrepr_.<locals>.<genexpr>@   s      Q[\UEugQui0[s   ())		__class____name__setdataclassesis_dataclassfields__dict__itemsjoin)r    	classnamefields_valsfield_reprsr   s   `   @r   repr_r7   -   s     ''I  UBr:H%
 ''-
 XDMM,?,?,AW))Q[QQK[+a((r   c                    t        j                  di t        }t        | t              r| j                  d      n| }|j                  |       |j                         S )z(Return the md5 hash of the given string.zutf-8)md5)hashlibnewr	   
isinstancestrencodeupdate	hexdigest)shbs      r   calc_md5rD   D   sC    ,^,A'3/QAHHQK;;=r   )r   Callable[..., Any]returnrE   )r    r   rF   r=   )rA   zbytes | strrF   r=   )__doc__
__future__r   r.   r   r:   systypingr   r   version_infor	   __annotations__r   r7   rD   r#   r   r   <module>rM      sQ    # "    
  
 #&"2"2f"<"  

).r   