
    g              	      ^   U d dl mZ d dlZd dlZd dlmZmZmZmZ d dl	m
Z
 erd dlmZ  ej                  d      Zded<   dd	Zdd
ZddZddZd dZd!dZd"dZd#dZd$dZ eh d e edd            dhz
  z        Zded<   d%dZd&dZ ej                  d      Zded<   d Z d'dZ!y)(    )annotationsN)TYPE_CHECKINGAnyFinalcast)StreamlitAPIException)SupportsStrz^[a-zA-Z0-9_&\-\. ]+$r   _ALPHANUMERIC_CHAR_REGEXc                Z    t        j                  t        |             j                         S )z;Convert an object to text, dedent it, and strip whitespace.)textwrapdedentstrstriptexts    J/var/www/openai/venv/lib/python3.12/site-packages/streamlit/string_util.py
clean_textr      s    ??3t9%++--    c                B    | rt        j                  t        |       du S dS )zCheck if a string contains any special chars.

    Special chars in that case are all chars that are not
    alphanumeric, underscore, hyphen or whitespace.
    NF)rematchr
   r   s    r   _contains_special_charsr   "   s$     @D288,d3t;NNr   c                N    t        |       syddlm} | j                  dd      |v S )z'Check if input string is a valid emoji.Fr   )
ALL_EMOJISu   ️ )r   streamlit.emojisr   replace)r   r   s     r   is_emojir   +   s&    "4(+<<b)Z77r   c                    ddl m} | |v S )z/Check if input string is a valid Material icon.r   )ALL_MATERIAL_ICONS)streamlit.material_icon_namesr    )
maybe_iconr    s     r   is_material_iconr#   5   s    @+++r   c                T    | | j                  d      rt        |       S t        |       S )zFValidate an icon or emoji and return it in normalized format if valid.z	:material)
startswithvalidate_material_iconvalidate_emoji)icons    r   validate_icon_or_emojir)   <   s)    DOOK8%d++$r   c                @    | yt        |       r| S t        d|  d      )Nr   zThe value "zZ" is not a valid emoji. Shortcodes are not allowed, please use a single character instead.)r   r   )maybe_emojis    r   r'   r'   C   s9    	+	#+  'A  B
 	
r   c                4   dg}| yd}t        j                  ||       }d}|s%t        d| j                  d|dz          d| d      |j	                         \  }}||vs|rt        |      s%t        d| j                  d|dz          d| d	      d
| d| d
S )zYValidate a Material icon shortcode and return the icon in
    normalized format if valid.materialr   z^\s*:(.+)\/(.+):\s*$u   ​zThe value `"/zW"` is not a valid Material icon. Please use a Material icon shortcode like **`:materialz/thumb_up:`**z/thumb_up:`**. :)r   r   r   r   groupsr#   )maybe_material_iconsupported_icon_packs
icon_regex
icon_matchinvisible_white_space	pack_name	icon_names          r   r&   r&   O   s    
 	 "(J*&9:J %#.66s<QTW<WXY ZEEZD[[hj
 	

 &,,.Iy 	--	*#.66s<QTW<WXY ZFF[E\\km
 	

 yk9+Q''r   c                    t        |       sd| fS ddlm} t        j                  ||       }|d| fS t        t        |      }|j                  d      |j                  d      fS )zReturn a tuple containing the first emoji found in the given string and
    the rest of the string (minus an optional separator between the two).
    r   r   )EMOJI_EXTRACTION_REGEX      )r   r   r9   r   searchr   r   group)r   r9   re_matchs      r   extract_leading_emojir?   v   se    
 #4( 4x7yy/6H4x
 #31H>>!hnnQ///r   c                N    d}d}| D ]  }||k(  r|dz  }t        ||      }d} |S )zBReturns the count of the max sequence of a given char in a string.r   r:   )max)stringcharmax_sequencecurrent_sequencecs        r   max_char_sequencerG      sD    L9!|-=>L   r   >         	   
                      	TEXTCHARSc                @    t        | j                  dt                    S )z8Guess if an input bytesarray can be encoded as a string.N)bool	translaterR   )inps    r   is_binary_stringrW      s     dI.//r   c                    t        | d      }d}t        |      dk\  r|dz  }|dz  }t        |      dk\  rdj                  |dj                  d      j                  d	      g d
|         S )z9Simplifies number into Human readable format, returns strz.2gr   i  r:   g     @@z{}{}f0.)r   kmbt)floatabsformatrstrip)numnum_converted	magnitudes      r   simplify_numberrg      s}    SI'MI
m

$Q	 m

$ ==
##C(//4 + r   z0^\<[a-zA-Z_]+[a-zA-Z0-9<>._ ]* at 0x[0-9a-f]+\>$_OBJ_MEM_ADDRESSc                0    t         j                  |       ryy)zAReturns True if the string looks like <foo blarg at 0x15ee6f9a0>.TF)rh   r   )rB   s    r   is_mem_address_strrj      s    f%r   c                z    t        j                  dd|       }t        j                  dd|      j                         S )zConverts UpperCamelCase and lowerCamelCase to snake_case.

    Examples
    --------
        fooBar -> foo_bar
        BazBang -> baz_bang

    z(.)([A-Z][a-z]+)z\1_\2z([a-z0-9])([A-Z]))r   sublower)camel_case_strs1s     r   to_snake_caserp      s4     
"Hn	=B66%x4::<<r   )r   r	   returnr   )r   r   rq   rT   )r"   r   rq   rT   )r(   
str | Nonerq   r   )r+   rr   rq   r   )r1   rr   rq   r   )r   r   rq   ztuple[str, str])rB   r   rC   r   rq   int)rV   bytesrq   rT   )rd   rs   rq   r   )rn   r   rq   r   )"
__future__r   r   r   typingr   r   r   r   streamlit.errorsr   streamlit.type_utilr	   compiler
   __annotations__r   r   r   r#   r)   r'   r&   r?   rG   	bytearraysetrangerR   rW   rg   rh   rj   rp    r   r   <module>r      s    # 	  2 2 2/","**-E"F % F.
O8, 	
$(N00 E$$6 74& @@	5 
0
 %"**7 % 

=r   