
    gI                    $   U d Z ddlmZ ddlmZ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mZmZmZmZ ddlmZ dd	lmZmZ dd
lmZmZmZmZmZ ddlm Z m!Z! erddl"Z#ddl$Z%ddl&m'Z' ed   Z(de)d<   ed   Z*de)d<    G d de      Z+e G d d             Z, G d de      Z-ddddZ.de)d<   ddddZ/de)d<   d Z0de)d!<   d"Z1de)d#<   d$Z2de)d%<   d&Z3de)d'<   e0e3z   Z4de)d(<   e1e3z   Z5de)d)<   e2e3z   Z6de)d*<   d+e3z   Z7de)d,<   	 	 	 	 	 	 dQd-Z8	 	 	 	 	 	 	 	 	 dR	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dSd.Z9	 	 	 	 	 	 	 	 	 	 dTd/Z:	 	 	 	 	 	 dUd0Z;	 	 	 	 dVd1Z<	 	 	 	 	 	 dWd2Z=	 	 	 	 	 	 	 	 	 	 	 	 dXd3Z>	 	 	 	 dYd4Z?dZd5Z@	 	 	 	 	 	 	 	 	 	 	 	 d[d6ZA	 	 	 	 	 	 	 	 d\d7ZBd]d8ZCd^d9ZD	 	 	 	 	 	 	 	 	 	 	 	 d_d:ZE	 	 	 	 	 	 d`d;ZFdad<ZG	 	 	 	 	 	 	 	 dbd=ZH	 	 	 	 	 	 dcd>ZI	 	 	 	 	 	 	 	 ddd?ZJded@ZK	 	 	 	 	 	 	 	 	 	 	 	 dfdAZL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dgdBZM	 	 	 	 	 	 	 	 	 	 	 	 dhdCZN	 	 	 	 	 	 	 	 	 	 	 	 didDZO	 	 	 	 	 	 djdEZP	 	 	 	 	 	 	 	 	 	 	 	 dkdFZQ	 	 	 	 	 	 	 	 dldGZR	 	 	 	 	 	 	 	 	 	 	 	 dmdHZS	 	 	 	 	 	 	 	 dndIZT	 	 	 	 	 	 	 	 dodJZU G dK dLe!      ZV G dM dNe!      ZW G dO dPe!      ZXy)pz+Utilities for our built-in charts commands.    )annotations)
CollectionHashableSequence)	dataclass)date)Enum)TYPE_CHECKINGAnyFinalLiteral	TypedDictcast)	TypeAlias)dataframe_util	type_util)Coloris_color_likeis_color_tuple_likeis_hex_color_liketo_css_color)ErrorStreamlitAPIExceptionN)Data)quantitativeordinaltemporalnominalr   VegaLiteType)	normalizecenterlayeredChartStackTypec                  :    e Zd ZU dZded<   ded<   ded<   ded<   y)	PrepDataColumnsz;Columns used for the prep_data step in Altair Arrow charts.
str | Nonex_column	list[str]y_column_listcolor_columnsize_columnN__name__
__module____qualname____doc____annotations__     `/var/www/openai/venv/lib/python3.12/site-packages/streamlit/elements/lib/built_in_chart_utils.pyr%   r%   6   s    Er3   r%   c                  0    e Zd ZU dZded<   ded<   ded<   y)	AddRowsMetadatazsMetadata needed by add_rows on native charts.

    This class is used to pass some important info to add_rows.
    strchart_commandHashable | None
last_indexr%   columnsNr,   r2   r3   r4   r6   r6   ?   s    
 r3   r6   c                  B    e Zd ZdddZddddZddddZd	d
dZdddZy)	ChartTypearea
area_chart)	mark_typecommandbar	bar_chartF)r@   rA   
horizontalTline
line_chartcirclescatter_chartN)r-   r.   r/   AREAVERTICAL_BARHORIZONTAL_BARLINESCATTERr2   r3   r4   r=   r=   K   s9    L9D!&;eTL#([PTUNL9D$AGr3   r=      bottom)titlePaddingoffsetorientr   _COLOR_LEGEND_SETTINGSg      ?_SIZE_LEGEND_SETTINGSindex_SEPARATED_INDEX_COLUMN_TITLEvalue_MELTED_Y_COLUMN_TITLEcolor_MELTED_COLOR_COLUMN_TITLEz--p5bJXXpQgvPz6yvQMFiy_PROTECTION_SUFFIX_SEPARATED_INDEX_COLUMN_NAME_MELTED_Y_COLUMN_NAME_MELTED_COLOR_COLUMN_NAMEDOES_NOT_EXIST_NON_EXISTENT_COLUMN_NAMEc           	     6    | dvrt        d|  d| d| d      y )N)NTFr    r!   r"   z#Invalid value for stack parameter: ze. Stack must be one of True, False, "normalize", "center", "layered" or None. See documentation for `z	` [here](z) for more information.)r   )stackrA   	docs_links      r4   maybe_raise_stack_warningrd   u   s@     II#1% 9&&-Yi	{BY[
 	
 Jr3   c                   ddl }t        j                  |d      }~t        ||      }t	        |||      }t        ||      \  }}t        ||      \  }}t        | j                  d   t        |      ||||d      }t        |||||      \  }}}}}t        || |||||||
	      \  }} |j                  || j                  d   |xs d|	xs d	      j                  ||
      }t        j                  d       }|r(|
du r$|"t        | |      \  }}|j                  ||      }t!        | |
|      }||j                  |      }t#        |||||      }||j                  |      }t%        | ||      }||j                  |      }|!||j                  t'        |||||            }| t(        j*                  u r"| |rt-        ||||	      j/                         |fS |j/                         |fS )zZFunction to use the chart's type, data columns and indices to figure out the chart's spec.r   NT)ensure_copyrA   )r'   r)   r*   r+   )r8   r:   r;   r@   )datamarkwidthheight)xyz5.0.0F)xOffsetyOffsetopacity)rY   )size)tooltip)altairr   convert_anything_to_pandas_df_parse_x_column_parse_y_columns_parse_generic_columnr6   rW   !_last_index_for_melted_dataframes
_prep_data_get_axis_encodingsChartencoder   is_altair_version_less_than_get_offset_encoding_get_opacity_encoding_get_color_encoding_get_size_encoding_get_tooltip_encodingr=   rL   _add_improved_hover_tooltipsinteractive)
chart_typerg   x_from_usery_from_userx_axis_labely_axis_labelcolor_from_usersize_from_userri   rj   rb   altdfr'   r)   r*   color_valuer+   
size_valueadd_rows_metadatay_column
x_encoding
y_encodingchartis_altair_version_5_or_greaterx_offsety_offsetopacity_enc	color_encsize_encs                                 r4   generate_chartr      sz    		5	5d	MB 	 r;/H$Rh?M 5b/ JL+3BGK ( &&y14R8 !*(&	
" 9C
Hm\;95B(L+ 1

J
 CIIk*jq{	
 f

   
 *3)N)Nw)W%W" &%5.\=U1*lK(Xx@ (
E<HK[1 $
K}oI 9- "*k:FH(+  4)  
 	inn$ *+8UF

+-*+ 	+  111r3   c           	        ddl } |j                  dd|gdd      }| j                  dd	      j                   |j                  | |j
                  d
       |j
                  d                  j                  |      } |j                  | |      j                  d      j                  |xs d|xs d      }t        |j                  |      S )z7Adds improved hover tooltips to an existing line chart.r   NTpointeroverF
pointerout)nearestonfieldsemptyclearA   )filledrq      ro   stroke)
symbolType)ri   rj   )rs   selection_point
mark_pointr|   	conditionrW   
add_paramslayerconfigure_legend
propertiesr   
LayerChart)r   r'   ri   rj   r   r   pointslayer_charts           r4   r   r     s    
  "c!!zG 	2.	gysyy|YSYYq\J	K	G	  			% 		X		.	*1;Q 
 

  ,,r3   c                   ddl }t        |j                  t        j                  |             }t        |j                  |j                        r~t        |d      }|j                  d      }t        |d      }||t        d      |j                  |z   }|j                  |z   |z   } |j                  |||      |_        |d	z
  |_        t        |fi |j                  ^}}	||fS )
zPrepares the data for add_rows on our built-in charts.

    This includes aspects like conversion of the data to Pandas DataFrame,
    changes to the index, and melting the data if needed.
    r   NstepT)dropstopz+'RangeIndex' object has no attribute 'step')startr   r   r   )pandasr   	DataFramer   rt   
isinstancerU   
RangeIndex_get_pandas_index_attrreset_indexr   r:   ry   r;   )
rg   r   pdr   old_stepold_stopr   r   out_data_s
             r4   prep_chart_data_for_add_rowsr   %  s     	bllNHHN	OB "((BMM*)"f5 ^^^&)"f5x/'(UVV!,,x7 ++h6A 2==u4hG'+ax$b>$5$=$=>LHq&&&r3   c                v    ddl m}  ||       }|dv ry|dk(  r| j                  j                  ry|dv ry|d	v ry
y)z
    From an array-like input, infer the correct vega typecode
    ('ordinal', 'nominal', 'quantitative', or 'temporal')

    Parameters
    ----------
    data: Numpy array or Pandas Series
    r   infer_dtype)floatingzmixed-integer-floatintegerzmixed-integercomplexr   categoricalr   )stringbytesr   booleanmixedunicoder   )datetime
datetime64	timedeltatimedelta64r   timeperiodr   )pandas.api.typesr   catordered)rg   r   typs      r4   _infer_vegalite_typer   I  sa     - d
C
   		$(("2"2 	Q	Q	  
  r3   c                0    t        | j                  |d       S N)getattrrU   )rg   attrs     r4   r   r     s     4::tT**r3   c                    t        | ||      }t        | |||g| }t        ||       t        |||||      \  }}}}t	        |||||      \  }}}|||||fS )zPrepares the data for charting. This is also used in add_rows.

    Returns the prepared dataframe and the new names of the x column (taking the index reset into
    consideration) and y, color, and size columns.
    )_maybe_reset_index_in_place_drop_unused_columns$_maybe_convert_color_column_in_place"_convert_col_names_to_str_in_place_maybe_melt)r   r'   r)   r*   r+   selected_datamelted_datar   s           r4   ry   ry     s     +2xGH )
HlK2?M
 )E 	+xk	 +6xk+'K<
 (L+EEr3   c                r    | j                   j                  dkD  rt        t        | j                   d         S d S )Nr   )rU   rq   r   r   )rg   s    r4   rx   rx     s-     .2ZZ__q-@4$**R.)JdJr3   c                l    |y| |   }|j                   dk(  ryt        |j                  d   t              S )aY  True if the column with the given name stores datetime.date values.

    This function just checks the first value in the given column, so
    it's meaningful only for columns whose values all share the same type.

    Parameters
    ----------
    df : pd.DataFrame
    name : str
        The column name

    Returns
    -------
    bool

    Fr   )rq   r   ilocr   )r   namecolumns      r4   _is_date_columnr     s9    " |XF{{afkk!nd++r3   c                   ddl }ddlm}  |j                  | ||||      }||   }|j                  dk(  r1d ||      v r't        |j                               dkD  rt        d      t        j                  |g |||	      }	|	S )
a_  Converts a wide-format dataframe to a long-format dataframe.

    You can find more info about melting on the Pandas documentation:
    https://pandas.pydata.org/docs/reference/api/pandas.melt.html

    Parameters
    ----------
    df : pd.DataFrame
        The dataframe to melt.
    columns_to_leave_alone : list[str]
        The columns to leave as they are.
    columns_to_melt : list[str]
        The columns to melt.
    new_y_column_name : str
        The name of the new column that will store the values of the melted columns.
    new_color_column_name : str
        The name of column that will store the original column names.

    Returns
    -------
    pd.DataFrame
        The melted dataframe.


    Examples
    --------

    >>> import pandas as pd
    >>> df = pd.DataFrame(
    ...     {
    ...         "a": [1, 2, 3],
    ...         "b": [4, 5, 6],
    ...         "c": [7, 8, 9],
    ...     }
    ... )
    >>> _melt_data(df, ["a"], ["b", "c"], "value", "color")
    >>>    a color  value
    >>> 0  1        b      4
    >>> 1  2        b      5
    >>> 2  3        b      6
    >>> ...

    r   Nr   )id_vars
value_varsvar_name
value_nameobjectr   d   zThe columns used for rendering the chart contain too many values with mixed types. Please select the columns manually via the y parameter.)selected_columns)
r   r   r   meltdtypelenuniquer   r   #fix_arrow_incompatible_column_types)
r   columns_to_leave_alonecolumns_to_meltnew_y_column_namenew_color_column_namer   r   	melted_dfy_seriesfixed_dfs
             r4   
_melt_datar    s    d ,
&"&$I *+H("{8,,!"S(# Y
 	
 AA
#
!
 
H Or3   c                    |dt        |      dkD  rV| j                  j                  t        }n| j                  j                  }|| j                  _        | j	                  d       |S )Nr   T)inplace)r   rU   r   r\   r   )r   r'   r)   s      r4   r   r   .  sV     C.288== 3H xx}}H 
t$Or3   c                    t               }g }|D ],  }|||v r|j                  |       |j                  |       . | |   S )zEReturns a subset of df, selecting only column_names that aren't None.)setaddappend)r   column_namesseenkeeprk   s        r4   r   r   ?  sM     5DD99A  d8Or3   c                    |t        | |         dk(  ry| |   j                  d   }t        |      ryt        |      r*| |   j	                  t
              | j                  dd|f<   yy)z=If needed, convert color column to a format Vega understands.Nr   )r   iatr   r   mapr   loc)r   r*   first_color_datums      r4   r   r   T  sn    s2l#349<(,,Q/*+	.	/"$\"2"6"6|"Dq, 	r3   c                0   ddl }t        | j                        }|D cg c]  }t        |       }} |j                  |      | _        |dn
t        |      |D cg c]  }t        |       c}|dn
t        |      |dfS t        |      fS c c}w c c}w )zLConverts column names to strings, since Vega-Lite does not accept ints, etc.r   N)r   listr;   r7   Index)	r   r'   r)   r*   r+   r   r	  cstr_column_namess	            r4   r   r   g  s     

#L(451A5*+BJ  c(m&'AQ'$#l*;#	  *-[)9	  6
 	(s   BBc                ^    t        |t              r|| j                  v r|}d }||fS d }|}||fS r   )r   r7   r;   )r   column_or_valuecolumn_namerW   s       r4   rw   rw   }  sG     /3'Orzz,I%
  r3   c                    |y t        |t              r|| j                  vrt        | |      |S t	        d| dt        |       d      )Nz^x parameter should be a column name (str) or None to use the  dataframe's index. Value given: z (type ))r   r7   r;   StreamlitColumnNotFoundErrorr   type)r   r   s     r4   ru   ru     sd    	K	%bjj(.r;?? $00;} =+&'q*
 	
r3   c                :   g }|t        | j                        }n?t        |t              r|g}n+t	        j
                  |      D cg c]  }t        |       }}|D ]  }|| j                  vst        | |       ||v r|r||vr|j                  |       |S c c}w r   )r  r;   r   r7   r   convert_anything_to_listr  remove)r   r   r'   r)   cols        r4   rv   rv     s    
  "MRZZ(	K	%$ !/ G G T
 TCH T 	 
 bjj .r377 
 = +9TX&
s   Bc                &   dd l } |j                         } |j                         }||n|j                  j                  }| t
        j                  u r |j                  |      }||fS | t
        j                  u r |j                  |      }||fS )Nr   )field)rs   XOffsetYOffsetutils	Undefinedr=   rJ   rK   )r   r*   r   r   r   _color_columns         r4   r~   r~     s    
 s{{}Hs{{}H %0cii6I6I  Y+++3;;]3 X 
y//	/3;;]3Xr3   c                    dd l }|r%| t        j                  k(  r |j                  d      S |r|dk(  r |j                  d      S y )Nr   gffffff?r"   )rs   r=   rI   OpacityValue)r   rb   r*   r   s       r4   r   r     sL    
  
inn4s$$ *s$$r3   c                ~    dd l }ddlm} | || |         r |j                  d|      S  |j                  |      S )Nr   )is_integer_dtyper   )tickMinStepgridr-  )rs   r   r+  Axis)r   r  r-  r   r+  s        r4   _get_axis_configr0    s@    1#3B{O#D sxxAD11388r3   c                    t        |      dk(  rd}nHt        |      dk(  r|d   }n4|2t        }t        }|g}|r|j                  |       t	        | ||||      } | |fS )zGIf multiple columns are set for y, melt the dataframe into long format.r   Nr   )r   r   r   r   r   )r   r]   r^   r  r  )r   r'   r)   r*   r+   r   r   s          r4   r   r     s~     =Q	]	q	  #		(0"*"))+6#9)&".
 x%%r3   c	                    |t         j                  k(  r!t        | ||||      }	t        | ||||      }
|	}n t        | ||||      }	t        | ||||      }
|
}t	        ||       |	|
fS r   )r=   rK   _get_x_encoding_get_y_encoding_update_encoding_with_stack)r   r   r'   r   r   r   r   r   rb   r   r   stack_encodings               r4   rz   rz     s     Y---$+|Z

 %+|Z

 $$+|Z

 %+|Z

 $  ~6z!!r3   c                    dd l }|	t        }d}n|t        k(  r|}d}n	|}|d}n|}||}|t        j                  k(  rdnd} |j
                  ||t        | ||       |j                         t        | ||            S )Nr    TFr.  )titler  scaleaxis)	rs   r`   r\   r=   rK   X_get_x_encoding_typeScaler0  )	r   r'   r   r   r   r   x_fieldx_titler-  s	            r4   r3  r3  3  s      ,	1	1  
 GG  !9!994uD355!"j(;ciikb(6 r3   c                    dd l }|	t        }d}n|t        k(  r|}d}n	|}|d}n|}||}|t        j                  k(  rdnd} |j
                  ||t        | ||       |j                         t        | ||            S )Nr   r8  FTr.  )r"  r9  r  r:  r;  )	rs   r`   r]   r=   rK   Y_get_y_encoding_typer>  r0  )	r   r   r   r   r   r   y_fieldy_titler-  s	            r4   r4  r4  c  s      ,	*	*  
 GG  )":"::5D355!"j(;ciikb(6 r3   c                "    | y | dk(  rd} | |d<   y )Nr"   Frb   r2   )rb   encodings     r4   r5  r5    s#     }	)	HWr3   c                >   dd l }|d g dfv}|rNt        t        t        |            rDt	        |      dk7  rt        |g|       |j                  t        t        t        |                  S t        |t        t        f      rt        t        t           |      }t	        |      t	        |      k7  rt        ||      t	        |      dk(  r, |j                  t        t        t        |d                     S  |j                  ||n|j                  j                   |j                  |D cg c]  }t        |       c}      t         dd      S t#        | |      ||t$        k(  rd}	nt'        | |         }	 |j                  |t         |	      }
|t$        k(  rd|
d	<   |
S t	        | |         rat        | |   j(                  d         rF| |   j+                         D cg c]  }t        |       }} |j                  |      |
d
<   d |
d<   |
S 	 |
S y c c}w c c}w )Nr   r2   r   )ranger    )r"  r:  legendr  r9  )r"  rK  r  r9  r:  rK  )rs   r   r   r   r   StreamlitColorLengthError
ColorValuer   r   r  tupler   r   r%  r&  r>  rS   StreamlitInvalidColorErrorr^   r   r  r   )r   r   r*   r)   r   r   has_color_valuecolor_valuesr  column_typer   color_ranges               r4   r   r     s$    !$B7O c;/0=!Q&/}MM!3>>,tC/E"FGG dE]3
5 1;?L< C$66/mLL< A%%s~~l4[^3L&MNN syy#/ ',,##))L*QLq<?L*QR1"  )_==		! 44#K.r,/?@KCII'=K
	
 44 "%Ig$  L!"}R5E5I5I!5L'M46|4D4K4K4MN4Mq<?4MKN!*!=Ig #'Ih  Y +R: Os   +H Hc                F   dd l }| t        j                  k(  rm| |j                  |t              S t        |t        t        f      r |j                  |      S | |j                  d      S t        dt        |             ||t        d| j                   d      y )Nr   )rK  r   z&This does not look like a valid size: zChart type z: does not support size argument. This should never happen!)rs   r=   rM   SizerT   r   floatint	SizeValuer   reprr   r   )r   r+   r   r   s       r4   r   r     s    
 Y&&&"388, 
 
UCL1 3==,, 3==%%'8j9I8JK  
	 J$:*//* +( (
 	

 r3   c                f   dd l }g }| t        k(  r(|j                   |j                  | t                     n!|j                   |j                  |              |t
        k(  r)|j                   |j                  |t        d             n!|j                   |j                  |             |r`t        |dd      S|t        k(  r)|j                   |j                  |t        d             n!|j                   |j                  |             |r!|j                   |j                  |             |S )Nr   )r9  r   )r9  r  rK  Tr   )
rs   r\   r  TooltiprV   r]   rX   r   r^   rZ   )r'   r   r+   r*   r   r   rr   s          r4   r   r     s    G //{s{{83PQR{s{{8,- ((CKK,#	
 	{s{{8,-
 	8T:F44NN 4" NN;3;;|45{s{{;/0Nr3   c                d    |y|t         j                  k(  rt        | |      syt        | |         S )Nr   r   )r=   rJ   r   r   )r   r   r'   s      r4   r=  r=  G  s8      Y+++OB4Q8--r3   c                d    |t         j                  k(  rt        | |      sy|rt        | |         S y)Nr   r   )r=   rK   r   r   )r   r   r   s      r4   rC  rC  U  s3     Y---ob(6S#BxL11r3   c                       e Zd Z fdZ xZS )r  c                    dj                  d t        |j                        D              }d| d| d}t        |   |g|  y )N, c              3  2   K   | ]  }t        |        y wr   r7   .0r  s     r4   	<genexpr>z8StreamlitColumnNotFoundError.__init__.<locals>.<genexpr>d  s     %G6Fc!f6F   z$Data does not have a column named `"z"`. Available columns are ``joinr  r;   super__init__)selfr   col_nameargsavailable_columnsmessage	__class__s         r4   rk  z%StreamlitColumnNotFoundError.__init__c  sS     II%Gd2::6F%GG28* =&&7%8; 	 	(4(r3   r-   r.   r/   rk  __classcell__rq  s   @r4   r  r  b      ) )r3   r  c                       e Zd Z fdZ xZS )rO  c                    dj                  d t        |j                        D               d| d}t        |   |g|  y )Nr`  c              3  2   K   | ]  }t        |        y wr   rb  rc  s     r4   re  z6StreamlitInvalidColorError.__init__.<locals>.<genexpr>n  s     3"2Q#a&"2rf  z2
This does not look like a valid color argument: `a5  `.

The color argument can be:

* A hex string like "#ffaa00" or "#ffaa0088".
* An RGB or RGBA tuple with the red, green, blue, and alpha
  components specified as ints from 0 to 255 or floats from 0.0 to
  1.0.
* The name of a column.
* Or a list of colors, matching the number of y columns to draw.
        rh  )rl  r   r   rn  rp  rq  s        r4   rk  z#StreamlitInvalidColorError.__init__m  sJ    		3$rzz"23322A1B 
C	 	(4(r3   rr  rt  s   @r4   rO  rO  l  s    ) )r3   rO  c                       e Zd Z fdZ xZS )rL  c                8    d| d| d}t        |   |g|  y )NzThe list of colors `zB` must have the same length as the list of columns to be colored `z`.)rj  rk  )rl  rQ  r)   rn  rp  rq  s        r4   rk  z"StreamlitColorLengthError.__init__  s4    "<. 1b" 	
 	(4(r3   rr  rt  s   @r4   rL  rL  ~  ru  r3   rL  )rb   bool | ChartStackType | NonerA   r&   rc   r7   )	NNNNNNNNN)r   r=   rg   zData | Noner   r&   r   str | Sequence[str] | Noner   r&   r   r&   r    str | Color | list[Color] | Noner   str | float | Noneri   
int | Nonerj   r  rb   r{  returnz2tuple[alt.Chart | alt.LayerChart, AddRowsMetadata])
r   z	alt.Chartr'   r7   ri   r  rj   r  r  zalt.LayerChart)rg   r   r   r6   r  ztuple[Data, AddRowsMetadata])rg   zpd.Series[Any]r  r   )rg   zpd.DataFrame | pd.Seriesr   r7   r  z
Any | None)r   pd.DataFramer'   r&   r)   r(   r*   r&   r+   r&   r  zCtuple[pd.DataFrame, str | None, str | None, str | None, str | None])rg   r  r  r9   )r   r  r   r&   r  bool)r   r  r   r(   r   zlist[str] | Noner   r7   r   r7   r  r  )r   r  r'   r&   r)   r(   r  r&   )r   r  r	  r&   r  r  )r   r  r*   r&   )r   r  r'   r&   r)   r(   r*   r&   r+   r&   r  z4tuple[str | None, list[str], str | None, str | None])r   r  r  r   r  ztuple[str | None, Any])r   r  r   r&   r  r&   )r   r  r   r|  r'   r&   r  r(   )r   r=   r*   r&   r  ztuple[alt.XOffset, alt.YOffset])r   r=   rb   r{  r*   r&   r  zalt.OpacityValue | None)r   r  r  r&   r-  r  r  zalt.Axis)r   r  r'   r&   r)   r(   r*   r&   r+   r&   r  z+tuple[pd.DataFrame, str | None, str | None])r   r  r   r=   r'   r&   r   r&   r   r&   r   r|  r   r&   r   r&   rb   r{  r  ztuple[alt.X, alt.Y])r   r  r'   r&   r   r|  r   r&   r   r=   r  zalt.X)r   r  r   r&   r   r|  r   r&   r   r=   r  zalt.Y)rb   r{  rG  zalt.X | alt.Yr  None)r   r  r   zColor | Noner*   r&   r)   r(   r   r}  r  !alt.Color | alt.ColorValue | None)r   r=   r+   r&   r   r~  r  zalt.Size | alt.SizeValue | None)r'   r7   r   r7   r+   r&   r*   r&   r   r  r  zlist[alt.Tooltip])r   r  r   r=   r'   r&   r  r   )r   r  r   r=   r   r&   r  r   )Yr0   
__future__r   collections.abcr   r   r   dataclassesr   r   r   enumr	   typingr
   r   r   r   r   r   typing_extensionsr   	streamlitr   r   !streamlit.elements.lib.color_utilr   r   r   r   r   streamlit.errorsr   r   rs   r   r   r   streamlit.dataframe_utilr   r   r1   r#   r%   r6   r=   rS   rT   rV   rX   rZ   r[   r\   r]   r^   r`   rd   r   r   r   r   r   ry   rx   r   r  r   r   r   r   rw   ru   rv   r~   r   r0  r   rz   r3  r4  r5  r   r   r   r=  rC  r  rO  rL  r2   r3   r4   <module>r     s   2 " : : !    ( /  :-!"RSi S#$DE	 Ei    B B& 23a8 T  T03qHU u U (/ u . '  '$+ E + 5 E 4&CFX&X e X58JJ u J#=@R#R 5 R $46H#H 5 H
'
2<
IL
 #.2##8<)-*.22
2 2 ,	2
 2 2 62 '2 2 2 (2 82D - - # -,6 -@J - -F!'
!'&!' "!'H9
99x+
"+
+ +)F)F)F )F 	)F
 )F I)FXK
KK,6RR%R &R 	R
 R Rj *;D"*&  	
  :,

'*


$+  	: %,'  	$	&&& & 	&
 & 1&D!"!"!" !" 	!"
 !" ,!" !" !" (!" !"H--- ,- 	-
 - -`--- ,- 	-
 - -`
'

 

OOO O 	O
 6O 'Od # %	@222 2 	2
 12 2j.."+.7A..

"+
7A

)#8 ))!6 )$) 5 )r3   