U
    ARd3                     @   s   U d dl mZmZmZmZmZmZ d dlZd dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZmZ erd dlmZ d d	lmZ ed
ef ee dddZdee ddddZdaeed< deee eddddZe	jddddZdS )    )TYPE_CHECKINGAnyHashableOptionalUnioncastN)runtime	type_util)
is_in_form)StreamlitAPIException)LabelVisibilityMessage)WidgetCallbackget_session_state)DeltaGenerator)DataFrameCompatibler   )datareturnc                 C   s4   t | r0t | } | jjdkr0tt| jd S d S )Nr   )r	   Zis_dataframe_compatibleZconvert_anything_to_dfindexsizer   r   )r    r   </tmp/pip-unpacked-wheel-b9et7o5g/streamlit/elements/utils.py last_index_for_melted_dataframes   s
    

r   r   )dg	on_changer   c                 C   s$   t  r t| r |d k	r tdd S )NzWith forms, callbacks can only be defined on the `st.form_submit_button`. Defining callbacks on other widgets inside a form is not allowed.)r   existsr
   r   )r   r   r   r   r   check_callback_rules)   s    r   F_shown_default_value_warningT)default_valuekeywrites_allowedr   c                 C   sZ   |d kst  sd S t }||s(d S |s4td| d k	rVtsVtd| d dad S )NzmValues for st.button, st.download_button, st.file_uploader, and st.form cannot be set using st.session_state.zThe widget with key "zX" was created with a default value but also had its value set via the Session State API.T)r   r   r   Zis_new_state_valuer   r   	streamlitwarning)r   r   r    Zsession_stater   r   r   check_session_state_rules6   s    

r#   z7LabelVisibilityMessage.LabelVisibilityOptions.ValueType)label_visibility_stringr   c                 C   sB   | dkrt jjS | dkr t jjS | dkr0t jjS td|  dS )zNReturns one of LabelVisibilityMessage enum constants.py based on string value.Zvisiblehidden	collapsedz Unknown label visibility value: N)r   ZLabelVisibilityOptionsZVISIBLEZHIDDENZ	COLLAPSED
ValueError)r$   r   r   r    get_label_visibility_proto_valueP   s    r(   )T) typingr   r   r   r   r   r   r!   r   r	   Zstreamlit.elements.formr
   Zstreamlit.errorsr   Z*streamlit.proto.LabelVisibilityMessage_pb2r   Zstreamlit.runtime.stater   r   Zstreamlit.delta_generatorr   Zstreamlit.type_utilr   r   r   r   bool__annotations__strr#   ZLabelVisibilityr(   r   r   r   r   <module>   s8     
 
   