o
    沪g	                     @  s   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dZdddZdddZdS )zA bunch of useful utilities.    )annotationsN)AnyCallable)   	   usedforsecurityFzdict[str, Any]HASHLIB_KWARGS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   J/var/www/html/chatdoc2/venv/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>6   s    zrepr_.<locals>.<genexpr>c                 3  s$    | ]\}}| vr||fV  qd S r   r   )r   r   v)r    r   r   r!   >   s   " z, c                 s  s"    | ]\}}| d |V  qdS )=Nr   )r   fieldvaluer   r   r   r!   @   s     ())		__class____name__setdataclassesis_dataclassfields__dict__itemsjoin)r   	classnamefields_valsfield_reprsr   r   r   repr_-   s   
r4   sbytes | strc                 C  s:   t jdi t}t| tr| dn| }|| | S )z(Return the md5 hash of the given string.md5zutf-8N)r7   )hashlibnewr   
isinstancer   encodeupdate	hexdigest)r5   hbr   r   r   calc_md5D   s   
r@   )r	   r
   r   r
   )r   r   r   r   )r5   r6   r   r   )__doc__
__future__r   r+   r   r8   systypingr   r   version_infor   __annotations__r   r4   r@   r   r   r   r   <module>   s   


