Ë
    úmxi¼%  ã                  ó|  — U d dl mZ d dlZd dlmZ d dlmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZmZmZ d dlmZ er4d dlZd dlm Z m!Z! d dl"m#Z# d dl$m%Z% ejL                  dk\  rd dlm'Z' nd dl(m'Z'  e«       Z)de*d<   dZ+de*d<   	  e ed«      «      Z,de*d<   e,r ed«      e,k  rd(d„Z.nd(d„Z. G d„ de
«      Z/ee/ef   Z0e	 d)	 	 	 	 	 d*d„«       Z1e	 d+	 	 	 	 	 d,d„«       Z1e	 d+	 	 	 	 	 d-d „«       Z1	 d.	 	 	 	 	 d/d!„Z1d0d"„Z2d1d#„Z3	 	 	 	 	 	 d2d$„Z4d3d%„Z5d4d&„Z6d5d'„Z7y# e-$ r dZ,Y Œ‹w xY w)6é    )ÚannotationsN)Úversion)ÚTYPE_CHECKINGÚAnyÚFinalÚ	TypedDictÚUnionÚoverload)ÚWeakValueDictionary)Úis_into_dataframe)ÚVersion)Úimport_vegafusion)ÚDataFrameLike)ÚDataTypeÚMaxRowsErrorÚSupportsGeoInterfaceÚToValuesReturnType)Údefault_data_transformer)ÚCallableÚMutableMapping)ÚIntoDataFrame)Ú
ChartState)é   é   )ÚTypeIsz"MutableMapping[str, DataFrameLike]Úextracted_inline_tableszvegafusion+dataset://r   ÚVEGAFUSION_PREFIXÚ
vegafusionzVersion | NoneÚVEGAFUSION_VERSIONz2.0.0a0c                ó<   — t        | t        «      xs t        | «      S ©N)Ú
isinstancer   r   ©Údatas    úT/home/htdocs/ttos/venv/lib/python3.12/site-packages/altair/utils/_vegafusion_data.pyÚis_supported_by_vfr&   6   s   € ô ˜$¤Ó.ÒIÔ2CÀDÓ2IÐIó    c                ó"   — t        | t        «      S r!   )r"   r   r#   s    r%   r&   r&   =   s   € Ü˜$¤Ó.Ð.r'   c                  ó   — e Zd ZU ded<   y)Ú_ToVegaFusionReturnUrlDictÚstrÚurlN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© r'   r%   r*   r*   A   s   … Ø	„Hr'   r*   c                 ó   — y r!   r1   ©r$   Úmax_rowss     r%   Úvegafusion_data_transformerr5   H   ó   € ð r'   c                 ó   — y r!   r1   r3   s     r%   r5   r5   N   r6   r'   c                 ó   — y r!   r1   r3   s     r%   r5   r5   T   s   € ð  r'   c                óÔ   — | €t         S t        | «      rKt        | t        «      s;dt	        j
                  «       › �j                  dd«      }| t        |<   dt        |z   iS t        | «      S )zVegaFusion Data Transformer.Útable_ú-Ú_r,   )
r5   r&   r"   r   ÚuuidÚuuid4Úreplacer   r   r   )r$   r4   Ú
table_names      r%   r5   r5   Z   si   € ð €|Ü*Ð*ä˜$Ô¬
°4Ô9MÔ(NØœdŸj™j›l˜^Ð,×4Ñ4°S¸#Ó>ˆ
Ø.2Ô 
Ñ+ØÔ(¨:Ñ5Ð6Ð6ô
 (¨Ó-Ð-r'   c                ó@  — t        «       }| j                  dg «      D ]M  }|j                  dd«      }|j                  t        «      sŒ+|t	        t        «      d }|j                  |«       ŒO | j                  dg «      D ]  }|j                  t        |«      «       Œ |S )a­  
    Get a set of the inline datasets names in the provided Vega spec.

    Inline datasets are encoded as URLs that start with the table://
    prefix.

    Parameters
    ----------
    vega_spec: dict
        A Vega specification dict

    Returns
    -------
    set of str
        Set of the names of the inline datasets that are referenced
        in the specification.

    Examples
    --------
    >>> spec = {
    ...     "data": [
    ...         {"name": "foo", "url": "https://path/to/file.csv"},
    ...         {"name": "bar", "url": "vegafusion+dataset://inline_dataset_123"},
    ...     ]
    ... }
    >>> get_inline_table_names(spec)
    {'inline_dataset_123'}
    r$   r,   Ú NÚmarks)ÚsetÚgetÚ
startswithr   ÚlenÚaddÚupdateÚget_inline_table_names)Ú	vega_specÚtable_namesr$   r,   ÚnameÚmarks         r%   rJ   rJ   l   s›   € ô: “%€Kð —‘˜f bÓ)ò "ˆØ�h‰h�u˜bÓ!ˆØ�>‰>Ô+Õ,Ø”sÔ,Ó-Ð/Ð0ˆDØ�O‰O˜DÕ!ð	"ð —‘˜g rÓ*ò 9ˆØ×ÑÔ1°$Ó7Õ8ð9ð Ðr'   c                ó”   — t        | «      }|j                  t        «      }|D �ci c]  }|t        j                  |«      “Œ c}S c c}w )a&  
    Get the inline tables referenced by a Vega specification.

    Note: This function should only be called on a Vega spec that corresponds
    to a chart that was processed by the vegafusion_data_transformer.
    Furthermore, this function may only be called once per spec because
    the returned dataframes are deleted from internal storage.

    Parameters
    ----------
    vega_spec: dict
        A Vega specification dict

    Returns
    -------
    dict from str to dataframe
        dict from inline dataset name to dataframe object
    )rJ   Úintersectionr   Úpop)rK   Úinline_namesrL   Úks       r%   Úget_inline_tablesrT   ™   sF   € ô& *¨)Ó4€Lð ×+Ñ+Ô,CÓD€KØ7BÖC°!ˆAÔ&×*Ñ*¨1Ó-Ñ-ÒCÐCùÒCs   ¥Ac                ó8  — ddl m}m} t        «       }|j	                  «       }|€d}t        |«      ‚ || «      }t        |«      }|j                  j	                  dd«      }	|j                  j                  ||||	¬«      }
t        |	|
j                  «       «       |
S )ax  
    Compile a Vega-Lite spec to a VegaFusion ChartState.

    Note: This function should only be called on a Vega-Lite spec
    that was generated with the "vegafusion" data transformer enabled.
    In particular, this spec may contain references to extract datasets
    using table:// prefixed URLs.

    Parameters
    ----------
    vegalite_spec: dict
        A Vega-Lite spec that was generated from an Altair chart with
        the "vegafusion" data transformer enabled
    local_tz: str
        Local timezone name (e.g. 'America/New_York')

    Returns
    -------
    ChartState
        A VegaFusion ChartState object
    r   ©Údata_transformersÚvegalite_compilersNú)No active vega-lite compiler plugin foundr4   )Úlocal_tzÚinline_datasetsÚ	row_limit)ÚaltairrW   rX   r   rE   Ú
ValueErrorrT   ÚoptionsÚruntimeÚnew_chart_stateÚhandle_row_limit_exceededÚget_warnings)Úvegalite_specrZ   rW   rX   ÚvfÚcompilerÚmsgrK   Úinline_tablesr\   Úchart_states              r%   Ú!compile_to_vegafusion_chart_staterj   ³   s¤   € ÷2 =ä	Ó	€Bð "×%Ñ%Ó'€HØÐØ9ˆÜ˜‹oÐá˜Ó'€Iô & iÓ0€Mð "×)Ñ)×-Ñ-¨j¸$Ó?€Ià—*‘*×,Ñ,ØØØ%Øð	 -ó €Kô ˜i¨×)AÑ)AÓ)CÔDàÐr'   c                ó>  — ddl m}m} t        «       }|j	                  «       }|€d}t        |«      ‚ || «      }t        |«      }|j                  j	                  dd«      }|j                  j                  ||j                  «       ||¬«      \  }	}
t        ||
«       |	S )aR  
    Compile a Vega-Lite spec to Vega and pre-transform with VegaFusion.

    Note: This function should only be called on a Vega-Lite spec
    that was generated with the "vegafusion" data transformer enabled.
    In particular, this spec may contain references to extract datasets
    using table:// prefixed URLs.

    Parameters
    ----------
    vegalite_spec: dict
        A Vega-Lite spec that was generated from an Altair chart with
        the "vegafusion" data transformer enabled

    Returns
    -------
    dict
        A Vega spec that has been pre-transformed by VegaFusion
    r   rV   NrY   r4   )r[   r\   )r]   rW   rX   r   rE   r^   rT   r_   r`   Úpre_transform_specÚget_local_tzrb   )rd   rW   rX   re   rf   rg   rK   rh   r\   Útransformed_vega_specÚwarningss              r%   Úcompile_with_vegafusionrp   ë   s©   € ÷* =ä	Ó	€Bð "×%Ñ%Ó'€HØÐØ9ˆÜ˜‹oÐá˜Ó'€Iô & iÓ0€Mð "×)Ñ)×-Ñ-¨j¸$Ó?€IØ&(§j¡j×&CÑ&CØØ
�‰ÓØ%Øð	 'Dó 'Ñ#Ð˜8ô ˜i¨Ô2à Ð r'   c                ó\   — |D ]'  }|j                  d«      dk(  sŒd| › d�}t        |«      ‚ y )NÚtypeÚRowLimitExceededzXThe number of dataset rows after filtering and aggregation exceeds
the current limit of z÷. Try adding an aggregation to reduce
the size of the dataset that must be loaded into the browser. Or, disable
the limit by calling alt.data_transformers.disable_max_rows(). Note that
disabling this limit may cause the browser to freeze or crash.)rE   r   )r\   ro   Úwarningrg   s       r%   rb   rb     sK   € Øò 	$ˆØ�;‰;�vÓÐ"4Ó4ð(Ø(1 {ð 3QðQð ô ˜sÓ#Ð#ñ	$r'   c                 ó,   — ddl m}  | j                  dk(  S )z9Check whether the vegafusion data transformer is enabled.r   ©rW   r   )r]   rW   Úactiverv   s    r%   Úusing_vegafusionrx   +  s   € õ )à×#Ñ# |Ñ3Ð3r'   )r$   r   ÚreturnzTypeIs[DataFrameLike])..)r$   ÚNoner4   Úintry   zCallable[..., Any]).)r$   r   r4   r{   ry   r   )r$   z+dict | IntoDataFrame | SupportsGeoInterfacer4   r{   ry   Ú_VegaFusionReturnType)Ni † )r$   zDataType | Noner4   r{   ry   z*Callable[..., Any] | _VegaFusionReturnType)rK   údict[str, Any]ry   zset[str])rK   r}   ry   zdict[str, DataFrameLike])rd   r}   rZ   r+   ry   r   )rd   r}   ry   r}   )r\   z
int | Nonero   Úlist)ry   Úbool)8Ú
__future__r   r=   Úimportlib.metadatar   Úimportlib_versionÚtypingr   r   r   r   r	   r
   Úweakrefr   Únarwhals.stable.v1.dependenciesr   Úpackaging.versionr   Úaltair.utils._importersr   Úaltair.utils.corer   Úaltair.utils.datar   r   r   r   Úaltair.vegalite.datar   ÚsysÚcollections.abcr   r   Únarwhals.stable.v1.typingr   Úvegafusion.runtimer   Úversion_infor   Útyping_extensionsr   r0   r   r   ÚImportErrorr&   r*   r|   r5   rJ   rT   rj   rp   rb   rx   r1   r'   r%   ú<module>r’      sÍ  ðÞ "ã Ý ;ß H× HÝ 'å =Ý %å 5Ý +÷ó õ :áÛß8å7å-à
×Ñ˜7Ò"Þ!å,ñ ?RÓ>SÐ Ð;Ó Sð
 3Ð �5Ó 2ðÙ)0Ñ1BÀ<Ó1PÓ)QÐ˜ÓQñ
 ™' )Ó,Ð0BÒBôJó/ô ô ð Ð8Ð:LÐLÑMÐ ð 
à&)ðØ
ðØ #ðàòó 
ðð
 
à),ðØ
ðØ#&ðàòó 
ðð
 
àGJð Ø
5ð ØADð àò ó 
ð ð 39ð.Ø
ð.Ø,/ð.à/ó.ó$*óZDð45Ø!ð5Ø-0ð5àó5óp0!óf
$ô4øðw ò ØÒðús   ÂD1 Ä1D;Ä:D;