Ë
    Cêñi¯%  ã                  ót  — 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 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jJ                  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z  Z/e	 d)	 	 	 	 	 d*d„«       Z0e	 d+	 	 	 	 	 d,d„«       Z0e	 d+	 	 	 	 	 d-d „«       Z0	 d.	 	 	 	 	 d/d!„Z0d0d"„Z1d1d#„Z2	 	 	 	 	 	 d2d$„Z3d3d%„Z4d4d&„Z5d5d'„Z6y# e,$ r dZ+Y Œ‰w xY w)6é    )ÚannotationsN)Úversion)ÚTYPE_CHECKINGÚAnyÚFinalÚ	TypedDictÚ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    ú_/var/www/pod-logistic/pod-ai/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    r0   ©r#   Úmax_rowss     r$   Úvegafusion_data_transformerr4   H   ó   € ð r&   c                 ó   — y r    r0   r2   s     r$   r4   r4   N   r5   r&   c                 ó   — y r    r0   r2   s     r$   r4   r4   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+   )
r4   r%   r!   r   ÚuuidÚuuid4Úreplacer   r   r   )r#   r3   Ú
table_names      r$   r4   r4   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$   rI   rI   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
    )rI   Úintersectionr   Úpop)rJ   Úinline_namesrK   Úks       r$   Úget_inline_tablesrS   ™   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 foundr3   )Úlocal_tzÚinline_datasetsÚ	row_limit)ÚaltairrV   rW   r   rD   Ú
ValueErrorrS   ÚoptionsÚruntimeÚnew_chart_stateÚhandle_row_limit_exceededÚget_warnings)Úvegalite_specrY   rV   rW   ÚvfÚcompilerÚmsgrJ   Úinline_tablesr[   Úchart_states              r$   Ú!compile_to_vegafusion_chart_stateri   ³   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   rU   NrX   r3   )rZ   r[   )r\   rV   rW   r   rD   r]   rS   r^   r_   Úpre_transform_specÚget_local_tzra   )rc   rV   rW   rd   re   rf   rJ   rg   r[   Útransformed_vega_specÚwarningss              r$   Úcompile_with_vegafusionro   ë   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.)rD   r   )r[   rn   Úwarningrf   s       r$   ra   ra     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   ©rV   r   )r\   rV   Úactiveru   s    r$   Úusing_vegafusionrw   +  s   € õ )à×#Ñ# |Ñ3Ð3r&   )r#   r   ÚreturnzTypeIs[DataFrameLike])..)r#   ÚNoner3   Úintrx   zCallable[..., Any]).)r#   r   r3   rz   rx   r   )r#   z+dict | IntoDataFrame | SupportsGeoInterfacer3   rz   rx   Ú_VegaFusionReturnType)Ni † )r#   zDataType | Noner3   rz   rx   z*Callable[..., Any] | _VegaFusionReturnType)rJ   údict[str, Any]rx   zset[str])rJ   r|   rx   zdict[str, DataFrameLike])rc   r|   rY   r*   rx   r   )rc   r|   rx   r|   )r[   z
int | Nonern   Úlist)rx   Úbool)7Ú
__future__r   r<   Úimportlib.metadatar   Úimportlib_versionÚtypingr   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   r/   r   r   ÚImportErrorr%   r)   r{   r4   rI   rS   ri   ro   ra   rw   r0   r&   r$   ú<module>r‘      sÇ  ðÞ "ã Ý ;ß AÕ AÝ 'å =Ý %å 5Ý +÷ó õ :áÛß8å7å-à
×Ñ˜7Ò"Þ!å,ñ ?RÓ>SÐ Ð;Ó Sð
 3Ð �5Ó 2ðÙ)0Ñ1BÀ<Ó1PÓ)QÐ˜ÓQñ
 ™' )Ó,Ð0BÒBôJó/ô ô ð 3Ð5GÑGÐ ð 
à&)ðØ
ðØ #ðàòó 
ðð
 
à),ðØ
ðØ#&ðàòó 
ðð
 
àGJð Ø
5ð ØADð àò ó 
ð ð 39ð.Ø
ð.Ø,/ð.à/ó.ó$*óZDð45Ø!ð5Ø-0ð5àó5óp0!óf
$ô4øðw ò ØÒðús   ÂD- Ä-D7Ä6D7