
    .i                       d dl mZ d dlmZ d dlmZmZ ddl	m
Z
mZmZ ddl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Zd dlmZmZmZ d dlmc mZ  d	Z! e"eeeee
      Zg dg dz   g dz   g dz   Z#g dZ$g dZ%g dZ&e#e$z   e%z   e&z   Z'ejP                  ejR                  ejT                  ejV                  ejX                  ejZ                  gZ.e.ej^                  ej`                  ejb                  gz  Z. G d de2      Z3 e3       Z4[3da5d Z6d Z7 edg d      Z8 edg d      Z9d Z:d Z;de jx                  de=de>fdZ?d e j                  de j                  fd!ZAde=fd"ZBd# ZCd$ ZDd% ZEd& ZFd' ZGd( ZHd) ZId* ZJd+ ZKd, ZLd- ZMd. ZNd/ ZOd0 ZPd1 ZQd2 ZRd3 ZSd4 ZTd5 ZUd6 ZVd7 ZWd8 ZXd9 ZYdEd:ZZd; Z[d< Z\de jx                  ddfd=Z]d> Z^d? Z_d@ Z`dA ZadB ZbdEdCZcdD Zdy)F    N)
namedtupleOrderedDict   )IdentityMapConstantRange)olslowessrolling	expandingewm)ColorscaleValidator)qualitative
sequential)make_subplots_set_trace_grid_reference_subplot_type_for_trace_typepx_no_color_constant)r
   r   r   r   r	   )basexyzabcrthetasizex_startx_end)
hover_nametextnamesvaluesparents
wide_cross)idserror_xerror_x_minuserror_yerror_y_minuserror_z)error_z_minuslatlon	locationsanimation_group)
dimensionscustom_data
hover_datapathwide_variable)animation_frame	facet_row	facet_col
line_group)colorsymbol	line_dashpattern_shapec                        e Zd Zg dZd Zd Zy)
PxDefaultstemplatewidthheightcolor_discrete_sequencecolor_discrete_mapcolor_continuous_scalesymbol_sequence
symbol_mapline_dash_sequenceline_dash_mappattern_shape_sequencepattern_shape_mapsize_maxcategory_orderslabelsc                 $    | j                          y N)resetselfs    Q/opt/house_gps_flutter/.venv/lib/python3.12/site-packages/plotly/express/_core.py__init__zPxDefaults.__init__I   s    

    c                     d | _         d | _        d | _        d | _        i | _        d | _        d | _        i | _        d | _        i | _	        d | _
        i | _        d| _        i | _        i | _        y )N   rA   rT   s    rV   rS   zPxDefaults.resetL   st    
'+$"$&*##"&&*#!#!rX   N)__name__
__module____qualname__	__slots__rW   rS    rX   rV   r@   r@   6   s    I$rX   r@   c                     | a y)z
    Arguments:
        token: A Mapbox token to be used in `plotly.express.scatter_mapbox` and         `plotly.express.line_mapbox` figures. See         https://docs.mapbox.com/help/how-mapbox-works/access-tokens/ for more details
    N)MAPBOX_TOKEN)tokens    rV   set_mapbox_access_tokenrc   e   s	     LrX   c                     | j                   S )a  
    Extracts fit statistics for trendlines (when applied to figures generated with
    the `trendline` argument set to `"ols"`).

    Arguments:
        fig: the output of a `plotly.express` charting call
    Returns:
        A `pandas.DataFrame` with a column "px_fit_results" containing the `statsmodels`
        results objects, along with columns identifying the subset of the data the
        trendline was fit on.
    )_px_trendlines)figs    rV   get_trendline_resultsrg   p   s     rX   Mapping)show_in_trace_namegrouperval_mapsequenceupdatervariablefacet	TraceSpecconstructorattrstrace_patchmarginalc                 6    	 | d   |   S # t         $ r |cY S w xY w)NrP   )	Exception)argscolumns     rV   	get_labelrz      s*    H~f%% s   
 c                     | d   j                         D ci c]  \  }}||
 }}}	 ||   S c c}}w # t        $ r |cY S w xY w)zInvert mapping.
    Find key corresponding to value column in dict args["labels"].
    Returns `column` if the value does not exist.
    rP   )itemsrw   )rx   ry   keyvaluereversed_labelss        rV   invert_labelr      sX    
 7;8n6J6J6LMlsEuczMOMv&& N  s   -3 A Adfcol_namereturnc                     t         j                  j                  | j                         x}      r||   j                  j
                  dv S | j                  |      j                  j                         S )Nifc)nwdependenciesis_pandas_like_dataframe	to_nativedtypekind
get_column
is_numeric)r   r   	df_natives      rV   _is_continuousr      s[    	//R\\^0K	L "((--66=="((3355rX   sc                    | j                   }|t        j                  k(  r| j                  j	                  d      dz  S |t        j
                  k(  r|j                  dv r| j                  j	                  d      dz  S |j                  dk(  r| j                  j	                  d      dz  S |j                  dk(  r| j                  j	                  d      dz  S d}t        |      d	| }t        |      )
Nms  )r   r   usi@B nsi ʚ;z%Unexpected dtype, please report a bugzExpected Date or Datetime, got )	r   r   Datedt	timestampDatetime	time_unit
ValueError	TypeError)r   r   msgs      rV   _to_unix_epoch_secondsr      s    GGEtt~~d#e++??k)44>>$'%//__$44>>$')33__$44>>$'-779CS/!/w7nrX   c                     d}	 t        j                  | |      }||D ch c]  }| | 
 c}vr|S |dz  }|dkD  rd| d| d}t        |      Nc c}w )zWraps of Narwhals generate_temporary_column_name to generate a token
    which is guaranteed to not be in columns, nor in [col + token for col in columns]
    r   )columnsr   d   zKInternal Error: Plotly was not able to generate a column name with n_bytes=z and not in zo.
Please report this to https://github.com/plotly/plotly.py/issues/new and we will try to replicate and fix it.)r   generate_temporary_column_nameAssertionError)n_bytesr   counterrb   r   r   s         rV   _generate_temporary_column_namer      s     G
11'7K 81A3ug88L1S=*L	 2((  !%%# 
 9s   Ac                    t        | |      x}}d| v r|dk(  s"|dk(  rd| v r| d   dk(  s|dk(  rd| v r| d   dk(  r| d   xs d}|dk7  r|d	|}nd}d
| v r]| d
   X|dk(  r| d
   }nM| d
   }|dk(  r"|dk(  rdd	|}n6|dk(  r|d	|}n)|d|}n!|dk(  rdd|}n|dk(  rdd|}n|d	|}d| v r| d   |d| d   d}|S )Nhistfuncr   r   orientationhr   vcountz of histnormsumprobabilityfractionpercentz weighted by z of sum of barnormz (normalized as ))rz   )rx   ry   roleoriginal_labellabelr   r   s          rV   get_decorated_labelr      s2   &tV44NUT	CKMT1d=6IS6PCKMT1d=6IS6P
#.ww"*E2EE$z"2">Z(
+u$=0.8% @!Y..6 >7? P.1;UCE*1:EBE*2E:Ei!</4d9oFELrX   c           
         dk(  sdk(  rt        d|    i dgd d       S dk(  sdk(  rCdk(  rd	nd
}t        d||    i t        dd      D cg c]  }| c}d dk(  rd      S d      S j                  d      ^}}dk(  rd}dk(  rd}d}dv rd}d}| |dz      dk(  rt               }n| |dz      j	                         }t        d| |   || |dz      fdd       S c c}w )Nr:   r7   F c                     |S rR   r_   tracer   s     rV   <lambda>zmake_mapping.<locals>.<lambda>      a rX   )ri   rj   rk   rl   rn   rm   ro   r8   r9   r   r   r   r   c                     |S rR   r_   r   s     rV   r   zmake_mapping.<locals>.<lambda>  r   rX   rowcol)ri   rn   rj   rk   rl   rm   ro   .r;   color_discretedashr=   )patternshaper>   _mapidentityT	_sequencec                 T    | j                  dj                  gz         |ii      S )Nr   )updatejoin)r   r   other_variablesparentrn   s     rV   r   zmake_mapping.<locals>.<lambda>'  s-    chhzO;<a@A"
 rX   )rh   rangesplitr   copy)	rx   rn   letterivprefixarg_namerk   r   r   s	    `     @@rV   make_mappingr      sd   <8/@#@$NT'
 	
 ;(k"9 K/S$N!&q$0Aa0'#{2%
 	
 9>
 	
 ,4>>#+>(VXGH7"6''"!Gf+-w'(--/Xg+,
 
 
' 1s   	C.c                 J   | d   }d| v r-| d   r(t        j                  ||j                  d      gd      }|j                  j	                         xs i }d}d}|j
                  D 
]  }	| |	   }
t        | |
|	      }|	dk(  r%|j                  D cg c]  }|
r||
v r|j                  t        j                  k7  st        ||      rn|j                  t        j                  k7  s>|
||
v s8t        j                  |j                  |      j                               | d	   k  r||j                  |      f }}|D cg c]  \  }}t!        t#        | |      |
       c}}|d<   |j                  t        j$                  k(  s|d   D ]  }t!        d      |d<    d|d<   d|d<   A|
	|	dk(  r?d|vrt!               |d<   |j                  |
      |d   d<   d|d   d<   ||d   d<   d||<   |	dk(  r&|j                  t        j&                  k(  sd|d<   |	dk(  r&|j                  t        j&                  k(  sd|d<   |	dk(  r| d   s| d   st)        |j+                  t        j,                  | d   | d               j/                               dkD  s9|j1                  | d   d      }|j                  | d         }|j                  | d         }|j2                  t         j4                  k(  s|j2                  t         j6                  k(  rt9        |      }n>|j2                  j;                         s$	 |j=                  t        j>                               }|j2                  j;                         s$	 |j=                  t        j>                               }|jC                         |jC                         z   }|jE                  |      j                  | d         |d<   |d   j2                  t         j4                  k(  rI|d   j2                  jF                  0|d   jH                  jK                  d      jM                         |d<   n|d   jM                         |d<   tN        |
   } || d!   |j                  | d         |jM                         |jM                         | d   | d   |jM                               \  }}}t)        |      t)        |d         k(  sJ d"       ||d<   d|t#        | | d         <   d#|t#        | | d         <   |	jQ                  d$      r<|	dd% }|	jS                  d&      rd'nd(}||vri ||<   |j                  |
      ||   |<   |	d)k(  r9t)        |
      d*kD  s|j+                  t        j,                  |
            |d+<   7|	d,k(  r\|j                  t        j&                  t        jT                  t        jV                  fvsy|j                  |
      |d-<   |dk(  sd.}|	d/k(  r8|j                  t        j&                  t        jT                  t        jV                  fvstY        |
t               }| j[                  d)      xs g }|
D ]y  }|r|
|   s|| j[                  d      | j[                  d      | j[                  d0      | j[                  d1      fv rP	 | d)   j]                  |      }t        | |d      }d2|z  ||<   { t)        |      d*kD  s |j*                  t         je                  |      D cg c]  }t        j,                  |       c} |d+<   |	d3k(  r|j                  t        jf                  t        jh                  t        jj                  fv r |j                  |
      |d0<   d4|d5<   d6||<   7|j                  t        jl                  t        jn                  t        jp                  t        jr                  t        jt                  fv rd|vrt!               |d<   | j[                  d7      r&|j                  |
      |d   d8<   d4|d   d5<   d9||<   g |d   d8<   | d:   | d:   j	                         }ni }|j                  |
      jw                         D ]P  }|j[                  |      #| d;   t)        |      t)        | d;         z     ||<   |d   d8   jc                  ||          R od} |j                  t        j                  t        j                  fv rd<} | |vrt!               || <   |j                  |
      ||    d3<   d4||    d5<   d=| z  ||<   |	d>k(  r|j                  |
      |d?<   |	d@k(  r|j                  |
      ||	<   dA||<   	|	dBk(  r$|j                  |
      ||	<   |dBk(  rdCn|}!dD||!<   	=|	dEk(  r$|j                  |
      ||	<   |dEk(  rdFn|}!dG||!<   	f|	d?k(  r$|j                  |
      ||	<   |d?k(  rdHn|}!dI||!<   	|	dJk(  r|j                  t        jl                  t        jn                  t        jp                  t        jr                  t        jt                  fv r$|j                  |
      |dK<   |dJk(  rdLn|}!dM||!<   
|j                  |
      ||	<   
'|j                  |
      ||	<   dN|	z  ||<   
E|j                  t        j&                  k(  r|	dOv s5|j                  t        jT                  t        jV                  fv s
|	d0k(  s
|
dN|	z  ||<   
 |j                  t        j                  t        j                  fvrty        |      }"| d/   rtY        | d/   t               rt|j{                         D ]a  \  }#}$t}        | |#      }%|%| d/   v s| d/   |%   d*   }&|&r*tY        |&t~              s8|$j                  dPdQ|&z        |"|#<   Q|"j                  |#      }'c |"j{                         D #$cg c]  \  }#}$|#dRz   |$z    }(}#}$|dSj                  |(      z   |dT<   |dTxx   dUz  cc<   ||fS c c}w c c}}w # t@        $ r tA        d| d   z        w xY w# t@        $ r tA        d       w xY w# t@        t^        t`        f$ r  t)        |      }|jc                  |       Y w xY wc c}w c c}$}#w )Va:  Populates a dict with arguments to update trace

    Parameters
    ----------
    args : dict
        args to be used for the trace
    trace_spec : NamedTuple
        which kind of trace to be used (has constructor, marginal etc.
        attributes)
    trace_data : pandas DataFrame
        data
    mapping_labels : dict
        to be used for hovertemplate
    sizeref : float
        marker sizeref

    Returns
    -------
    trace_patch : dict
        dict to be used to update trace
    fit_results : dict
        fit information to be used for trendlines
    
data_frame
line_closer   verticalhowNr   r2   dimensions_max_cardinality)r   r$   T)matchesaxisz%{x}z%{xaxis.title.text}z%{y}z%{yaxis.title.text}r   markerareasizemodesizerefz%{marker.size}
marginal_xr   
marginal_y	trendliner   r   by
nulls_lastzCould not convert value of 'x' ('%s') into a numeric type. If 'x' contains stringified dates, please convert to a datetime column.z3Could not convert value of 'y' into a numeric type.trendline_optionsz/missing-data-handling failure in trendline codez%{y} <b>(trend)</b>error   minus
arrayminusarrayr3   r   
customdatar!   	hovertextz<b>%{hovertext}</b><br><br>r4   r   r   z%%{customdata[%d]}r;   
coloraxis1	coloraxisz%{z}color_is_continuouscolorsz%{color}rF   rE   linez%%{%s.color}r1   r'   r0   z%{location}r$   r~   z%{value}r%   r   z	%{parent}idz%{id}r#   rP   r   z%{label}z%%{%s}r   r   }z%s}=z<br>hovertemplatez<extra></extra>)Cr   concatheadrt   r   rs   r   r   rr   go	Parcoordsr   Parcatsto_py_scalarr   n_uniquedictrz   Splom	Histogramlenselectr   
drop_nullssortr   r   r   r   r   castFloat64r   is_nullfilter	time_zoner   replace_time_zoneto_numpytrendline_functions
startswithendswithHistogram2dHistogram2dContour
isinstancegetindexAttributeErrorKeyErrorappendfromkeys
ChoroplethChoroplethmapChoroplethmapboxSunburstTreemapIciclePie
Funnelareato_listr   r|   r   strreplacepopr   ))rx   
trace_spec
trace_datamapping_labelsr   r   rt   fit_resultshover_header	attr_name
attr_value
attr_labelnamedimsry   dsorted_trace_datar   r   non_missingtrendline_functiony_outerror_xyarrhover_is_dictcustomdata_colsr   positionattr_label_colr   mappingcat	colorable_labelmapping_labels_copykr   k_args	formatter_hover_liness)                                            rV   make_trace_kwargsrH  .  s   2 L)Bt\ 2YY
JOOA,>?ZP
((--/52KKL%% AB	)_
(z9E
$ '..#);++r||;~bRV?W**bjj8".4:3Er}}T':'C'C'EF89: z,,T23D  '+)"T6 9T40@)K% %%1$\2 3A $T 2AfI38>458>45#F";.,0FK)0:0E0Ej0QH%f-4:H%j13:H%i0-=z*l*))R\\9.4N7+l*))R\\9.4N7+k)IS	"))"&&cDI*FGRRT  )349QU(V%)44T#Y?A)44T#Y?Aww"++-BGG1C215WW//1 !rzz| 4A 77--/ !rzz| 4A %&IIK!))+$=">K'8'?'?'L'W'WS	(K$ $C(.."++=',22<<H (,//AA$GPPR $C( ,7s+;+D+D+FC()<Z)H&7I01)44T#Y?



S	S	#,,.84E< u:[-=)>> I> (-K$AGN9T49#=>AVN9T49#=>%%g.$Ra=&/&8&8&Alw;.,.K)-7-B-B:-NH%c*m+z?Q& 1;0A0A"&&BT0UK-l*))LLNN))2 
 0:/D/DZ/PK,#r)'Dl*))LLNN))2 
 %/z4$@M&*hh}&=&CO) (C$ HHSM HHSM HHSM HHV,	#  %8'+M':'@'@'EH *=T3)M9M$:~6!( ?+a/ 5FJ4E4E151OPAbffQiP5L1 g%))MM$$''. 
 (2'<'<Z'HK$/;K,17N:.++KKJJIIFFMM0   {204H-xx 56:D:O:O&;H-h7 >JH-k:5?z2:<H-h7 45A&*+?&@&E&E&GG&(G#-#8#8#D#L#L#N 
QC  '{{3/7/34M/N$'L3t<U7V3W$W0" (1(;BB73<P
Q !)I!--"**bll1KK$*	 315I.6@6K6KJ6WK	*73:FK	*;71?)1KN:.//%/%:%::%FE"k))3)>)>z)JI&-:z*h&)3)>)>z)JI&$.($:
)3v&i')3)>)>z)JI&%/9%<*)4v&e#)3)>)>z)JI&!+u!4*)0v&g%))KKJJIIFFMM.  -7,A,A*,MK)(2g(=W:F-7N6*-7-B-B:-NK	*)3)>)>z)JI&-5	-Az*$$4j9P""r~~r7L7L&MMS  %-5	-Az*CABD bllBJJ%?? *.9*T,-?"F&,,. 	71%dA.T,// $\ 26 :1 =I %i556YYsEIDU5V/2/33A6	7 0C/H/H/JKtq!q3w{KK'3fkk+6N'NO$O$(99$##a)X  * ",!j"&s)!,#   * ", U# ` !+NHE 8'*?';H+22378 QX LsC   B$p":!p'=#p-;#q8q#r
%r-qq #0rrc                 \   t         j                  t        t         j                  t        t         j
                  t        t         j                  t        t         j                  t        t         j                  t        t         j                  t        t         j                  t        t         j                  t        t         j                  t        t         j                   t        t         j"                  t$        t         j&                  t$        i}t(        D ]  }t*        ||<    ||v r ||   | ||       y y rR   )r   	Scatter3dconfigure_3d_axesScatterternaryconfigure_ternary_axesScatterpolarconfigure_polar_axesScatterpolarglBarpolar
Scattermapconfigure_mapr  
DensitymapScattermapboxconfigure_mapboxr  Densitymapbox
Scattergeoconfigure_geor  
cartesiansconfigure_cartesian_axes)rx   rr   rf   ordersconfiguratorsr   s         rV   configure_axesr^  f  s    
'
1
-
/
)
}
-
}
*
-
*
}
}M  43a4m#"k"4f5 $rX   c                 t   d|z   }d|z   }|| v r>| |   r9d|d<   || v rA| |   r<| |   D cg c]  }t        j                  |d       c}|d<   n|| v r| |   r| |   |d<   | |   |v rOd|d<   t        |t        j                  j
                        r|| |      nt        t        || |                  |d	<   y y c c}w )
Nlog_range_logtype
   r   r   categoryordercategoryarray)mathrb  r  r   layoutXAxislistreversed)rx   r   r   r\  log_key	range_keyr   s          rV   set_cartesian_axis_optsrn  |  s    voG6!I$4=Vi6:9oFTXXa_FDM	d	tIYWF|v '_ $		0 4< hvd6l345 	_ 	 Gs   B5c                    t        |j                        }t        |j                  d         }|j                  d      D ]  }t        | |d|        |j	                  d      D ]  }t        | |d|        | d   r|j                  ddd	d |
       | d   j                  j                  j                  |j                  | d   dk(  |       | d   j                  j                  j                  |j                  d|       | d   r|j                  ddd	d |       | d   j                  j                  j                  |j                  | d   dk(  |       | d   j                  j                  j                  |j                  d|       t        | | d   d      }| d   r|j                  |dd       n(t        d|dz         D ]  }|j                  ||d        t        | | d   d      }	| d   r|j                  |	dd       n(t        d|dz         D ]  }
|j                  |	d|
        d| v r| d   r|j                  d       d| v r| d   r|j                  d       dt        |dz         z   }| d   r)t        d|dz   d      D ]  }|j                  |d |        | d   r*t        d|dz   d      D ]  }
|j                  dd |
        y y )Nr   r   r   r   r   r   r   Fr   )showticklabelsshowlineticksr   r   rB   	histogram)showgridr   Tr   )rr  rs  rt  r   r   )rv  r   )
title_textr   r   log_xrb  rc  log_y   )r   rc  r   x2)r   rc  r   )r  	_grid_refselect_yaxesrn  select_xaxesupdate_yaxesrh  yaxisrv  xaxisupdate_xaxesr   r   r&  )rx   rf   r\  nrowsncolsr  r  y_titler   x_titler   	matches_ys               rV   !configure_cartesian_marginal_axesr    s6   Ea !E !!a!( :eS&9: !!a!( :eS&9: L 5$E 	 	
 
""((119d<&8K&GUS
""((119d6L 5$E 	 	
 
""((119d<&8K&GUS
""((119d6 "$S	37GLG:EAI& 	ACSa@	A "$S	37GLG:EAI& 	ACQC@	A $4=e$ $4=e$ c%!)n$ILEAIq) 	DCYTsC	D LEAIq) 	?CT#>	? rX   c                 d   d| v r| d   s	d| v r| d   rt        | ||       y t        | | d   d      }|j                  d      D ]"  }|j                  |       t	        | |d|       $ t        | | d   d      }|j                  d      D ]&  }d	| vr|j                  |       t	        | |d|       ( d
| v r| d
   r|j                  d       d| v r| d   r|j                  d       d	| v r|j                  d       d| v r.| d   dk(  r|j                  d       y |j                  d       y y )Nr   r   r   r   rp  rw  r   rq  is_timelinerx  rb  ry  rz  dateecdfmoder   r   tozero)	rangemode)r  r   r~  r   rn  r  r  r  )rx   rf   r\  r  r  r  r  s          rV   r[  r[    sf   l!3l!3)$V< "$S	37G!!a!( :(eS&9:
 "$S	37G!!a!( :$LLGL,eS&9: $4=e$ $4=e$f%T#%x0x0	 rX   c                     |j                  t        t        | | d               t        t        | | d               t        t        | | d                      y )Nr   r  r   r   )aaxisbaxiscaxis)update_ternariesr  rz   rx   rf   r\  s      rV   rM  rM    sN    id3i89id3i89id3i89  rX   c                 ~   t        t        | d   | d         t                     }dD ]#  \  }}| |   |v sd||   d<   || |      ||   d<   % |d	   }| d
   r5d|d<   | d   r8| d   D cg c]  }t        j                  |d       c}|d<   n| d   r| d   |d<   | d   r| d   |d<   |j                  |       y c c}w )N	directionstart_angle)r  rotation)angularaxis
radialaxis))r   r  )r   r  r   re  rf  r  log_rrb  rc  range_rrd  r   range_thetasector)r  rg  rb  update_polars)rx   rf   r\  patchvarr   r  r   s           rV   rO  rO    s    4#4tM?RS6E
 E =	T9+2E$K(+1$s)+<E$K(=
 |$JG}"
6	?<@O"Lq488Ar?"LJw	?"&y/JwM}-he #Ms   *B:c                    t        t        t        | | d               t        t        | | d               t        t        | | d                     }dD ]x  }||dz      }| d|z      r;d	|d
<   | d|z      rA| d|z      D cg c]  }t        j                  |d       c}|d<   n| d|z      r| d|z      |d<   | |   |v sid|d<   || |      |d<   z |j	                  |       y c c}w )Nr   r  r   r   )r  r  zaxis)r   r   r   r   r`  rb  rc  ra  rd  r   r   re  rf  )r  rz   rg  rb  update_scenes)rx   rf   r\  r  r   r   r   s          rV   rK  rK    s   id3i89id3i89id3i89E " 9Vf_%  DLHv%&:>x&?P:Q RQ!R RWHv%& $X%6 7W<6!$+D!$*4<$8D!9 e !Ss    C#c                     | d   }|sCd| v r?d| v r;t        | d   | d      j                         | d   | d      j                               }|j                  t        || d   | d          y )	Ncenterr.   r/   r   r.   r/   zoommapbox_style)accesstokenr  r  style)r  meanupdate_mapboxesra   rx   rf   r\  r  s       rV   rV  rV  -  s    (^Fetm\"4;/446\"4;/446
  &\>"	  rX   c                     | d   }|sCd| v r?d| v r;t        | d   | d      j                         | d   | d      j                               }|j                  || d   | d          y )	Nr  r.   r/   r   r  r  	map_style)r  r  r  )r  r  update_mapsr  s       rV   rS  rS  <  s}    (^Fetm\"4;/446\"4;/446
 OO&\;  rX   c           
      b    |j                  | d   | d   | d   | d   t        | d                y )Nr  scope	fitboundsbasemap_visible
projectionry  )r  r  r  visibler  )update_geosr  r  s      rV   rY  rY  J  s?    OOH~7m{#&'T,/0  rX   c                    fd}d| v r| d   rt        |j                        dkD  rd  |d      gdddd g |d      gd	ddgd
dddddddddd	g|j                  _        ddd
dt	        | | d         dz   idddddd|j                  D cg c]%  }|j
                  g |d      g|j
                  dd' c}d	g|j                  _        y y y y c c}w )Nc                 @    | t         j                  k7  ddd| dddS )N)durationredraw	immediateTlinear)r  easing)framemodefromcurrent
transition)r   Scatter)r  rr   s    rV   
frame_argsz0configure_animation_controls.<locals>.frame_argsU  s,    "*kRZZ6OP'/8D	
 	
rX   r7   r   i  z&#9654;animate)rx   r   methodr   z&#9724;leftrd  F   )r   tFbuttonsg?righttop)	r  r  pad
showactiverc  r   xanchorr   yanchorprefixr   <   )r   r  g?)	activer  r  currentvaluer  r  r   r   steps)r  framesrh  updatemenusrz   r1  sliders)rx   rr   rf   r  fs    `   rV   configure_animation_controlsr  T  s1   
 D T*;%<SZZSTAT
 "&z# 7!*"+ #'A 7!*"+ $b)#!" )"


4  !id3D.EFL!  b) !ZZ 	 #$&&:a= 9!""+


3 BU%< Js   *Cc                    |t         j                  t         j                  fv ryd| v ru| d   dk(  s2| d   dk(  ret        | d         dkD  rT| j	                  d      dk7  r@| d   ;|t         j                  k(  rt         j
                  }d	|v r|d	= nt         j                  }t        |||d       g}d
D ]u  }d|z   | v s| d|z      sd }t        |dk(  rdnd|dk(  rdnd      }| d|z      dk(  r/t        t         j                  |d|z   gt        d-d|d||      }n| d|z      dk(  r+t        t         j                  |ddgt        |      |      }n|| d|z      dk(  r+t        t         j                  |ddgt        d      |      }nF| d|z      dk(  r;dd d
}t        t         j                  |ddgt        d!d"d!id#d$d%d&||   i'      |      }d"|v sd"| vr?d(|j                  vrt               |j                  d(<   | d)   d$   }	|	|j                  d(   d"<   |j                  |       x | j	                  d*      r0| j	                  d+d,      d,k(  r|j                  t        | |             |S ).Nrender_modewebglautor   r   
line_shapespliner7   r   r   	marginal_r   x1r|  r   y1y2)r  r  ru        ?)opacitybingrouprq   violinr!   r4   )
scalegroupboxT)notchedrugzline-ns-openzline-ew-openzrgba(255,255,255,0)r;   allr   pointsr<   )	fillcolorr   	boxpointsjitterhoveronr   r   rG   r   trendline_scoper   r_   )r   r  rN  r  r  	ScatterglrP  rp   r  r  ViolinBoxrt   r  make_trendline_spec)
rx   rr   rs   rt   resultr   r)  axis_mapsymbolsfirst_default_colors
             rV   make_trace_specr    s   rzz2??33D 7*]#v-\*+d2HH\*h6*+3 bjj( ll K/#M2 //UK>?F  0&4'Dv1E,FJ$md$mdH K&()[8& "!;#78 $ NS6 NX N#	
 kF*+x7& "		!<> $ 7#	
 kF*+u4& "!<> $T 2#	
 kF*+u4 .^D& "!<> $"7%'<="'  ( ('&/:! $
 %7$#6:#9#997;vJ**84&*+C&DQ&G#<O
&&x09MM*%a0&f xx*;W!E!P)$<=MrX   c                     t        |t        j                  k(  rt        j                  nt        j                  dgt	        d      d       }| d   rt	        | d         |j
                  d<   |S )Nr   lines)r  rq   trendline_color_overrider;   r   )rp   r   r  r  r  rt   )rx   rr   r)  s      rV   r  r    sf     bll* LLmg&	J &')-D9S4T)U
v&rX   c                      y)Nr   r_   r   s    rV   	one_groupr    s    rX   c                 v   t         j                  D ]   }|| v s| |   t        t         |      | |<   " | d   =t        j                  j
                  t        j                  j
                  | d<   nd| d<   	 t        j                  | d      | d<   d| v rw| d   Z| d   j                  j                  j                  r7| d   j                  j                  j                  D cg c]  }|d   	 c}| d<   | d   t        j                  | d<   d| v r| d   ||dk(  rd}n |       j                  }t        | d   j                  |d       x}rU|D cg c]:  }t        |d      r,t        |j                   d	      r|j                   j"                  < }}t%        |      r|| d<   | d   5| d   j                  j&                  r| d   j                  j&                  | d<   | d   t(        j*                  | d<   d
| v rv| d
   W| d   j                  j,                  r>| d   j                  j,                  D cg c]  }|j                   j.                   c}| d
<   | d
   rt%        | d
         sg d| d
<   d| v rv| d   W| d   j                  j,                  r>| d   j                  j,                  D cg c]  }|j0                  j2                   c}| d<   | d   rt%        | d         sg d| d<   d| v r| d   a| d   j                  j4                  rH| d   j                  j4                  D 	cg c]"  }	|	j                   j6                  j8                  $ c}	| d<   | d   rt%        | d         sg d| d<   y y y # t        $ r) t        j                  j                  | d         | d<   Y w xY wc c}w c c}w c c}w c c}w c c}	w )NrB   plotlyrG   r   rE   timelinebarr   r;   rH   )circlediamondsquarer   crossrJ   )soliddotr   longdashdashdotlongdashdotrL   )r   /\r   +r   )defaultsr^   getattrpio	templatesdefaultrw   r   rh  Template
colorscaler   Viridisrc  datahasattrr   r;   anycolorwayr   D3scatterr<   r   r   r
  r   r   )
rx   rr   paramr   
trace_typetrace_data_listr*  trace_specific_colorsr$  r
  s
             rV   apply_default_cascader)    s    ## 3D=T%[0!(E2DK3
 J==  ,"}}44D'D@==j)9:Z  4')*2Z ''22== #:.55@@KK.!.D)* ()1-7-?-?D)*
 !D()*2{7Nj("
(]//
")$z*:*?*?T"RRR '6)"z84
 1 17; %%++)% ) ,-6KD23)*2tJ7G7N7N7W7W.2:.>.E.E.N.ND*+)*2.9nnD*+ D !"*tJ/?/D/D/L/L59*5E5J5J5R5R'*1%%'D"# %&c$7H2I.J&SD"#t#$%-$z2B2G2G2O2O15j1A1F1F1N1N*&-!!*D%& ()T:N5O1P*D%&  4'()1d:6F6K6K6O6O484D4I4I4M4M.-0

""((.D)* ,-S)*6
 .LD)*6
 (I  @99--d:.>?Z@. )('*.s0   7M- !N"?N'/N,)N1#'N6-.NNc                 2    | |vr| S t        d| d| d      )Nz.A name conflict was encountered for argument 'z '. A column or index with name 'z' is ambiguous.)	NameError)
field_namereserved_namess     rV   _check_name_not_reservedr.  O  s(    '@JJX
 	
rX   c                 b   | d   }t               }| D ]  }|t        vr|t        v r| |   n| |   g}|#|D ]  }|t        |t              r|j                  |       (t        j                  j                  |      rlt        j                  |d      }|j                  }|sm||j                  v s|||j                  |      k(  j                         }|s|j                  |       |t        j                  |      u s|j                  |j                  |j                           |S )z
    This function builds a list of columns of the data_frame argument used
    as arguments, either as str/int arguments or given as columns
    (pandas series type).
    r   Tseries_only)setall_attrablesarray_attrablesr  r&  addr   r   is_into_seriesfrom_nativer1  r   r   r  maybe_get_index)	rx   r   r-  fieldr#   arg
arg_seriesr   in_dfs	            rV   _get_reserved_col_namesr=  Y  s    L)BUN -%$7Ud5k]= 	-C{C%""3'//4^^CTB
%??BJJ 6'2==+BBGGIE&**84**2..3883G""388,	--* rX   c                 J   | t        |t              st        |t              ry|rt        ||j                        ry	 t	        |       |D ]7  }t        |t              st        |t              r	| || vs* y	 t	        |       9 y# t
        $ r Y yw xY w# t
        $ r Y  yw xY w)zReturns True if arg looks like it's a list of columns or references to columns
    in df_input, and False otherwise (in which case it's assumed to be a single column
    or reference to a column).
    FT)r  r&  int
MultiIndexiterr   )r   r:  
is_pd_likenative_namespacer   s        rV   _is_col_listrD  y  s    
 {jc*jc.Bj&6&A&ABS	  aAs!3!7"2Q     s#   B 8B	BB	B"!B"c                     t        | t              s0t        | t              rt        |       dk(  st        | t              s| yy)zReturns True if x is an iterable which can be transformed into a pandas Series,
    False for the other types of possible values of a `hover_data` dict.
    A tuple of length 2 is a special case corresponding to a (format, data) tuple.
    r{  FT)r  r&  tupler  boolr  s    rV   _isinstance_listlikerH    s7     	1cq% SVq[a9rX   c                 <    | |S || v s||v rd|z   }|| v r
||v r|S )NrF  r_   )r   r   extras      rV   _escape_col_namerK    s:    
g
U!2> g
U!2OrX   c                 *   t        j                  | dd      } t        | t         j                        r| j	                  |      S |t        j
                  || |      S 	 ddl}t        j
                  || |      S # t        $ r d}t        |      w xY w)zVAssuming x is list-like or even an existing Series, returns a new Series named `name`.Tr1  pass_throughNr1  r$   rC  r   <Pandas installation is required if no dataframe is provided.)	r   r7  r  Seriesrename
new_seriespandasImportErrorNotImplementedError)r   r1  rC  pdr   s        rV   to_named_seriesrX    s     	qd>A!RYYxx~		%}}$qCSTT	+==d1rJJ 	+PC%c**	+s   A; ;Bc                 >   | d   }|du}i }i }	g }
t               }|rt        |       n	t               }d| v r;| d   6|st        d      |j                  D ci c]  }||j	                  |       }}d| v xr | d   xr t        | d   t              }|rr| d   D ]j  }t        | d   |         rd| d   |   f| d   |<   t        | d   |   t              s| d   |   df| d   |<   |sM| d   |   d   Y||v s^t        d|z         t        D ]  }|t        vr| j                  |      gn| j                  |      }|2|t        vr|gn0t        t        |            D cg c]  }|d	z   t        |      z    c}}t        t!        ||            D ]*  \  }\  }}t        |      r t        |t#        t%        |                     nd
}|:d}|r?t        ||j&                        r)t)        d| d|j*                   d|j*                   d      t        |t,        t.        f      rat1        |j2                  t        |j2                        n||      }t        |t,              r|j4                  |	|<   n|
j7                  |       nt        |t              st9        |d      sZ|dk(  r|r| d   t        |         d   lt        |      }| d   |   d   }|rBt        |      x}|k7  r2t        d||t        t;        |j=                                     |fz        t?        |||      ||<   n-|st        d|z        ||j                  vrF|r|||fv rd|dt        t;        |j                              d|}|dk(  r|dz  }t        |      |rBt        |      x}|k7  r2t        d||t        t;        |j=                                     |fz        t        |      }t?        |j	                  |      |      ||<   nZ|rt9        |d      r|rd|tA        jB                  |      u rM|jD                  |jD                  |j                  v rd}n|jD                  }tG        |j                  |||g      }nq|jD                  e|jD                  |j                  v rMt?        ||jD                  |      |j	                  |jD                        k(  jI                         r|jD                  }|t1        ||      }|rBt        |      x}|k7  r2t        d||t        t;        |j=                                     |fz        t?        |t        |      |      |t        |      <   |J d       |t        vrt        |      | |<   n%t        | |   t              rnt        |      | |   |<   |dk7  s|jK                  t        |             -  t        |      r t        |t#        t%        |                     nd
}|	 d
dl&}|}|
rZd
dl)}tA        jT                  d|jW                  |      |      } |jY                  |
D ci c]  }|| j[                  |       c}       |jY                  |	D ci c]"  }|tA        jT                  ||	|   g|z  |      $ c}       |rtA        j\                  |      }||fS 	 d
dl&}tA        j^                  |ja                  i       d!      }||fS c c}w c c}w # tN        $ r d}tQ        |      w xY wc c}w c c}w # tN        $ r d }tQ        |      w xY w)"ac  
    After this function runs, the `all_attrables` keys of `args` all contain only
    references to columns of `df_output`. This function handles the extraction of data
    from `args["attrable"]` and column-name-generation as appropriate, and adds the
    data to `df_output` and then replaces `args["attrable"]` with the appropriate
    reference.
    r   Nr2   zjNo data were provided. Please provide data either with the `data_frame` or with the `dimensions` argument.r4   Tr   zIAmbiguous input: values for '%s' appear both in hover_data and data_framerF  r   z
Argument 'z' is a  MultiIndex. = MultiIndex is not supported by plotly express at the moment.__len__zAll arguments should have the same length. The length of hover_data key `%s` is %d, whereas the length of previously-processed arguments %s is %dzString or int arguments are only possible when a DataFrame or an array is provided in the `data_frame` argument. No DataFrame was provided, but argument '%s' is of type str or int.z
Value of 'z?' is not the name of a column in 'data_frame'. Expected one of z but received: r  z6
 To use the index, pass it in directly as `df.index`.zAll arguments should have the same length. The length of column argument `df[%s]` is %d, whereas the length of previously-processed arguments %s is %dr1  zAll arguments should have the same length. The length of argument `%s` is %d, whereas the length of previously-processed arguments %s is %d)r   r1  rC  zData-frame processing failure, likely due to a internal bug. Please report this to https://github.com/plotly/plotly.py/issues/new and we will try to replicate and fix it.r6   rP  __placeholder__rO  z Pandas installation is required.
eager_only)1r2  r=  r   r   r   r  r  rH  rF  r3  r4  r  r   r  r&  	enumeratezipnextrA  r@  r   r[   r   r   r.  r   r~   r  r   rj  keysrX  r   r8  r1  rK  r  r5  rT  rU  rV  numpyrS  aranger   alias	from_dictr7  	DataFrame)!rx   	wide_modevar_name
value_namerB  rC  df_inputdf_provided	df_output	constantsrangeswide_id_varsr-  r   hover_data_is_dictrC  r,  argument_listr   
field_listargumentr9  lengthr   real_argumentreal_lengtherr_msg
actual_lenlen_argrW  r   nprange_seriess!                                    rV   process_args_into_dataframer~    s    %)$6H$&K
 IIF5L6A,T2suN t\ 2 :|  CKBRBRS3h11#66SIS 	 	1	1tL)40  l# 		A#D$6q$9:)-tL/A!/D(E\"1%d<03U;)-l);A)>(E\"1%tL1!4Q7CX _ 		 $ g0
 0 XXj!"*% 	   0 L5:3};M5NO*s"SV+O 	 %.c-.L$M L	0 A %>A)nS4Y#89:RSFHj3C3N3NO w/?/H/H.I'001 2--  (Xu$563+3>>+EC'5" h1*2..Ih'MM(+Hc*'(I2N,.*\*3x=9!<H  #8}H$($6x$@$CM#m2D#D;"O(P !) + #D)9$: ; &	
 
 +:%x1A+Ih' %$6 9>>  X%5%55 X*h1G%G 
  %c$x/?/?*@&A8M  
 $w.#'``G(11s8}!< G$L "&Y^^%5 67"	
 
  #8}H*9 ++H5x+Ih'
 78V#<!h"2D2DX2N&N#==0HMMXEUEU4U'.H'/}}H#3$,,h:8N$
 %MM5 (1A1A A /$,hmm=M!" $,#6#6x}}#E!F "ce!$ (0}}H#7~NH#h-7wFB$L !'3tINN4D/E+FOP  ,;X%5,	#h-( ' (' 0#&x=Z D,d3&)(mZ #_,  X/YL	07g0R 7:)nS4Y012!F	+!
 }}"99V$-

 	DJKX|))(33K	
  &	
  bmm!(+,v5!1 	

 LL+	 l""	+ NN2<<#3E	l""U TX Pr  	+PC%c**	+ L	
   	+4C%c**	+s0   [[.[! 0[;'\ )\ ![8\c           	        ( | D ]h  }|t         v s| |   t        | |   t              rt        | |         | |<   7|dv rt        | |   t              r
| |   g| |<   Xt	        | |         | |<   j | d   du}d}d}|rt
        j                  j                  | d         r0| d   j                  (t        j                  | d   d      | d<   d}nt
        j                  j                  | d         r>t        j                  | d   d      j                         | d<   | d   j                  (d}nJt        t        j                  | d   dd      x}t
        j                        r-|| d<   t        j                  |      d	k(  }| d   j                  (nt        t        j                  | d   dd
      x}t
        j                        r#|j                         | d<   | d   j                  (nt        | d   d      r=t        j                  | d   j!                         d      | d<   | d   j                  (d}nD	 ddl}	 t        j                  |j                  | d               | d<   | d   j                  (d}nd(| d   }
|r|st        j,                  |
      nd}|r|st        j.                  |
      nd}| j1                  d      du }| j1                  d      du }|rdnt3        (| d   ||      }|rdnt3        (| d   ||      }d}d}d}d}t4        j6                  t4        j8                  g}|t4        j:                  k(  xs d| v }|t<        v ri|r|rt?        d      |r|r|rd}|r<t        (|j@                        r&tC        d|jD                   d|jD                   d      t	        (      | d<   |r#t        (|jF                        r(jH                  }nd}|dv s|(v rd}|t4        jJ                  k(  r| j1                  d      xs d}n| j1                  d      xs d}|| d<   d| d<   n||k7  rd}|r| d   n| d   | d<   |r|r| d   (u r(jH                  }|r*t        | d   |jF                        rt	        | d         | d<   |dv s|r|(v rd}|r|rdnd}n|rdnd}d| |rdnd<   d| d<   |s|s|rdnd }|rtM        (d!g       }tM        (|g       }|r|r,t        j                  | d   jO                         d      | d<   n| jQ                         D ch c]  }t        |t              s|(v s| }}| D ].  }| |   	|t         v s|jS                  (fd"| |   D               0 t	        |      (t        j                  | d   jU                  (      jO                         d      | d<   ddl+}|}d}|t4        jX                  t4        jZ                  t4        jJ                  g|z   v r|s|sf||k7  rad#D ]\  }| j1                  |      ||nt]        tM        (|||g      $      | |<   |t4        jZ                  k(  r|}K| d   Q|dk(  rdnd| d<   ^ |ry|w||k7  r| d   	|rdnd| d<   |rF|rD|Bt        ||j@                        r&tC        d%|jD                   d|jD                   d      || d<   nt]        tM        (d&||g      $      | d<   d}t        | j1                  d'      t              r| d'   t^        k(  rd}d| d'<   ta        | |||||      \  }}tM        |j                  d(||g      } |sw|ru|t4        jZ                  k(  rb|dk(  rdnd}!tc        || |!         s9| | |<   |je                  t        jf                  d)      ji                  |             }n| d   |dk(  rdnd| d<   ||v r| d= |ru| d   D "cg c]	  }"|"|vs|" }#}"| d= |dk(  r| d   }n|d k(  r| d   }n| d   }| d= d}$|#D ]O  }%|jk                  |%      jl                  }&|&jo                         rd*n
t        |&      }&|$|&}$@|$|&k7  sFt?        d+       |jq                  ||#||,      }ts        |j                        ts        tu        |j                              k(  sJ d-       |je                  t        jv                  |      jy                  t
        jz                              }dk(  }'|r || |'rdnd<   || |'rdnd<   | d'   xs || d'<   n/|t4        jX                  t4        jJ                  g|z   v rB|| |'rdnd<   || |'rdnd<   |t4        j6                  k7  r| d'   xs || d'<   d.| v r| d.   xs || d.<   n|t4        jZ                  k(  r}tc        ||      r|| |'rdnd<   || |'rdnd<   | d'   xs || d'<   n|| |'rdnd<   | | |'rdnd<   |je                  t        jf                  d)      ji                  |             }| d'   xs || d'<   n8|t4        j|                  t4        j~                  fv r|xs || |'rdnd<   || |'rdnd<   |r|t4        jX                  k(  r| d   | d   d/| d0<   n| d   Cd| d0<   d| d<   | | d<   |je                  t        jf                  d)      ji                  |             }nBd| d0<   d| d<   | | d<   |je                  t        jf                  d)      ji                  |             }|rd| d'<   || d<   | S # t$        $ r dt'        | d          d}	t)        |	      w xY w# t*        $ r dt'        | d          d}	t)        |	      w xY wc c}w c c}"w )1a  
    Constructs a dataframe and modifies `args` in-place.

    The argument values in `args` can be either strings corresponding to
    existing columns of a dataframe, or data arrays (lists, numpy arrays,
    pandas columns, series).

    Parameters
    ----------
    args : OrderedDict
        arguments passed to the px function and subsequently modified
    constructor : graph_object trace class
        the trace type selected for this figure
    N)r3   r4   r   FTr^  r0  )eager_or_interchange_onlyrN  interchangerM  toPandasr   z%Unable to convert data_frame of type zm to pandas DataFrame. Please provide a supported dataframe type or a type that can be passed to pd.DataFrame.z)Attempting to convert data_frame of type zl to pandas DataFrame, but Pandas is not installed. Convert it to supported dataframe type or install pandas.r   r   r  zPCannot accept list of column references or list of columns for both `x` and `y`.zData frame columns is a rZ  r[  r6   )Nr~   r  rn   r   r   r   r&   __x____y__r~   c              3   ,   K   | ]  }|v s|  y wrR   r_   ).0r   r   s     rV   	<genexpr>z"build_dataframe.<locals>.<genexpr>  s     ,T1qG|Q,Ts   	r   )r   zData frame index is a r  r;   r   r   numberzLPlotly Express cannot process wide-form data with columns of different type.)r  onvariable_namerk  zWide-mode name-inference failure, likely due to a internal bug. Please report this to https://github.com/plotly/plotly.py/issues/new and we will try to replicate and fix it.r:   r   r   )@r4  r  r  r&  rj  r   r   r   r   r7  is_pandas_like_seriesto_framerh  	get_levelrQ  r   r  rT  rw   rc  rV  rU  r8  get_native_namespacer  rD  r   r  r  r  rZ  r   r@  r   r[   Indexr1  FunnelrK  to_arrowr$   r   r  pyarrowr  Barr   NO_COLORr~  r   with_columnslitrf  r   r   r   unpivotr  r2  r   r
  Stringr  r  ))rx   rr   r9  rm  rB  needs_interchangingr   seriesrW  r   rl  r  rC  no_xno_ywide_xwide_yri  rj  wide_cross_namerk  hist2d_typeshist1d_orientationwide_orientationr   necessary_columnspamissing_bar_dimaxno_colorrn  rq  
count_name	other_dimr   wide_value_varsr   r   v_dtypeorient_vr   s)                                           @rV   build_dataframer    s   "  	0O#U(?$u+t,"4;/U77JUS=  $E{mU"4;/U	0 |$D0K J   ??33D4FG<(00G!#\0Bt!TDJ __2243EF!#\""hj  <(00GJ
 ..\"dQU J LL	
 ",D"$,,z":m"K<(00G
 nn\"4 F II	
 "(!2D<(00G T,'4!#\"++-$"D <(00GJ/#3)+T,%78*D& #<088G!%J& $($6H 2 	8$ 
 2 	)  88C=D D88C=D D  	'49j:JK   	'49j:JK  IHOJNNB$9$9:L$4J
d8Jj fb  4DIj2B2M2MN./?/H/H.I'001 2-- 
 %)MD!j2B2H2HI"<<33x77J%bii'#'88M#:#Ac #'88M#:#Ac "2D!%DvI17DIT#YD!zd?.Cw.N"<<jo)>@P@V@VW(,T/-B(C_%33G 3%!*03c *03c +/DC(!%D-3'%gw;
#GXr:
 !#\"++-$"D  ;;=!Jq#,>1<! !  U;*u/G%,,,TU,TTU ,-G!#\"))'2;;=$"D 	O

BFFBII6EE"ddl  L88B<' !, ""27B:@V"W H #bff,*,.69;s#D/L 0t|] 3 ;-1cs]#ze.?e%5%@%@A#01A1J1J0K=+445 688 
 &+\"%**7Gh
=ST&\" H$((7#S)d7mx.GW :I| ")"3"3Wx>TUJ[BFF-B
 +c1Cs	ii9$.D!!..rvvayz/JKI M"*-<-Cc]#l" '+?&;Uq?T1UU!g%"3iO'"3iO"<0O  	A**1-33G")"4"4"6hCLG}'! b 	 %%"!	 & 
	 9$$%S1B1B-C)DD 	
$	
D **266(+;+@+@+KL	#s*-7Dc*-<Dc* M5XDMRZZ3lBB-<Dc*-7Dc*bnn, $W 9Wt#%),%7%C8\"BFF"i41@HS#.1;HS#. $W 9W1;HS#.1;HS#.%22266!9??:3NO	 $W 9WRYY//-<-HDc*-7Dc*kRZZ79 T#Y%:$D#Y#D"%D"DI!..rvvayz/JKI#D"%D"DI!..rvvayz/JKIW"DK{ ! 3?T,EW@X?Y ZH H  .c223  /?T,EW@X?Y ZP P 
 *#../\!v Vs<   6l ;;k$ l8+l80l89	l=l=$'ll 'l5c                    | j                   }| j                  |dd      }|j                  t        j                         j                               }|j                  t        j                         j                  t        j                                     }|j                  t        j                  t        j                                     j                  d      }|j                  |      }|j                         st        d|j                  d         D ]v  }|d d |f    |d d |dz
  f   z  }t        j                  |j                               s>|j!                         j#                  d      }t%        d|j'                  |             t        j(                  dd	gt+        |      z  t        j                         t        j,                  |      
      }	 |j.                  di |D 
ci c]4  }
|
|j                  |
      j1                  |j                  |
       |	      6 c}
}|j                  t        j2                  |d	d            j                  d      j!                         }t5        |j7                         j!                               }t9        t;        |d d |dd        d      D ]-  \  }\  }}||v s||v st%        d|j'                  |      d       y c c}
w )NFTr   
descendingr   )	null_maskr  r   z*None entries cannot have not-None children
fill_valuer   )r1  r$   r   rC  )	separatorignore_nulls)row_stringsr  )startz4Non-leaves rows are not permitted in the dataframe 
zis not a leaf.r_   )r   r	  r  r   r  r  r
  r  any_horizontalr   r  is_emptyr   r   r  r!  r%  r  r   r   rS  r  r  r  zip_with
concat_strr2  arg_truer`  ra  )r   cols	df_sortedr  null_indices_masknull_mask_filteredcol_idx#null_entries_with_non_null_childrenrow_idxfill_seriesr   r  null_indicesr   current_rownext_rows                   rV   _check_dataframe_all_leavesr  Q  s   ::D4EdCI  !1!1!34I  ryy{!;<I!((##BFFH- ) j  #))*;<&&(Q 2 8 8 ;< 	G $AwJ//2DQRS^2TT 0 BFFHI=EEGMMdS @MM'* 	 --tc)n$iik00;	K '	&&  
 y##A&//1E1Ea1H0H+VV
I 	dbuM 	 	
 
M	"	  (113;;=>L&/Kk!"o.a' ""K #!|*;Ga   	!
s   ,9K$c                    | d   }| d   ddd   }t        ||ddd             | d   rt        || d          nd}|j                         }|D cg c]  }|dz   	 }}|j                  d t	        ||      D              }|}i | d	   r	 |j                  t        j                  | d	         j                  t        j                                     }| d   rN| d   | d	   k(  rC| d	   dz   }|j                  t        j                  | d	         j                  |            }|| d	<   | d	   n|j                         j                         }d|vrdn'dj                  |D cg c]  }t        |       c}      |j                  t        j                   d      j                              }| d	<   t        j"                        <   g }	g }
t%        d|j                         j                               | d   r|r|	j'                  | d          t        j                  | d         j)                         | d   <   t        j                  | d         j+                         j                  | d           | d     <   n2|
j'                  | d          t        j"                  | d         | d   <   t-        t/        |j                         j                               j1                  |            }|j                  fd|D              }|D ]{  }|vs|	j'                  |       t        j                  |      j)                         |<   t        j                  |      j+                         j                  |        |  <   } t-        t/        |      t/        g d      z
        }g }| d   rQ|sO|j                  t        j                  | d         t        j                        z  j                  | d               }dt
        j2                  dt
        j2                  ffd}t5        |      D ]  \  }} |j7                  ||d d      j8                  d+i j;                  ||
|	      } |j                  |t        j                  |      j                  t        j<                               t        j                   d      t        j                  |      j                  t        j<                               d}|t?        |      dz
  k  r@t%        dg |ddd      }|j                  t        j@                  tC        t?        |      dz
  |d      D cg c];  }t        j                  ||         j                  t        j<                               = c}d      j                  |            j                  t        j@                  t        j                  |      t        j                  d      gd      t        j@                  t        j                  |      t        j                  d      gd            jE                  |      }|j                  t        j                  d      j                  jG                  dd      j                  jG                  dd             }|j'                   |jH                  dddg|         t        jJ                  t        jL                  |d!"      jO                               }| d   r|rd#}||jP                  v r|d$z  }||jP                  v r|j                  t        j                  | d         j                  t        j<                               j                  |            jS                  |d%      }|| d<   d| d<   d| d&<   d| d'<   d| d(<   | d   r^| d)   s| d   g| d)<   | S tU        | d)   tV              r$| d)   jY                  | d         sd*| d)   | d   <   | S | d)   j'                  | d          | S c c}w # t        $ r t        d
| d	   z        w xY wc c}w c c}w ),z^
    Build dataframe for sunburst, treemap, or icicle when the path argument is provided.
    r   r5   Nr  r;   F
_path_copyc              3   j   K   | ]+  \  }}t        j                  |      j                  |       - y wrR   )r   r   rf  )r  new_col_namer   s      rV   r  z.process_dataframe_hierarchy.<locals>.<genexpr>  s0      "L( 	x|,s   13r$   zDColumn `%s` of `df` could not be converted to a numerical data type._sumr   r   r      )r   r   c              3      K   | ]?  }|vst        j                  |      j                  t        j                                A y wrR   )r   r   r
  r  )r  r   agg_fs     rV   r  z.process_dataframe_hierarchy.<locals>.<genexpr>  s.     Uaun		4Us
   	A;A)rP   r   r   dframer   c                     | j                   g |D cg c]-  }t        j                  |      t        j                        z  / c}|D cg c]  }t        j                  t        j                  |        dk(        j	                  t        j                  |            j                  t        j                  d            j                  |       c} j                  |D cg c]  }|  
 c}      S c c}w c c}w c c}w )z
        - continuous_aggs is either [] or [args["color"]]
        - discrete_aggs is either [args["color"], <rest_of_cols>] or [<rest_of cols>]
        r   z(?))	r  r   r   whenthen	otherwiser  rf  drop)r  continuous_aggsdiscrete_aggsr   count_colnamen_unique_tokens       rV   post_aggz-process_dataframe_hierarchy.<locals>.post_agg  s    
 #v"" 
=LMcbffSkBFF=11M
 )  GGBFFcU>*:#;<ABT"&&+&Yrvve}-U3Z 
 $MBS3%'(B
C	DM Cs   2C<
B	D
(DTdrop_null_keysrP   r   r   r  )r  )r   r   z/?$z^/?)r   r   r   sort_color_if_discrete_color0r   r'   r#   r%   r4   )TNr_   )-r  r   lazyr  ra  r   r   r
  r  rw   r   rf  collect_schemar#   r   r&  r  r   r   r  maxr  rj  r2  
difference	LazyFramer`  group_byaggpiper  r  r  r   r  r'  r  maybe_reset_indexr   collectr   r	  r  r  r  )rx   r   r5   discrete_colorr   new_pathnew_value_col_namer   elr  r  r  r   	all_treesr  r   leveldfgdf_tree_concat_str_tokenjdf_all_treessort_col_namer  r  r  s                          @@@rV   process_dataframe_hierarchyr    s    L)B<"D4":/>B7mDM::QVN	B8<=H<'=H=	 &)(D&9 
B DEH~	X!7!<!<RZZ\!JKB =T']d8n<!%h&!8X!7!=!=>P!QRB/DNX ##%++-g-G277g;VCG;V3W 	 __RVVAY__];<&X 66-0E-MO4B--/557N@ G}  g/#%66$w-#8#<#<#>E$w- tG}%$w-(89: T']ON#345 ""4=1#%66$w-#8E$w-  B%%'--/0;;DABD	UdU	UB e  %*E#Js$$&,,u^4D-EF SE.)*+ D	C :;;<DIG}^__VVDM"RVVM%::AA$w-P
D D",, D$ dO ,M5BKKQRK6ST(O]; 	 ##""66%=%%biik266":vve}!!"))+.	
 s4y1} ?$Ed$EH$Eh$E$E! $$MM &+3t9q=!R%@ ! FF47O00= #& e-. == 12BFF84DEQT }} 12BFF4LAS	   '(% , &&66(#''//r:>>FFubQ ' 
 	(Hd)JT)JKLY,M\ ''		)(L(T(T(VWL G}6|333S M |333#00FF4=!&&ryy{399-H

$-D$
1 	
 &DDLDKDMDOG}L!"&w-D K \*D1%))$w-84@\"4=1 K %%d7m4KO >  	Vx.! 	  <Wrs    `#A`( !a%A a(ac                    d| d<   | d   | d   t        d      | d   }|j                  }| d   | d   fD cg c]0  }||   t        j                  k7  r||   t        j                  k7  r|2 }}|r=	 |j                  t        j                  |      j                  j                               }|j                  t        j                  | d         t        j                  | d         z
  j                  j                         j                  | d               | d<   | d   | d	<   | d   | d
<   | d= | d= | S c c}w # t        $ r}t        d      |d}~ww xY w)z8
    Massage input for bar traces for px.timeline()
    Tr  r   Nr    z#Both x_start and x_end are requiredr   zCBoth x_start and x_end must refer to data convertible to datetimes.r   r   )r   schemar   r   r   r  r   r&  to_datetimerw   r   r   total_millisecondsrf  )rx   r   r  r   to_convert_to_datetimeexcs         rV   process_dataframe_timeliner  `  sh    DI$w-"7>??L)BYYF OT']3#;"++%&+*@ 	  	(>!?!C!C!O!O!QRB 	W	Y!8	8	 	tG}	D
 WDI	?DLYgK/  	U	s   5D32<D8 8	EEEc           
         dd l }| j                  d      }|| |fS | d   j                  |i       j                         }|s| |fS | d   }d|d<   d|d<   |j                  |      j	                  d	
      j                         }t        j                  t        |      |z         D cg c]	  }||v s| }}t        j                  d|j                        }	|j                  t        j                  |      j                  ||j                  t!        |            t        j"                        j%                  |	            j'                  |	      j)                  |	      | d<   | |fS c c}w )Nr   r#   rO   r   Fr	  	clockwiser  Tmaintain_order   )return_dtype)rd  r  r   r   uniquer%  r   r  rj  r   r   r   r  r   replace_strictre  r  UInt32rf  r	  r  )
rx   rt   r|  r#   order_inr   uniquesr   orderrb   s
             rV   process_dataframe_pier
    sL   HHWE}[  %&**5"5::<H[  L)BK*KmmE")))>FFHG#,,T(^g-EFW1!w,QWEW --a<E
FF5M^E299SZ#8ryy^QU5\	

 
e	e 	  Xs   &	E&0E&c                    t         t        z   D cg c]	  }|| v s| }}g }| d   }d}d| v rC| d   r>t        j                  |j	                  | d         j                               | d   dz  z  }d| v rd| v rd| vr|j                  d       n| d   r&t        || d         r|j                  d       d	| d
<   n|t        j                  t        j                  t        j                  fv r|j                  d       d| d
<   n|j                  d       nd| v s|t        j                  k(  r|j                  d       nk|t        j                  t        j                  fv r8|j                  d       | d   r3| d   g | d<   | d   j                  | d          n|j                  d       t        d|v xro | d   xrh |t        j                  t        j                  fvxrD |t        j                  t        j                  t        j                  fvxs | j!                  d
            }	nd}	d| v r|j                  d       d| v r|j                  d       d| v r6|t        j"                  fv r|j                  d       n|j                  d       d| v r| d   d u}
| d   d u}| d   u|t        j$                  t        j"                  fv r
|rQ|
sOd| d<   nI|t        j&                  t        j(                  t        j*                  t        j,                  fv r	|
r|sd| d<   | d   4|
r2|r0t        || d         }t        || d         }|r|sd| d<   |r|sd| d<   | d   d| d<   |t        j$                  k(  rA|
r|r| d   
dx| d<   |d<   | d   }| d   }|dk(  r|nd |d<   |dk(  rd n||d <   |dk(  rdnd|d!<   | d   |d<   |t        j&                  t        j(                  fv r\|t        j(                  k(  rd"nd#}||   6| d   1| d   | d   k(  r| d   dk(  rd$||<   n| d   | d   k(  r| d   dk(  rd$||<   ||   d%||<   |t        j.                  k(  r| d&   | d   
dx| d<   |d<   | j!                  d'd      durn|t        j.                  t        j                  fv rd&}n"|t        j*                  k(  r| d   dk(  rdnd}nd(}| d'   d	u rd)|z   d*z   |d+<   nd)|z   d,z   | d'   z   d*z   |d+<   |t        j.                  t        j0                  t        j2                  fv rd	}	d-|d.<   d/| v r| d/   d0| v r| d0   d$k(  rzt5        d12      |d3<   nj|t        j0                  t        j2                  t        j                  t        j,                  t        j                  fv r	| d/   |d/<   nt5        | d/   2      |d3<   d| v sd| v rt7               }| j!                  d4d	      r|j9                  d4       | j!                  d5      s"| j!                  d      s| j!                  d6      r|j9                  d6       | j!                  d5      r|j9                  d5       t;        |      dk(  r|j9                  d4       d7j=                  t?        |            |d8<   nH|t        j@                  k7  r5d| v s"|t        jB                  t        jD                  fv rd6| d5   rd9nd:z   |d8<   d;| v rt5        | d;   <      |d=<   nd>| v rt5        | d>   d?k(  rd@ndA<      |d=<   dB| v r.| dC   |dC<   tG        | dB   dD      s| dB   n| dB   jH                  |dB<   dE| v r%| d   dk(  rdFndG}| d   dk(  rdFndG}| dE   | |<   d | |<   |jK                         r
d x| dH<   | dI<   | j!                  dI      | j!                  dG      d | dG<   | j!                  dH      | j!                  dF      d | dF<   | j!                  dF      "| j!                  dG      | j!                  dH      d| dJ<   dK| v r6| dK   1| dK   tL        vr&tO        dL| dK   dMtL        jQ                               dN| v r| dN   t5               | dN<   dO| v r0| j!                  dOd       dPvrtO        dQdR| dO   z  z         | dO   | dS<   |jS                  tT        D cg c]	  }|| v s| c}       |D cg c]  }tW        | |       }}tY        | |||      }||||	fS c c}w c c}w c c}w )TNr   r   r   rN   r{  r;   rG   rE   Tr   Fzmarker.colorr:   z
line.colorr4   r=   z	line.dashr<   zmarker.symbolr>   zfillpattern.shapezmarker.pattern.shaper   r   r   r   r   r   r   nbinsnbinsxnbinsyr  boxmode
violinmodeoverlaygroupr   	text_autor~   z%{r   texttemplate:r   r   r  barmoder  )r  r   r  r"   markersr  r  z+textr   r  )r   r   r  rk  vhhvgeojsonfeatureidkey__geo_interface__ru   r   r   r8   r9   facet_col_wrapr   zValue 'z!' for `trendline` must be one of r   ecdfnorm)Nr   r   z<`ecdfnorm` must be one of None, 'percent' or 'probability'. z'%s' was provided.r   )-direct_attrablesr4  r   r  r   r  r  r   r   r   r!  r"  r  r#  r$  rG  r  r  r  r  r  r  r  r  rT  rW  r  r2  r5  r  r   sortedr  rR  rU  r   r  r  r  r   rc  extendgroup_attrablesr   r  )rx   rr   rt   layout_patchrC  rs   grouped_attrsr   r   show_colorbarhas_xhas_yx_is_continuousy_is_continuousr   r  r  r   modesr<  other_positionr   grouped_mappingstrace_specss                           rV   infer_configr.    s	   (?:H1a4iQHEHML)B G~$v,OOBMM$v,7;;=>jAQUVAVV 	
 $#t+(4W%=^BW%FLL)26D./ R[["**bii$HHLL)27D./!((8T![B4I4I%I  .RVVR]]33LL!G}%-)+D&\"))$w-8  0u WBFFBMM#:: BJJRYY#GG 38812
 d[)4_-$2::,&  !45  !78S	%S	%&r||RZZ88*-D'BFFBFFBII FF*-D'&5U,Rc;O,Rc;O&)]#&)]#&"%D",,&4
#3#;=BBZ ;z#:}-KME-8C-?ETK!,73,>DEK!-8C-?cSK
#%)-%8M"299bff-- +rvv 59<DD!)d7m.G9W-$}2E2L)2L&#Y$w-/D4G34N)2L&D!)%,T" 	r~~%I!$5::Z;z2xxU#502>>2+@+@AAFBFF" /36SCFF$*.-#*=K'*.-#*=[@Q*QTW*WK'r~~r}}b6F6FGG#/K D	?"D T)_	%A(,S(9H%MMFFIIMM
 
 &*)_K	"$(i$AK!t 388GT"IIg88Ftxx1TXXi5HIIi 88FIIfu:?IIg!hhve}5F		 DKBMM2;K;K+LL'd6l7KFt"l);<F	t	"z*j8$d
F D&*>&:N# 4	?,?@ Oi22 	I T#'#6##=<<)-m)<)Cj)X#^ 
{{}044[D- xx(TXXl-C-O!\xx(TXXl-C-O!\ 	*88L!-88K ,!"dtK0<$77$&9&>&>&@B 
 d"t,?'@'H$(F !T88J%-MMN&j)99:   
+Z _BT	!BC 8EE!T1-EE "$UKHK('=@@C It C Fs   	cc	cc'cc                    d| vri n| d   j                         | d   }g }t               }t        |      D ]  \  }}|t        k(  r|j	                  d       !||vr2|j                  |      j                  d      j                         ||<   ||   }t        |      dk(  r|j	                  |d          |vr||<   t        t        j                  t        |         |z               |<    t        |      t        |      k(  rt        |      |i}|fS D 	cg c]	  }	|	|v s|	 c}	t        |j                  d      j                               }
t        |
j!                         fd	
      }|D cg c]8  }t        |D cg c]!  }|t        k(  rdn|j#                  |         # c}      : }}}t%        ||      D ci c]  \  }}||
|    }}}|fS c c}	w c c}w c c}}w c c}}w )a  
    `orders` is the user-supplied ordering with the remaining data-frame-supplied
    ordering appended if the column is used for grouping. It includes anything the user
    gave, for any variable, including values not present in the dataset. It's a dict
    where the keys are e.g. "x" or "color"

    `groups` is the dicts of groups, ordered by the order above. Its keys are
    tuples like [("value1", ""), ("value2", "")] where each tuple contains the name
    of a single dimension-group
    rO   r   r   Tr   r   r   r  c                     t        |       D cg c]"  \  }}||   v r|   j                  |      nd$ c}}S c c}}w )Nr  )ra  r  )r$   r  r~   r\  required_groupers      rV   r   z'get_groups_and_orders.<locals>.<lambda>	  sK    $'(8&$A  E5 /4ve}.Du##E*"L    s   '<r}   )r   r  r`  r  r  r   r  r%  r  rj  r   r  rF  r  __iter__r   rc  r  ra  )rx   rj   r   single_group_nameunique_cacher   r   r  groupsr  groupedsorted_group_namessub_group_namesfull_sorted_group_namessfr   r\  r1  s                   @@rV   get_groups_and_ordersr<  	  s;    %D0Rd;L6M6R6R6TFL)B6LG$ V3)$$R(,&MM#&--T-BJJL S! #3'G7|q !((4& %s";#7#7VC[8IG8S#TUsV  W-)*B/> 6>; 06Je'9IEJr{{#3D{IRRTU#LLN
( $6#
     '  )+ ,-=-C-CC-HIJ	#
 #
 ),,CEW(X
$r1B
N
 
 6>; K#

s*   	G#(G#=G-&G(1	G-G3(G-c                 >   : |xs i }|xs i }t         |       t         |       |t        j                  t        j                  t        j
                  fv r d   t                |t        j                  fv rt         |      \   }|dk(  rt        j                  }t                d j                  d       j                  d      fv rd|d<   t         |||      \  }}}}|D cg c]  }|j                  xs t         c}xs t        g}	t         |	      \  }
:g }g }d	x}}|D ]&  }|j                  :vr|j                   d
   |j"                  d<   /:|j                     }|j$                  dk(  r8t'          d         dz   }|D cg c]  }|t)        |      z    }}t+        |      }|j$                  dk(  r8t'          d         dz   }|D cg c]  }|t)        |      z    }}t+        |      }|D ]V  }||j"                  vs|j                   t+        |j"                        t+        |j                         z     |j"                  |<   X ) t-         |       j.                        }i }t1               }g }d } j                  dd
      }|
j3                         D ]  \  }}t1               }t1               }d}t5        |	||      D ]p  \  }}}|t        k7  st'         |      }t7        |j"                  t8              s(t)        |      ||<   |j:                  rt)        |      ||<   |j<                  dk(  so|}r dj?                  |jA                               } ||vrtC               ||<   ||   }!|D ]  }"|"jE                  |       }#|"jD                  t        jF                  t        jH                  t        jJ                  t        jL                  t        jN                  t        jP                  t        jR                  t        jT                  t        j                  t        j                  t        j
                  fvr|#jW                  | | dk7  xr | |!v       |j                  d      }$|"jD                  t        j                  t        jX                  t        jZ                  t        j\                  fv r|$dk(  s|$|#jW                  d|        |!j_                  |        d	|#_0        d	|#_1        te        |      D ]  \  }%}||%   }	 |jg                  |#|j"                  |          |j$                  dk(  r|j"                  |   }&n% j                  d      |"jl                  d!k7  rd}&nd	}&|j$                  dk(  r(|j"                  |   }|r+d	|d	z
  |z  z   }&d	|d	z
  |z  z   }n|"jl                  d"k(  rd}nd	}|&d	kD  r|&|#_0        |d	kD  s||#_1         |d
   jD                  t        jn                  k(  rc|"jD                  t        jX                  k(  rF|#jp                  jr                  r0|#jW                  tk        |#jp                  jr                               d# v rq d$   d%k(  r d!   n d"   }' d$   d&k(  r d!   n d"   }( j                  d#d'      d(k7  })|ju                  |'|) d)      }|jw                  |(      jy                         }*|j{                  t}        j~                  |(      j                         j                  |(            }|)s|ju                  |'dd)      } j                  d#d'      d*k(  r6|j{                  |*t}        j~                  |(      z
  j                  |(            } d+   d,k(  r(|j{                  t}        j~                  |(      |*z        }n2 d+   d-k(  r*|j{                  t}        j~                  |(      |*z  d.z        }t         |"||j                         |      \  }+},|#jW                  |+       |,'|j                  |j                                |,|d/   d0<   ||vrtk        g |1      ||<   ||   d2   j                  |#         |jA                         D -cg c]  }-|- }.}-t+        |.      d	kD  rt        |. :fd34      }.|r|t        jT                  t        jP                  t        jR                  fv rd5nd}/ d6   xs d d g}0t        d7d8      }1tk        |1j                   d9          d:   |0d
   |0d	   tk        t          |/   |/      ;      <      |d=<   d>D ]  }2 |2   s	 |2   ||2<    tk        d
?      |d@<   |rdj?                  |      |d@   dA<    dB   r	 dB   |dA<   n* dC   j                  j                  j                  dDdEi|dF<    dG   r dG   |dH<   dI v r0 dI   r+ dC   j                  j                  j                  dJ|d@   dK<   |r$t        j                  ||z        }t        ||      } j                  d      |d	z  } j                  d      |d	z  }t         ||.||||      }3|.D ]d  }4|4d2   D ]Z  }#t7        |#t        j                        rt        |#|3j                  |3j                  ||#j`                  z
  d	z   |#jb                         \ f |3j                  t+        |.      d
kD  r|.d
   d2   ng        |3j                  |       dC v r dC   |3j                   dC   dL       |.D ]  }-t)        |-dM         |-dM<    t+        |      d	kD  r|.ng |3_W         j                  dN      r j                  dOdP      dQk(  rt         |      }5|5jE                  dRdRdS      }6dT|5j                  vrh|D ]c  }|j<                  dk(  s|j                   t+        |j"                        t+        |j                         z     }7tk        |7      |5j                  dT<   e t         |5 dU   i |      \  }+},|6jW                  |+       |3j                  |6dVdVdW       |3j                  d/dX       |,|j                  tk        |,Y             |r	 d
d l\}8|8j                  |      |3_^        ng |3_^        t         ||3:       t         ||3       |3S c c}w c c}w c c}w # th        $ rO |"|d
   k7  r:|"jD                  t        jZ                  t        jX                  fv r|j<                  dv s+|"jD                  t        j\                  fv r|j<                  dv rn|"|d
   k7  rV|"jD                  t        j\                  fv r9|j<                  dk(  r*|#jW                  tk        |j"                  |                n|"jD                  t        jJ                  t        jL                  t        jN                  fv rC|j<                  dk(  r4|#jW                  d	gt+        |      z  |j"                  |   gdz  dd        n Y w xY wc c}-w # t        $ r dZ}9t        |9      w xY w)[N)rr   r5   r	  ru  r   r   r  r  r   r   r   r   r9   r   r   r8   r  r7   z, )r1  )legendgroup
showlegendr  T)alignmentgroupoffsetgroup)r<   r   r   )r<   r   r;   r  )r   r{  F)r   r  	showscaler?  r   r   r  r   r   r   standardrk  r  complementaryr  r   r   g      Y@r  px_fit_results)r  r1  r  c                 8    d      j                  | d         S )Nr7   r1  )r  )r  rx   r\  s    rV   r   zmake_figure.<locals>.<lambda>
  s!    fT2C-D&E&K&KAfI&V rX   r2  r   range_colorr  make_figurerG   color_continuous_midpointr  )r  cmidcmincmaxcolorbarr   )rD   rC   )tracegroupgaplegendrw  titlerB   r  r  marginsubtitletitle_subtitle_textr   constant
itemsizing)rB   	overwriter1  r   r  r   overallzOverall Trendline)r1  r>  r?  r   r   r  )r   r   exclude_empty_subplots)selectorr?  )rE  z*Trendlines require pandas to be installed.)cr)  r  r   r!  r   r"  r  r#  r
  r  r  r  r.  rj   r  r<  rl   rk   ro   rz   r&  r  r   rc  r   r|   ra  r  r   ri   rn   r   r$   r2  rr   r   r   r  r  r  rT  rW  r  r   r  r  r  r5  _subplot_row_subplot_colr`  rm   r   r  ru   r  r   r;   r	  r   r   r  r   r   cum_sumrf  rH  r   r  r   r   validate_coercer   rh  rQ  r  rO  rU  rg  ceilmininit_figurer  r   r}  
add_tracesupdate_layoutr  r  rt   	add_traceupdate_tracesrT  rh  re   rU  rV  r^  r  );rx   rr   rt   r#  r-  r,  r   r%  r   rj   r6  
col_labels
row_labelsr  r  msorted_valuesr  r   valsubplot_typetrace_names_by_framer  trendline_rowstrace_name_labelsr  
group_namer  r+  
frame_namer   r}   
trace_nametrace_namesr)  r   r  r   r   r   r  	ascending	group_sumr  r,  r  
frame_listcolorvarrG  colorscale_validatorr   rf   r  trendline_spectrendline_trace
next_colorrW  r   r\  s;   `                                                         @rV   rH  rH  	  s   #K%2L$K84-Drzz2;;		::tF|?W*40rvvh1$Dkj ff)$/ txx-txx/EFF"+Y<Hk;=9K!7M 0@@!qyy%I%@OYKG*49NFFJJEE R99F"JJqMAIIbM"199-Mww%"4k):;cA7DE!fs1voE
EJww%"4k):;cA7DE!fs1voE
EJ$ Raii'%&ZZAIIQZZ0P%QAIIcNRR" 00B0BCL]FNXX.2N#\\^ Z5
E$'M
w
4DE 	%KCaic*!!))[9*-c(N3'++14S)#.::!22!$J	% YY0779:
11/2u ,*:6% H	5J**
*;E%%

  ##  

		.   * *b 0 RZ{5R   #&&y1G%%"&&"&&"))R\\)RR7"goDjIOOJ' "#E!"E!"23 B-1 m"IIeQYYs^4H 77e#))C.C .:&//36 77e#))C.C%C!G#>?C!G~#=>!**c17),E&7),E&EB-H A**b.C.CC**bff4JJ$$Duzz/?/?$@AT!$($73$>tCyDI#'#6##=d3i49 HHZ<
J	

d9}QU
V!,,#%  **266#;+>+>+@+F+Fs+KL !JJ$5TJRE88J
3F!..	BFF3K0G/N/Ns/STE
#}4!..rvvc{Y/FGE*%2!..si0G5/PQE!2j%)<)<)>"E; LL&%%n&9&9&;<7Br"#34'%)r
%Cz":v&--e4QH	5%Z5v $]]_-!-J-
:V

  r~~r}}b>N>NOO  	
 =)9dD\2<O%)+;;-. 12QQ.tT(^XN
&
\" ! &7"1gLO& "2L/3yy9J/KX|,G}%)']\"	j		 	 	'	'	)	)	1"%rXJ.2:.>*+$L##**55=/9X|,		%.01E>*xx)
xx)

lJuj*C
  6] 	E%*%

***Q.""	 NNC
Oa,?:a=(RHl#Td:.:4
#3tD #&	N&	#"6{QBCJxx*;W!E!R,T;?(44$2ERW 5 
 333% P::(!"C		NS_,L!MJ9=J9ON..v6P /.$|"4b'
{ 	u%E$ 	 	
 	2$7"!!$k"BC	+!#n!=C
  4c62 {C8J]	 A F FH "   #k!n4&22ryy"&&6II !

.K K '22r||nD !

.@ @ "k!n4&22r||nDJJ'1Dqyy~,FG"..MM2+;+;R=P=PQRJJ'1 cCJ.()		#'7!';&+'+	 %  A H .Z  	+>C%c**	+s7   +rrrr$$	x x $Ew=	<w=	xc                    t        |      D cg c]  }t        |xs d      g|z   }}dg|z  }	dg|z  }
| j                  dd      }|dk(  r| j                  d      )| d   dk(  s	d	| v r| d	   rd
}nd}|g|dz
  z  d|z
  gz   }
d}n-|r| j                  d      xs d}n| j                  d      xs d}| j                  d      )| d   dk(  s	d	| v r| d	   rd
}nd}|g|dz
  z  d|z
  gz   }	d}nX| j                  d      xs d}nB|r| j                  d      xs d}n| j                  d      xs d}| j                  d      xs d}|rwd g|z  |z  }t        |      ||z  k  r#|j	                  d        t        |      ||z  k  r#t        |      D ],  }t        |      D ]  }||dz
  |z
  |z  |z      |||z  |z   <    . d }	 t        |||dd|rg nt        t        |            |rg n||rng |||
|	d      }|j                  j                  D ]  }|j                  d         |S c c}w # t        $ r} ||dd        ||dd        d }~ww xY w)Ndomainry  g      ?r  r   xyr   ru  r;   gGz?gzG?r   g{Gz?facet_row_spacinggQ?gQ?r   g{Gzt?facet_col_spacingg{Gz?c                     |d| j                   d   v r*| j                   d   dj                  |      z   f| _         | y)z
        Translates the spacing errors thrown by the underlying make_subplots
        routine into one that describes an argument adjustable through px.
        z spacingr   z5
Use the {facet_arg} argument to adjust this spacing.)	facet_argN)rx   format)er  r  s      rV   _spacing_error_translatorz.init_figure.<locals>._spacing_error_translatorG  sN    
 &'AFF1I5q	88>8STAF
 G 6rX   r  zbottom-left)rowsr  specsshared_xaxesshared_yaxes
row_titlescolumn_titlessubplot_titleshorizontal_spacingvertical_spacingrow_heightscolumn_widths
start_cell
HorizontalVertical)font)r   r  r  r  r  r   rj  rk  r   rh  annotationsr   )rx   rj  rt  r  r  re  rf  rF  r  r  r  r  	main_sizer  r  subplot_labelsr   r  r  rf   r  annots                         rV   r`  r`    s   DI%LQqd012U:QEQ EEMM%%-KXX.2N t88L!-L![0W_g 	 	$+3q9}oEK##xx(;<D#xx(;<D88L!-L![0W_g 	 	&K5195YGM!&!%*=!>!F$ #xx(;<D#xx(;<D!XX&9:Bd%%/*o-d# *o-u 	XA5\ X0:EAIMU;RUV;V0Wq5y1}-X	X+rhz6J1K ."J-;>1-#'$
* ''  $  Jw Rd  !!\3FG!!Z1DEs   H)6H. .	I7II)NN)eplotly.graph_objs
graph_objsr   	plotly.ioior  collectionsr   r   _special_inputsr   r   r   r  r	   r
   r   r   r   _plotly_utils.basevalidatorsr   plotly.colorsr   r   rg  plotly._subplotsr   r   r   narwhals.stable.v1stablev1r   r  r  r  r4  r"  renameable_group_attrablesr3  r  r  r  r  r  r  rZ  r  r  r  objectr@   r  ra   rc   rg   rh   rp   rz   r   rh  r&  rG  r   rQ  r   r   r   r   rH  r^  rn  r  r[  rM  rO  rK  rV  rS  rY  r  r  r  r  r)  r.  r=  rD  rH  rK  rX  r~  r  r  r  r  r
  r.  r<  rH  r`  r_   rX   rV   <module>r     sl     / 9 9 E E < 1      " 7yc  UHIPQ FF  WM  &8;UU  jj",,		266299M
 
r||R^^R-B-BC C
% %P <   {$WX		6r|| 6s 6t 6bii BII && &2#L/du$p	6,
&>?B#1L2,7
tJZ ]L@
@2 +&H#VFR7BLL 7T 7tRj!H:bAJBJCL
]rX   