Ë
    Cêñi#9  ã                  óz  — U d dl mZ d dlZd dlZd dlZd dlZd dlmZmZm	Z	 d dl
mZ d dlmZ d dlmZmZmZmZmZmZmZmZ d dlmc mZ d dlmZ d dlmZ d	d
lm Z  d	dl!m"Z"m#Z#m$Z$m%Z%m&Z& d	dl'm(Z( ejR                  dk\  r	d dlm*Z*m+Z+ nd dl,m*Z*m+Z+ er*ejR                  dk\  rd dlm-Z- nd dl,m-Z- d dlm.Z. d dl/Z0d dl1Z2e+ G d„ de*«      «       Z3e4eef   ez  e3z  e"z  Z5de6d<    ede5¬«      Z7 ede¬«      Z8e4e9e9e4eef   z  e:e4eef      z  f   Z;de6d<   e4e9e4eef   e:e4eef      z  f   Z<de6d<   ee4e9e	f   z  dz  Z=d<d„Z> ed«      Z? ede;e«      Z@eee5e?f   e@f   ZA G d„ de(eAe@f   «      ZB G d„ d eC«      ZDed=d>d!„«       ZEed?d@d"„«       ZE	 dA	 	 	 	 	 dBd#„ZEe	 dC	 	 	 	 	 	 	 dDd$„«       ZFe	 d=	 	 	 	 	 	 	 dEd%„«       ZFe	 d=	 	 	 	 	 	 	 dFd&„«       ZF	 	 	 dG	 	 	 	 	 	 	 dHd'„ZFed(   ZG G d)„ d*e«      ZH G d+„ d,e«      ZIe	 	 	 	 	 dI	 	 	 	 	 	 	 	 	 	 	 dJd-„«       ZJe	 	 	 	 dK	 	 	 	 	 	 	 	 	 	 	 dLd.„«       ZJ	 	 	 	 	 dM	 	 	 	 	 	 	 	 	 	 	 dNd/„ZJe	 	 	 	 	 dI	 	 	 	 	 	 	 	 	 	 	 dJd0„«       ZKe	 	 	 	 dK	 	 	 	 	 	 	 	 	 	 	 dOd1„«       ZK	 	 	 	 	 dP	 	 	 	 	 	 	 	 	 	 	 dQd2„ZK	 	 	 	 	 	 	 	 	 	 	 	 	 	 dRd3„ZLdSd4„ZMdTd5„ZNdUd6„ZOdVd7„ZPdWd8„ZQdXd9„ZRdXd:„ZSdYd;„ZTy)Zé    )ÚannotationsN)ÚCallableÚMutableMappingÚSequence)Úpartial)ÚPath)ÚTYPE_CHECKINGÚAnyÚConcatenateÚLiteralÚ	ParamSpecÚ	TypedDictÚTypeVarÚoverload)Úis_pandas_dataframe)ÚIntoDataFrameé   )Úimport_pyarrow_interchange)ÚDataFrameLikeÚsanitize_geo_interfaceÚsanitize_narwhals_dataframeÚsanitize_pandas_dataframeÚto_eager_narwhals_dataframe)ÚPluginRegistry)é   é   )ÚProtocolÚruntime_checkable)ÚTypeIs)Ú	TypeAliasc                  ó   — e Zd ZU ded<   y)ÚSupportsGeoInterfacer   Ú__geo_interface__N©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úS/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/altair/utils/data.pyr"   r"   4   s   … à%Ô%r*   r"   r    ÚDataTypeÚ	TDataType)ÚboundÚTIntoDataFrameÚVegaLiteDataDictÚToValuesReturnTypec                ó’   — t        | t        t        f«      xs0 t        t        j                  | dd¬«      t        j
                  «      S )NT)Úeager_or_interchange_onlyÚpass_through)Ú
isinstanceÚdictr"   ÚnwÚfrom_nativeÚ	DataFrame)Úobjs    r+   Úis_data_typer;   E   s:   € Ü�cœDÔ"6Ð7Ó8ò ¼JÜ
�‰�s°dÈÔNÜ
�‰ó=ð r*   ÚPÚRc                  óL   — e Zd ZddiZedd„«       Zej                  dd„«       Zy)ÚDataTransformerRegistryÚconsolidate_datasetsTc                ó    — | j                   d   S ©Nr@   ©Ú_global_settings)Úselfs    r+   r@   z,DataTransformerRegistry.consolidate_datasetsa   s   € à×$Ñ$Ð%;Ñ<Ð<r*   c                ó"   — || j                   d<   y rB   rC   )rE   Úvalues     r+   r@   z,DataTransformerRegistry.consolidate_datasetse   s   € à8=ˆ×ÑÐ4Ò5r*   N)ÚreturnÚbool)rG   rI   rH   ÚNone)r%   r&   r'   rD   Úpropertyr@   Úsetterr)   r*   r+   r?   r?   ^   s9   „ Ø.°Ð5Ðàò=ó ð=ð × Ñ ò>ó !ñ>r*   r?   c                  ó6   ‡ — e Zd ZdZdˆ fd„Zedd„«       Zˆ xZS )ÚMaxRowsErrorz+Raised when a data model has too many rows.c               óF   •— || _         t        ‰| �	  | j                   «       y ©N)ÚmessageÚsuperÚ__init__)rE   rQ   Ú	__class__s     €r+   rS   zMaxRowsError.__init__n   s   ø€ ØˆŒÜ‰Ñ˜Ÿ™Õ&r*   c               ó$   — d|› d|› d�} | |«      S )Nz$The number of rows in your dataset (z') is greater than the maximum allowed (aG  ).

Try enabling the VegaFusion data transformer which raises this limit by pre-evaluating data
transformations in Python.
    >> import altair as alt
    >> alt.data_transformers.enable("vegafusion")

Or, see https://altair-viz.github.io/user_guide/large_datasets.html for additional information
on how to plot large datasets.r)   )ÚclsÚ	user_rowsÚmax_rowsÚmsgs       r+   Úfrom_limit_rowszMaxRowsError.from_limit_rowsr   s/   € ð 3°9°+ð >)Ø)1¨
ð 3-ð	-ð 	ñ �3‹xˆr*   )rQ   ÚstrrH   rJ   )rW   ÚintrX   r\   rH   rN   )r%   r&   r'   Ú__doc__rS   ÚclassmethodrZ   Ú__classcell__)rT   s   @r+   rN   rN   k   s   ø„ Ù5õ'ð òó ôr*   rN   c                 ó   — y rP   r)   ©ÚdatarX   s     r+   Ú
limit_rowsrc   ƒ   s   € ØILr*   c                 ó   — y rP   r)   ra   s     r+   rc   rc   …   s   € ØHKr*   c                ób  — | €t        t        |¬«      S t        | «       t        | t        «      r/| j
                  d   dk(  r| j
                  d   }n6| j
                  }n)t        | t        «      rd| v r| d   }n| S t        | «      } | }t        |«      }|�||kD  rt        j                  ||«      ‚| S )z
    Raise MaxRowsError if the data model has more than max_rows.

    If max_rows is None, then do not perform any check.
    )rX   ÚtypeÚFeatureCollectionÚfeaturesÚvalues)r   rc   Úcheck_data_typer5   r"   r#   r6   r   ÚlenrN   rZ   )rb   rX   ri   Úns       r+   rc   rc   ‡   s´   € ð €|Ü”z¨HÔ5Ð5Ü�DÔä�$Ô,Ô-Ø×!Ñ! &Ñ)Ð-@Ò@Ø×+Ñ+¨JÑ7‰Fà×+Ñ+‰FÜ	�Dœ$Ô	Ø�tÑØ˜(‘^‰FàˆKä*¨4Ó0ˆØˆäˆF‹€AØÐ  H¢Ü×*Ñ*¨1¨hÓ7Ð7à€Kr*   c                 ó   — y rP   r)   ©rb   rl   Úfracs      r+   Úsamplerp   ¨   s   € ð r*   c                 ó   — y rP   r)   rn   s      r+   rp   rp   ¬   s   € ð r*   c                 ó   — y rP   r)   rn   s      r+   rp   rp   °   s   € ð r*   c                ó(  — | €t        t        ||¬«      S t        | «       t        | «      r| j                  ||¬«      S t	        | t
        «      rLd| v rG| d   }|s&|€d}t        |«      ‚t        |t        |«      z  «      }t        j                  ||«      }d|iS yt        j                  | d¬«      } |s&|€d}t        |«      ‚t        |t        | «      z  «      }t        j                  t        t        | «      «      |«      }| |   j                  «       S )zBReduce the size of the data model by sampling without replacement.N)rl   ro   ri   z9frac cannot be None if n is None and data is a dictionaryT©Ú
eager_onlyz:frac cannot be None if n is None with this data input type)r   rp   rj   r   r5   r6   Ú
ValueErrorr\   rk   Úrandomr7   r8   ÚrangeÚ	to_native)rb   rl   ro   ri   rY   Úindicess         r+   rp   rp   ´   s  € ð €|Ü”v ¨Ô.Ð.Ü�DÔÜ˜4Ô Ø�{‰{˜Q Tˆ{Ó*Ð*Ü	�Dœ$Ô	Ø�tÑØ˜(‘^ˆFÙØ�<ØU�CÜ$ S›/Ð)Ü˜œs 6›{Ñ*Ó+�Ü—]‘] 6¨1Ó-ˆFØ˜fÐ%Ð%ð Ü�>‰>˜$¨4Ô0€DÙØˆ<ØNˆCÜ˜S“/Ð!Ü�”s˜4“yÑ Ó!ˆÜ�m‰mœE¤# d£)Ó,¨aÓ0€GØ�‰=×"Ñ"Ó$Ð$r*   )ÚcsvÚjsonc                  ó   — e Zd ZU ded<   y)Ú_FormatDictÚ_FormatTyperf   Nr$   r)   r*   r+   r~   r~   Ù   s   … Ø
Ôr*   r~   c                  ó"   — e Zd ZU ded<   ded<   y)Ú_ToFormatReturnUrlDictr[   Úurlr~   ÚformatNr$   r)   r*   r+   r�   r�   Ý   s   … Ø	ƒHØÔr*   r�   c                 ó   — y rP   r)   ©rb   ÚprefixÚ	extensionÚfilenameÚurlpaths        r+   Úto_jsonrŠ   â   ó   € ð r*   c                 ó   — y rP   r)   r…   s        r+   rŠ   rŠ   ì   ó   € ð !r*   c                óŒ   — t        ||||«      }| €t        t        fi |¤ŽS t        | «      }t	        |fi |¤dt        d¬«      i¤ŽS )zGWrite the data model to a .json file and return a url based data model.rƒ   r|   ©rf   )Ú_to_text_kwdsr   rŠ   Ú_data_to_json_stringÚ_to_textr~   ©rb   r†   r‡   rˆ   r‰   ÚkwdsÚdata_strs          r+   rŠ   rŠ   ö   sM   € ô ˜ ¨H°gÓ>€DØ€|Ü”wÑ' $Ñ'Ð'ä'¨Ó-ˆÜ˜ÑJ DÑJ´À&Ô1IÒJÐJr*   c                 ó   — y rP   r)   r…   s        r+   Úto_csvr—     r‹   r*   c                 ó   — y rP   r)   r…   s        r+   r—   r—     r�   r*   c                óŒ   — t        ||||«      }| €t        t        fi |¤ŽS t        | «      }t	        |fi |¤dt        d¬«      i¤ŽS )zFWrite the data model to a .csv file and return a url based data model.rƒ   r{   r�   )r�   r   r—   Ú_data_to_csv_stringr’   r~   r“   s          r+   r—   r—     sM   € ô ˜ ¨H°gÓ>€DØ€|Ü”vÑ& Ñ&Ð&ä& tÓ,ˆÜ˜ÑI DÑI´À%Ô1HÒIÐIr*   c                ó¾   — t        | «      }|j                  |||¬«      }t        |«      j                  | d¬«       t	        t        ||«      «      }t        ||dœ«      S )N)r†   Úhashr‡   zutf-8)Úencoding)r‚   rƒ   )Ú_compute_data_hashrƒ   r   Ú
write_textr[   r�   )rb   r†   r‡   rˆ   r‰   rƒ   Ú	data_hashr‚   s           r+   r’   r’   *  sZ   € ô # 4Ó(€IØ�‰ f°9È	ˆÓR€HÜˆƒN×Ñ˜d¨WÐÔ5Ü
Œd�7˜HÓ%Ó
&€CÜ!¨#¸Ñ"@ÓAÐAr*   c               ó   — | |||dœS )N©r†   r‡   rˆ   r‰   r)   r¢   s       r+   r�   r�   9  s   € Ø¨9À(ÐW^Ñ_Ð_r*   c                ó¾  — t        | «       t        j                  | d¬«      }t        |t        «      rdt        |«      iS t        |«      rt        |«      }d|j                  d¬«      iS t        |t        «      rd|vrd}t        |«      ‚|S t        | t        j                  «      rt        | «      } d| j                  d¬«      iS dt        | «      › �}t        |«      ‚)	z0Replace a DataFrame by a data model with values.T)r4   ri   Úrecords)Úorientú.values expected in data dict, but not present.©ÚnamedzUnrecognized data type: )rj   r7   ry   r5   r"   Ú_from_geo_interfacer   r   Úto_dictr6   ÚKeyErrorr9   r   Úrowsrf   rv   )rb   Údata_nativerY   s      r+   Ú	to_valuesr®   =  sÒ   € ä�DÔä—,‘,˜t°$Ô7€KÜ�+Ô3Ô4ØÔ-¨kÓ:Ð;Ð;Ü	˜[Ô	)Ü/°Ó<ˆØ˜+×-Ñ-°YÐ-Ó?Ð@Ð@Ü	�K¤Ô	&Ø˜;Ñ&ØBˆCÜ˜3“-ÐØÐÜ	�Dœ"Ÿ,™,Ô	'Ü*¨4Ó0ˆØ˜$Ÿ)™)¨$˜)Ó/Ð0Ð0ð )¬¨d«¨Ð5ˆÜ˜‹oÐr*   c                óL   — t        | «      sdt        | «      › �}t        |«      ‚y )Nz@Expected dict, DataFrame or a __geo_interface__ attribute, got: )r;   rf   Ú	TypeError)rb   rY   s     r+   rj   rj   U  s-   € Ü˜ÔØPÔQUÐVZÓQ[ÐP\Ð]ˆÜ˜‹nÐð r*   c                ój   — t        j                  | j                  «       «      j                  «       d d S )Né    )ÚhashlibÚsha256ÚencodeÚ	hexdigest)r•   s    r+   rž   rž   ^  s(   € Ü�>‰>˜(Ÿ/™/Ó+Ó,×6Ñ6Ó8¸¸"Ð=Ð=r*   c                ó\   — t        | «      rt        | «      n| }t        |j                  «      S )zÖ
    Sanitize a ``__geo_interface__`` w/ pre-sanitize step for ``pandas`` if needed.

    Introduces an intersection type::

        geo: <subclass of SupportsGeoInterface and DataFrame> | SupportsGeoInterface
    )r   r   r   r#   )rb   Úgeos     r+   r©   r©   b  s*   € ô .AÀÔ-FÔ
# DÔ
)ÈD€CÜ! #×"7Ñ"7Ó8Ð8r*   c                ó
  — t        | «       t        | t        «      rt        j                  t        | «      «      S t        | «      rt        | «      } | j                  dd¬«      S t        | t        «      r+d| vrd}t        |«      ‚t        j                  | d   d¬«      S 	 t        j                  | d¬«      }t        |«      }t        j                  |j!                  d¬«      «      S # t        $ r}d	}t        |«      |‚d
}~ww xY w)z6Return a JSON string representation of the input data.r¤   é   )r¥   Údouble_precisionri   r¦   T)Ú	sort_keysrt   zBto_json only works with data expressed as a DataFrame or as a dictNr§   )rj   r5   r"   r|   Údumpsr©   r   r   rŠ   r6   r«   r7   r8   r°   ÚNotImplementedErrorr   r¬   )rb   rY   Údata_nwÚexcs       r+   r‘   r‘   n  sä   € ä�DÔÜ�$Ô,Ô-Ü�z‰zÔ-¨dÓ3Ó4Ð4Ü	˜TÔ	"Ü(¨Ó.ˆØ�|‰| 9¸rˆ|ÓBÐBÜ	�Dœ$Ô	Ø˜4ÑØBˆCÜ˜3“-ÐÜ�z‰z˜$˜x™.°DÔ9Ð9ð0Ü—.‘. °$Ô7ˆô *¨'Ó2€GÜ�:‰:�g—l‘l¨�lÓ.Ó/Ð/øô	 ò 0ØRˆÜ! #Ó&¨CÐ/ûð0ús   ÂC& Ã&	DÃ/C=Ã=Dc                óL  — t        | «       t        | t        «      r(dt        t        «      j                  ›d�}t        |«      ‚t        | «      rt        | «      } | j                  d¬«      S t        | t        «      rDd| vrd}t        |«      ‚	 ddl}|j                  j                  | d   «      j                  d¬«      S 	 t        j                   | d
¬«      }|j%                  «       S # t        $ r}d	}t        |«      |‚d}~ww xY w# t"        $ r}d}t        |«      |‚d}~ww xY w)z5Return a CSV string representation of the input data.z3to_csv does not yet work with data that is of type z0.
See https://github.com/vega/altair/issues/3441F)Úindexri   z-values expected in data dict, but not presentr   Nz4pandas is required to convert a dict to a CSV stringTrt   zAto_csv only works with data expressed as a DataFrame or as a dict)rj   r5   r"   rf   r%   r¾   r   r   r—   r6   r«   ÚpandasÚImportErrorr9   Ú	from_dictr7   r8   r°   Ú	write_csv)rb   rY   ÚpdrÀ   r¿   s        r+   rš   rš   „  s+  € ä�DÔÜ�$Ô,Ô-ðÜÔ3Ó4×=Ñ=Ð@ð A=ð>ð 	ô
 " #Ó&Ð&Ü	˜TÔ	"Ü(¨Ó.ˆØ�{‰{ ˆ{Ó'Ð'Ü	�Dœ$Ô	Ø˜4ÑØAˆCÜ˜3“-Ðð	,Ûð �|‰|×%Ñ% d¨8¡nÓ5×<Ñ<À5Ð<ÓIÐIð0Ü—.‘. °$Ô7ˆð ×ÑÓÐøô ò 	,ØHˆCÜ˜cÓ"¨Ð+ûð	,ûô ò 0ØQˆÜ! #Ó&¨CÐ/ûð0ús0   ÂC( ÃD Ã(	DÃ1C?Ã?DÄ	D#ÄDÄD#c                óÂ   — ddl }dD ]<  }t        | |d«      }t        |«      sŒ |«       }t        ||j                  «      sŒ:|c S  t        «       }|j                  | «      S )zMConvert a DataFrame Interchange Protocol compatible object to an Arrow Table.r   N)ÚarrowÚto_arrowÚto_arrow_tableÚ
to_pyarrow)ÚpyarrowÚgetattrÚcallabler5   ÚTabler   Úfrom_dataframe)Údfi_dfÚpaÚconvert_method_nameÚconvert_methodÚresultÚpis         r+   Úarrow_table_from_dfi_dataframerØ   £  se   € ãð  Uò ÐÜ  Ð)<¸dÓCˆÜ�NÕ#Ù#Ó%ˆFÜ˜& "§(¡(Õ+Ø’ðô 
$Ó	%€BØ×Ñ˜VÓ$Ð$r*   )r:   r
   rH   zTypeIs[DataType])..)rb   rJ   rX   ú
int | NonerH   r   ).)rb   r,   rX   rÙ   rH   r,   )Niˆ  )rb   úDataType | NonerX   rÙ   rH   zpartial | DataType)...)rb   rJ   rl   rÙ   ro   úfloat | NonerH   r   )rb   r/   rl   rÙ   ro   rÛ   rH   r/   )rb   r,   rl   rÙ   ro   rÛ   rH   ÚSampleReturnType)NNN)rb   rÚ   rl   rÙ   ro   rÛ   rH   zpartial | SampleReturnType).....)rb   rJ   r†   r[   r‡   r[   rˆ   r[   r‰   r[   rH   r   )....)rb   r,   r†   r[   r‡   r[   rˆ   r[   r‰   r[   rH   r�   )Núaltair-datar|   ú{prefix}-{hash}.{extension}Ú )rb   rÚ   r†   r[   r‡   r[   rˆ   r[   r‰   r[   rH   ú partial | _ToFormatReturnUrlDict)rb   z#dict | pd.DataFrame | DataFrameLiker†   r[   r‡   r[   rˆ   r[   r‰   r[   rH   r�   )NrÝ   r{   rÞ   rß   )rb   z*dict | pd.DataFrame | DataFrameLike | Noner†   r[   r‡   r[   rˆ   r[   r‰   r[   rH   rà   )rb   r[   r†   r[   r‡   r[   rˆ   r[   r‰   r[   rƒ   r~   rH   r�   )
r†   r[   r‡   r[   rˆ   r[   r‰   r[   rH   zdict[str, str])rb   r,   rH   r1   )rb   r,   rH   rJ   )r•   r[   rH   r[   )rb   r"   rH   zdict[str, Any])rb   r,   rH   r[   )rÒ   r   rH   zpa.Table)UÚ
__future__r   r³   r|   rw   ÚsysÚcollections.abcr   r   r   Ú	functoolsr   Úpathlibr   Útypingr	   r
   r   r   r   r   r   r   Únarwhals.stable.v1ÚstableÚv1r7   Únarwhals.stable.v1.dependenciesr   Únarwhals.stable.v1.typingr   Ú
_importersr   Úcorer   r   r   r   r   Úplugin_registryr   Úversion_infor   r   Útyping_extensionsr   r    rÃ   rÇ   rÍ   rÓ   r"   r6   r,   r(   r-   r/   r[   Úlistr0   r1   rÜ   r;   r<   r=   ÚDataTransformerTyper?   Ú	ExceptionrN   rc   rp   r   r~   r�   rŠ   r—   r’   r�   r®   rj   rž   r©   r‘   rš   rØ   r)   r*   r+   ú<module>rô      s…  ðÞ "ã Û Û Û 
ß >Ñ >Ý Ý ÷	÷ 	ó 	÷  Ð Ý ?Ý 3å 2÷õ õ ,à×Ñ�wÒß2Ð2ç=áØ
×Ñ˜7Ò"Þ!å,å ãÛð ô&˜8ó &ó ð&ð
 	ˆˆcˆ�N�]Ñ"Ð%9Ñ9¸MÑIð 	ˆ)ó ñ �K xÔ0€	ÙÐ)°Ô?€à" 3¨¨d°3¸°8©nÑ(<¸tÀDÈÈcÈÁNÑ?SÑ(SÐ#SÑTÐ �)Ó TØ $ S¨$¨s°C¨x©.¸4ÀÀSÈ#ÀXÁÑ;OÑ*OÐ%OÑ PÐ �IÓ PØ  4¨¨X¨Ñ#6Ñ6¸Ñ=Ð óñ& ˆcƒN€áˆCÐ! 3Ó'€Ø˜{¨8°Q¨;Ñ7¸Ð:Ñ;Ð ô	>˜nÐ-@À!Ð-CÑDô 	>ô�9ô ð0 
Û Ló 
Ø LØ	Û Kó 
Ø Kà9=ðØ
ðØ,6ðàóðB 
à@CðØ
ðØ#ðØ1=ðàòó 
ðð 
àDGðØ
ðØ'ðØ5Aðàòó 
ðð 
à>AðØ
ðØ!ðØ/;ðàòó 
ðð !ØØð%Ø
ð%àð%ð ð%ð  ó	%ðD �mÑ$€ô�)ô ô˜Yô ð
 
àØØØØðØ
ðàðð ðð ð	ð
 ðð òó 
ðð 
ð ØØØð!Ø
ð!àð!ð ð!ð ð	!ð
 ð!ð ò!ó 
ð!ð !ØØØ1ØðKØ
ðKàðKð ðKð ð	Kð
 ðKð &óKð  
àØØØØðØ
ðàðð ðð ð	ð
 ðð òó 
ðð 
ð ØØØð!Ø
-ð!àð!ð ð!ð ð	!ð
 ð!ð ò!ó 
ð!ð 8<ØØØ1ØðJØ
4ðJàðJð ðJð ð	Jð
 ðJð &óJð BØ
ðBàðBð ðBð ð	Bð
 ðBð ðBð óBó`óó0ó>ó	9ó0ó,ô>%r*   