Ë
    úmxi)=  ã                  óh  — d Z ddlmZ ddlZddlmZ ddl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mZmZmZ ddlmZ ddlmZ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&m'Z' ddl(m)Z) ejT                  dk\  rddlm+Z+ nddl,m+Z+ ejT                  dk\  rddlm-Z- nddl,m-Z- er2ddl.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7Z8ddl9Z:ddl;Z<ddl=mZ> ddlm?Z?m@Z@ g d¢ZA e+ddd¬«      ZB e+ddej†                  e   ¬ «      ZD e-d!d"ef¬#«      ZE	  e-d$d%eDf¬#«      ZF	  G d&„ d'e«      ZG G d(„ d)eeB   «      ZH	 dA	 	 	 	 	 	 	 	 	 dBd*„ZI	 dA	 	 	 	 	 	 	 	 	 dCd+„ZJdDd,„ZKdd-œ	 	 	 	 	 	 	 dEd.„ZLdFd/„ZMdGd0„ZNdHd1„ZOdId2„ZPdId3„ZQdJd4„ZRdKd5„ZSdLd6„ZTdMd7„ZUdd8œ	 	 	 	 	 	 	 dNd9„ZVdOd:„ZWdPd;„ZXdPd<„ZYdQd=„ZZdOd>„Z[dRd?„Z\dSd@„Z]y)Tz5Individual read functions and siuations they support.é    )ÚannotationsN)ÚEnum)ÚpartialÚwraps©Ú	find_spec)Úchain)Ú
itemgetter)ÚPath)ÚTYPE_CHECKINGÚAnyÚGenericÚLiteral)Úv1)Ú
get_pandasÚ
get_polars)ÚIntoDataFrameT)	Úis_arrowÚis_csvÚis_jsonÚis_metaÚis_not_tabularÚ
is_parquetÚ
is_spatialÚis_topoÚis_tsv)ÚAltairDatasetsError)é   é   )ÚTypeVar)r   é   )ÚTypeAliasType)ÚCallableÚIterableÚIteratorÚSequence)ÚIOBase)Ú
ModuleType)Útyping)ÚItemsÚMetaIs)Úis_availableÚpa_anyÚpd_onlyÚ
pd_pyarrowÚpl_onlyÚreadÚscanÚRznwt.IntoFrameT)ÚboundÚ	covariantÚ
IntoFrameTzKnwt.NativeFrame | nw.DataFrame[Any] | nw.LazyFrame[Any] | nwt.DataFrameLike)r4   ÚdefaultÚReadzBaseImpl[IntoDataFrameT])Útype_paramsÚScanzBaseImpl[IntoFrameT]c                  ó$   — e Zd ZdZdZdd„Zdd„Zy)ÚSkipzFalsy sentinel.r   c                 ó   — y)NF© ©Úselfs    úP/home/htdocs/ttos/venv/lib/python3.12/site-packages/altair/datasets/_readimpl.pyÚ__bool__zSkip.__bool__H   s   € Øó    c                 ó   — y)Nz<Skip>r>   r?   s    rA   Ú__repr__zSkip.__repr__K   s   € ØrC   N)ÚreturnzLiteral[False])rF   zLiteral['<Skip>'])Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚskiprB   rE   r>   rC   rA   r<   r<   C   s   „ Ùà€DóôrC   r<   c                  óÔ   — e Zd ZU dZded<   	 ded<   	 ded<   	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 dd„Zedd	„«       Zdd
„Z	e
dd„«       Zdd„Zdd„Ze
dd„«       Ze
dd„«       Ze
dd„«       Zy)ÚBaseImplaí  
    A function wrapped with dataset support constraints.

    The ``include``, ``exclude`` properties form a `NIMPLY gate`_ (`Material nonimplication`_).

    Examples
    --------
    For some dataset ``D``, we can use ``fn`` if::

        impl: BaseImpl
        impl.include(D) and not impl.exclude(D)


    .. _NIMPLY gate:
        https://en.m.wikipedia.org/wiki/NIMPLY_gate
    .. _Material nonimplication:
        https://en.m.wikipedia.org/wiki/Material_nonimplication#Truth_table
    úCallable[..., R]Úfnr+   ÚincludeÚexcludec          	     óV  — |xs | j                  «       }|j                  |«      s1dj                  d„ ||z  D «       «      }d|› d|›d|›�}t        |«      ‚t        j                  | d|rt        |fi |¤Žn|«       t        j                  | d|«       t        j                  | d|«       y )	Nú, c              3  ó0   K  — | ]  \  }}|› d |›�–— Œ y­w©ú=Nr>   ©Ú.0ÚkÚvs      rA   ú	<genexpr>z$BaseImpl.__init__.<locals>.<genexpr>v   s   è ø€ Ò$P±d°a¸¨ s¨!¨A¨5¤\Ñ$Pùó   ‚zConstraints overlap at: `z
`
include=z	
exclude=rO   rP   rQ   )Ú_exclude_noneÚ
isdisjointÚjoinÚ	TypeErrorÚobjectÚ__setattr__r   )r@   rO   rP   rQ   ÚkwdsÚintersectionÚmsgs          rA   Ú__init__zBaseImpl.__init__l   s§   € ð Ò1˜T×/Ñ/Ó1ˆØ×!Ñ! 'Ô*ØŸ9™9Ñ$P¸gÈÑ>OÔ$PÓPˆLØ-¨l¨^¸;ÀwÀkÐQ[Ð\cÐ[fÐgˆCÜ˜C“.Ð Ü×Ñ˜4 ¹d¤w¨rÑ':°TÒ':ÈÔKÜ×Ñ˜4 ¨GÔ4Ü×Ñ˜4 ¨GÕ4rC   c               ó²   — | j                   j                  |«      r-| j                  j                  |«      r| j                  S t
        S t        j                  S )a<  
        Indicate an action to take for a dataset.

        **Supports** dataset, use this function::

            Callable[..., R]

        Has explicitly marked as **not supported**::

            type[AltairDatasetsError]

        No relevant constraints overlap, safe to check others::

            Skip
        )rP   ÚissubsetrQ   r^   rO   r   r<   rK   )r@   Úmetas     rA   Úunwrap_or_skipzBaseImpl.unwrap_or_skip}   sA   € ð$ �<‰<× Ñ  Ô&Ø"Ÿl™l×5Ñ5°dÔ;�4—7‘7ÐTÔATÐTÜ�y‰yÐrC   c                ó   — t        «       S )zRepresents the empty set.)r   )Úclss    rA   r]   zBaseImpl._exclude_none“   s   € ô ‹yÐrC   c                óR   — t        | «      j                  ›d|› d|› �}t        |«      ‚)Nz% is immutable.
Could not assign self.z = )ÚtyperG   r`   )r@   ÚnameÚvaluere   s       rA   rb   zBaseImpl.__setattr__˜   s8   € ä�D‹z×"Ñ"Ð%ð &%Ø%) F¨#¨e¨Wð6ð 	ô ˜‹nÐrC   c                ó@   — t        t        | j                  «      d«      S )NÚUNKNOWN)Ú_root_package_nameÚ_unwrap_partialrO   r?   s    rA   Ú_inferred_packagezBaseImpl._inferred_packageŸ   s   € ä!¤/°$·'±'Ó":¸IÓFÐFrC   c                ó\   — t        | «      j                  › d| j                  › d�}|› d| › d�S )Nú[z?]ú(ú))rn   rG   ru   )r@   Útp_names     rA   rE   zBaseImpl.__repr__£   s9   € Ü˜$“Z×(Ñ(Ð)¨¨4×+AÑ+AÐ*BÀ"ÐEˆØ�˜!˜D˜6 Ð#Ð#rC   c                ó”  — t        | j                  t        «      rbt        | j                  «      }| j                  j                  j                  «       }|j                  › ddj                  d„ |D «       «      › d�}n| j                  j                  › d�}| j                  | j                  }}|› d|r
d|›d|›�› �S t        |«      › �S )Nz(..., rS   c              3  ó0   K  — | ]  \  }}|› d |›�–— Œ y­wrU   r>   rW   s      rA   r[   z#BaseImpl.__str__.<locals>.<genexpr>«   s   è ø€ Ò5TÁtÀqÈ!¸¸¸1¸Q¸E´lÑ5Tùr\   ry   z(...)zinclude=z
, exclude=)Ú
isinstancerO   r   rt   ÚkeywordsÚitemsrG   r_   rP   rQ   Úrepr)r@   rO   rc   Úfn_reprÚincÚexcs         rA   Ú__str__zBaseImpl.__str__§   s¶   € Ü�d—g‘gœwÔ'Ü  §¡Ó)ˆBØ—7‘7×#Ñ#×)Ñ)Ó+ˆDØŸ™˜ V¨D¯I©IÑ5TÈtÔ5TÓ,TÐ+UÐUVÐW‰GàŸ™×)Ñ)Ð*¨%Ð0ˆGØ—<‘< §¡ˆSˆØ�˜"ÁC˜x¨ w¨j¸¸Ð@ÐWÐXÐXÌTÐRUËYÐWÐXÐXrC   c              #  óŠ   ‡K  — t        d«      Šˆfd„t        | j                  | j                  «      D «       E d {  –—†  y 7 Œ­w)Nr   c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­w©Nr>   )rX   Úobjro   s     €rA   r[   z-BaseImpl._relevant_columns.<locals>.<genexpr>´   s   øè ø€ ÒK #‘D˜—IÑKùs   ƒ)r
   r	   rP   rQ   )r@   ro   s    @rA   Ú_relevant_columnszBaseImpl._relevant_columns±   s-   øè ø€ ä˜!‹}ˆÛK¬¨t¯|©|¸T¿\¹\Ó)JÔK×KÒKús   ƒ8A»A¼Ac                óº   — | j                   r6| j                  j                  «       | j                   j                  «        z  S | j                  j                  «       S r‡   )rQ   rP   Úto_exprr?   s    rA   Ú_include_exprzBaseImpl._include_expr¶   sN   € ð �|Š|ð �L‰L× Ñ Ó" d§l¡l×&:Ñ&:Ó&<Ð%<Ñ<ð	
ð —‘×%Ñ%Ó'ð	
rC   c                ó¤   — | j                   r5| j                  j                  «       | j                   j                  «       z  S d| ›�}t        |«      ‚)NzBUnable to generate an exclude expression without setting exclude

)rQ   rP   r‹   r`   )r@   re   s     rA   Ú_exclude_exprzBaseImpl._exclude_expr¾   sF   € à�<Š<Ø—<‘<×'Ñ'Ó)¨D¯L©L×,@Ñ,@Ó,BÑBÐBØTÐUYÐT\Ð]ˆÜ˜‹nÐrC   N)
rO   rN   rP   r+   rQ   úMetaIs | Nonerc   zdict[str, Any]rF   ÚNone)ri   r*   rF   z3Callable[..., R] | type[AltairDatasetsError] | Skip)rF   r+   )ro   Ústrrp   r   )rF   r‘   )rF   zIterator[str])rF   znw.Expr)rG   rH   rI   rJ   Ú__annotations__rf   rj   Úclassmethodr]   rb   Úpropertyru   rE   r„   r‰   rŒ   rŽ   r>   rC   rA   rM   rM   O   sä   … ñð& 	ÓØ%àƒOØFàƒOØFð5àð5ð ð5ð ð	5ð
 ð5ð 
ó5ð"Øðà	<óð, òó ðóð òGó ðGó$óYð òLó ðLð ò
ó ð
ð òó ñrC   rM   c               ó   — t        | |||«      S r‡   ©rM   ©rO   rP   rQ   rc   s       rA   r1   r1   Æ   ó   € ô �B˜ ¨$Ó/Ð/rC   c               ó   — t        | |||«      S r‡   r–   r—   s       rA   r2   r2   Ð   r˜   rC   c               ót   — 	 	 	 	 dd„}t         || j                  «      | j                  | j                  «      S )Nc               óB   ‡ — t        t        ‰ «      «      dˆ fd„«       }|S )Nc                 óV   •— t        j                   ‰| i |¤Ž«      j                  «       S r‡   )ÚnwÚfrom_nativeÚlazy)Úargsrc   rO   s     €rA   Úwrapperz+into_scan.<locals>.scan_fn.<locals>.wrapperÞ   s%   ø€ ä—>‘>¡" dÐ"3¨dÑ"3Ó4×9Ñ9Ó;Ð;rC   )r    r   rc   r   rF   znw.LazyFrame[IntoDataFrameT])r   rt   )rO   r¡   s   ` rA   Úscan_fnzinto_scan.<locals>.scan_fnÛ   s(   ø€ ô 
Œ˜rÓ"Ó	#ô	<ó 
$ð	<ð ˆrC   )rO   úCallable[..., IntoDataFrameT]rF   z+Callable[..., nw.LazyFrame[IntoDataFrameT]])r2   rO   rP   rQ   )Úimplr¢   s     rA   Ú	into_scanr¥   Ú   s9   € ðØ)ðà	4óô ‘˜Ÿ™Ó  $§,¡,°·±Ó=Ð=rC   )Úrequire_allc               ó¼   — |st        | t        «      rt        | «      duS t        | t        «      s| n| f}t        ||«      }|rt        nt
        } |d„ |D «       «      S )zý
    Check for importable package(s), without raising on failure.

    Parameters
    ----------
    pkg_names, more_pkg_names
        One or more packages.
    require_all
        * ``True`` every package.
        * ``False`` at least one package.
    Nc              3  ó6   K  — | ]  }t        |«      d u–— Œ y ­wr‡   r   )rX   ro   s     rA   r[   zis_available.<locals>.<genexpr>ú   s   è ø€ Ò<¨dŒi˜‹o TÔ)Ñ<ùs   ‚)r}   r‘   r   r	   ÚallÚany)Ú	pkg_namesr¦   Úmore_pkg_namesÚ
pkgs_namesÚnamesrO   s         rA   r,   r,   ç   sX   € ñ œj¨´CÔ8Ü˜Ó#¨4Ð/Ð/Ü",¨Y¼Ô"<‘À9À,€JÜ�*˜nÓ-€EÙ�¤€BÙÑ<°eÔ<Ó<Ð<rC   c               ó¾   — t        | d«      r| j                  j                  d«      d   S ddlm}  || «      }|r"|j
                  x}r|j                  d«      d   S |S )NrH   ú.r   )Ú	getmodule)ÚhasattrrH   ÚsplitÚinspectr±   Ú__package__)rˆ   r7   r±   ÚmoduleÚpkgs        rA   rs   rs   ý   s]   € äˆs�LÔ!Ø�~‰~×#Ñ# CÓ(¨Ñ+Ð+å%á˜3“ˆÙ˜&×,Ñ,Ð,�3Ð,Ø�y‰y˜‹~˜aÑ Ð Ø€NrC   c               ód   — | }t        |t        «      r|j                  }t        |t        «      rŒ|S r‡   )r}   r   Úfunc)rO   r¹   s     rA   rt   rt   
  s+   € à€DÜ
�Tœ7Ô
#Ø�y‰yˆô �Tœ7Õ
#à€KrC   c                 ó´  — dd l } t        t        t        «       «      t        «      }t        d«      rt        «       t        «       |f}n|f}t        | j                  t        d¬«      g|¢t        | j                  t        dd¬«      ‘t        | j                  t        «      ‘t        | j                  t        «      ‘­}t        | j                   t        «      f}||fS )Nr   Ú	polars_stT)Útry_parse_datesú	)Ú	separatorr¼   )Úpolarsr1   Ú_pl_read_json_roundtripr   r   r,   Ú!_pl_read_json_polars_st_topo_implÚ_pl_read_json_polars_st_implÚread_csvr   r   Úread_ipcr   Úread_parquetr   r2   Úscan_parquet)ÚplÚpl_read_jsonÚfn_jsonÚread_fnsÚscan_fnss        rA   r0   r0     sÄ   € ÛäÔ/´
³Ó=¼wÓG€LÜ�KÔ ä-Ó/Ü(Ó*Øð1
‰ð  �/ˆô 	ˆR�[‰[œ&°$Ô7ðà	ðô 	ˆR�[‰[œ&¨DÀ$ÔGðô 	ˆR�[‰[œ(Ó#ð	ô
 	ˆR�_‰_œjÓ)ñ€Hô �R—_‘_¤jÓ1Ð3€HØ�XÐÐrC   c                 óØ  — dd l } t        d«      r5t        | j                  t        «      t        | j
                  t        «      f}n)t        d«      rt        | j
                  t        «      f}nd}t        t        t        «       «      t        t        ¬«      }t        d«      rt        «       |f}n|f}t        | j                  t        «      g|¢t        | j                  t        d¬«      ‘|¢­S )	Nr   ÚpyarrowÚfastparquetr>   ©rQ   Ú	geopandasr½   )Úsep)Úpandasr,   r1   Úread_featherr   rÅ   r   Ú_pd_read_jsonr   r   r   Ú_pd_read_json_geopandas_implrÃ   r   r   )ÚpdÚoptÚpd_read_jsonrÉ   s       rA   r.   r.   *  sÆ   € Ûô �IÔÜ�2—?‘?¤HÓ-¬t°B·O±OÄZÓ/PÐP‰Ü	�mÔ	$Ü�B—O‘O¤ZÓ0Ð2‰àˆÜœ¤j£lÓ3´WÄjÔQ€LÜ�KÔ ä(Ó*Øð1
‰ð
  �/ˆäˆR�[‰[œ&Ó!ðà	ðô 	ˆR�[‰[œ& dÔ+ðð 
ñ	ð rC   c                 ó|  — dd l } ddi}t        t        t        «       «      t        fdt
        i|¤Ž}t        d«      rt        «       |f}n|f}t        | j                  t        fi |¤Žg|¢t        | j                  t        fddi|¤Ž‘t        | j                  t        fi |¤Ž‘t        | j                  t        fi |¤Ž‘­S )Nr   Údtype_backendrÍ   rQ   rÐ   rÑ   r½   )rÒ   r1   rÔ   r   r   r   r,   rÕ   rÃ   r   r   rÓ   r   rÅ   r   )rÖ   rc   rØ   rÉ   s       rA   r/   r/   D  sÐ   € Ûà+¨YÐ7€DÜÜ”j“lÓ#¤WñÜ6@ðØDHñ€Lô �KÔ ä(Ó*Øð1
‰ð
  �/ˆäˆR�[‰[œ&Ñ) DÑ)ðà	ðô 	ˆR�[‰[œ&Ñ3 dÐ3¨dÑ3ðô 	ˆR�_‰_œhÑ/¨$Ñ/ð	ô
 	ˆR�_‰_œjÑ1¨DÑ1ñð rC   c            	     ó  — ddl m} m}m} t	        | j
                  t        «      t        «       t	        | j
                  t        | j                  d¬«      ¬«      t	        |j                  t        «      t	        |j                  t        «      fS )Nr   ©ÚcsvÚfeatherÚparquetr½   )Ú	delimiter)Úparse_options)rÍ   rÝ   rÞ   rß   r1   rÃ   r   Ú_pa_read_json_implr   ÚParseOptionsÚ
read_tabler   r   rÜ   s      rA   r-   r-   [  sf   € ß-Ñ-ô 	ˆS�\‰\œ6Ó"ÜÓÜˆS�\‰\œ6°×1AÑ1AÈDÐ1AÓ1QÔRÜˆW×Ñ¤Ó*ÜˆW×Ñ¤Ó,ðð rC   c                 ó  — t        d«      r%t        «       } | �t        t        | «      t        «      S t        d«      r+t        «       }|�t        t        |«      t        t        ¬«      S t        t        t        t        ¬«      S )z©
    Mitigating ``pyarrow``'s `line-delimited`_ JSON requirement.

    .. _line-delimited:
        https://arrow.apache.org/docs/python/json.html#reading-json-files
    r¿   rÒ   rÏ   )
r,   r   r1   Ú _pl_read_json_roundtrip_to_arrowr   r   Ú_pd_read_json_to_arrowr   Ú_stdlib_read_json_to_arrowr   )Ú	polars_nsÚ	pandas_nss     rA   râ   râ   g  sf   € ô �HÔÜ“Lˆ	ØÐ ÜÔ8¸ÓCÄWÓMÐMÜ�HÔÜ“Lˆ	ØÐ ÜÔ.¨yÓ9¼7ÌJÔWÐWÜÔ*¬G¼^ÔLÐLrC   c               óD   ‡ — t        ‰ j                  «      dˆ fd„«       }|S )Nc               óZ   •— t         ‰j                  | fi |¤Žfi |¤Žj                  «       S r‡   )Ú_pd_fix_dtypes_nwÚ	read_jsonÚ	to_native)Úsourcerc   Únss     €rA   rO   z_pd_read_json.<locals>.fnz  s,   ø€ ä   §¡¨fÑ!=¸Ñ!=ÑFÀÑF×PÑPÓRÐRrC   )rð   ú
Path | Anyrc   r   rF   úpd.DataFrame©r   rî   ©rñ   rO   s   ` rA   rÔ   rÔ   y  s'   ø€ Ü
ˆ2�<‰<ÓôSó ðSð €IrC   c                 óx   ‡— dd l Št        ‰j                  «      ddˆfd„«       } t        | t	        dd¬«      «      S )Nr   c               ó*   •—  ‰j                   | fi |¤ŽS r‡   ©Ú	read_file)rð   Úschemarc   rÐ   s      €rA   rO   z(_pd_read_json_geopandas_impl.<locals>.fn„  s   ø€ à"ˆy×"Ñ" 6Ñ2¨TÑ2Ð2rC   Tú.json©r   Úsuffixr‡   )rú   r   rð   rò   rc   r   rF   ró   )rÐ   r   rù   r1   r   )rO   rÐ   s    @rA   rÕ   rÕ   �  s9   ø€ Ûä
ˆ9×ÑÓõ3ó  ð3ô �”G t°GÔ<Ó=Ð=rC   ©rÚ   c              ó"  — |rd|ini } | j                   di |¤Žj                  t        j                  d¬«      j	                  t        j
                  j                  t        j                  «      j                  t        j                  «      «      S )NrÚ   T)Ú
eager_onlyr>   )
Úconvert_dtypesÚpiper�   rž   Úwith_columnsÚ	selectorsÚby_dtypeÚObjectÚcastÚString)ÚdfrÚ   rc   s      rA   rí   rí   ‹  sh   € ñ 0=ˆO˜]Ñ+À"€Dàˆ×ÑÑ!˜DÑ!ß	‰Œb�n‰n¨ˆÓ	.ß	‰”b—l‘l×+Ñ+¬B¯I©IÓ6×;Ñ;¼B¿I¹IÓFÓ	GðrC   c               óJ   ‡ — t        ‰ j                  «      d dœdˆ fd„«       }|S )N)rú   c              óp   •—  ‰j                   | fi |¤Žj                  t        d¬«      j                  «       S )z?``schema`` is only here to swallow the ``SchemaCache`` if used.rÍ   rþ   )rî   r  rí   Úto_arrow)rð   rú   rc   rñ   s      €rA   rO   z"_pd_read_json_to_arrow.<locals>.fn—  s3   ø€ ð ˆB�L‰L˜Ñ( 4Ñ(ß‰TÔ#°9ˆTÓ=ß‰X‹Zð	
rC   )rð   rò   rú   r   rc   r   rF   úpa.Tablerô   rõ   s   ` rA   rç   rç   –  s(   ø€ Ü
ˆ2�<‰<ÓØ37ö 
ó ð
ð €IrC   c                 óx   ‡— dd l Št        ‰j                  «      ddˆfd„«       } t        | t	        dd¬«      «      S )Nr   c               ó*   •—  ‰j                   | fi |¤ŽS r‡   rø   ©rð   rú   rc   Ústs      €rA   rO   z(_pl_read_json_polars_st_impl.<locals>.fn¦  s   ø€ àˆr�|‰|˜FÑ+ dÑ+Ð+rC   Trû   rü   r‡   ©rú   r   rð   rò   rc   r   rF   úpl.DataFrame)r»   r   rù   r1   r   ©rO   r  s    @rA   rÂ   rÂ   £  s7   ø€ Ûä
ˆ2�<‰<Óõ,ó ð,ô �”G t°GÔ<Ó=Ð=rC   c                 ój   ‡— dd l Št        ‰j                  «      ddˆfd„«       } t        | t        «      S )Nr   c               óv   •— t        | t        «      r| j                  d«      rd| › �}  ‰j                  | fi |¤ŽS )NÚhttpz	TopoJSON:)r}   r‘   Ú
startswithrù   r  s      €rA   rO   z-_pl_read_json_polars_st_topo_impl.<locals>.fn°  s>   ø€ ô �fœcÔ" v×'8Ñ'8¸Ô'@Ø   Ð)ˆFØˆr�|‰|˜FÑ+ dÑ+Ð+rC   r‡   r  )r»   r   rù   r1   r   r  s    @rA   rÁ   rÁ   ­  s0   ø€ Ûä
ˆ2�<‰<Óõ,ó ð,ô �”GÓÐrC   c               óT   ‡ ‡— ddl mŠ t        ‰ j                  «      dˆˆ fd„«       }|S )a+  
    Try to utilize better date parsing available in `pl.read_csv`_.

    `pl.read_json`_ has few options when compared to `pl.read_csv`_.

    Chaining the two together - *where possible* - is still usually faster than `pandas.read_json`_.

    .. _pl.read_json:
        https://docs.pola.rs/api/python/stable/reference/api/polars.read_json.html
    .. _pl.read_csv:
        https://docs.pola.rs/api/python/stable/reference/api/polars.read_csv.html
    .. _pandas.read_json:
        https://pandas.pydata.org/docs/reference/api/pandas.read_json.html
    r   )ÚBytesIOc               óD  •—  ‰j                   | fi |¤Ž}t        d„ |j                  j                  «       D «       «      r|S  ‰«       }|j	                  |«       |r,h d£}|j                  «       D ��ci c]  \  }}||v sŒ||“Œ }}} ‰j                  |fddi|¤ŽS c c}}w )Nc              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wr‡   )Ú	is_nested)rX   Útps     rA   r[   z6_pl_read_json_roundtrip.<locals>.fn.<locals>.<genexpr>Î  s   è ø€ Ò; "ˆr�|‰|�~Ñ;ùs   ‚>   rú   Úschema_overridesÚinfer_schema_lengthr¼   T)rî   rª   rú   ÚdtypesÚ	write_csvr   rÃ   )	rð   rc   r	  ÚbufÚSHARED_KWDSrY   rZ   r  rñ   s	          €€rA   rO   z#_pl_read_json_roundtrip.<locals>.fnË  sœ   ø€ àˆR�\‰\˜&Ñ) DÑ)ˆÜÑ;¨¯	©	×(8Ñ(8Ó(:Ô;Ô;ØˆIÙ‹iˆØ
�‰�SÔÙÚOˆKØ%)§Z¡Z£\×F™T˜Q °Q¸+Ò5E�A�q‘DÐFˆDÑFØˆr�{‰{˜3Ñ=°Ð=¸Ñ=Ð=ùó Gs   Á2BÁ?B)rð   úPath | IOBaserc   r   rF   r  )Úior  r   rî   )rñ   rO   r  s   ` @rA   rÀ   rÀ   º  s*   ù€ õ ä
ˆ2�<‰<Óõ	>ó ð	>ð €IrC   c               óZ   ‡— t        | «      Št        | j                  «      dˆfd„«       }|S )Nc               ó0   •—  ‰| «      j                  «       S r‡   )r  )rð   rc   Úeagers     €rA   rO   z,_pl_read_json_roundtrip_to_arrow.<locals>.fnÝ  s   ø€ á�V‹}×%Ñ%Ó'Ð'rC   )rð   r%  rc   r   rF   r  )rÀ   r   rî   )rñ   rO   r)  s     @rA   ræ   ræ   Ú  s/   ø€ Ü# BÓ'€Eä
ˆ2�<‰<Óô(ó ð(ð €IrC   c               óÐ   — dd l }t        | t        «      s|j                  | «      S t        | «      j	                  d¬«      5 }|j                  |«      cd d d «       S # 1 sw Y   y xY w)Nr   zutf-8)Úencoding)Újsonr}   r   ÚloadÚopen)rð   r,  Úfs      rA   Ú_stdlib_read_jsonr0  ä  sU   € Ûä�fœdÔ#Ø�y‰y˜Ó Ð ä�&‹\×Ñ¨ÐÓ0ð 	 °AØ—9‘9˜Q“<÷	 ÷ 	 ò 	 ús   ÁAÁA%c               óB  — dd l }t        | «      }	  |j                  j                  |fi |¤ŽS # t        $ rç dd l}dd l}ddl m} |j                  «       5 }|j                  ||d   j                  «       |j                  ¬«      }|j                  «        |j                  |«       |j                  |j                  «       j                  «       «      5 }	|j!                  |	«      cd d d «       cd d d «       cY S # 1 sw Y   nxY w	 d d d «       Y y # 1 sw Y   Y y xY ww xY w)Nr   )rÝ   )Údialect)rÍ   r0  ÚTableÚfrom_pylistr`   rÝ   r&  ÚStringIOÚ
DictWriterÚkeysÚunix_dialectÚwriteheaderÚ	writerowsr  ÚgetvalueÚencoderÃ   )
rð   rc   ÚpaÚrowsrÝ   r&  Úpa_csvr/  ÚwriterÚf2s
             rA   rè   rè   î  sø   € Ûä!2°6Ó!:€Dð+Ø#ˆr�x‰x×#Ñ# DÑ1¨DÑ1Ð1øÜò +ÛÛå)à�[‰[‹]ð 	+˜aØ—^‘^ A t¨A¡w§|¡|£~¸s×?OÑ?O�^ÓPˆFØ×ÑÔ Ø×Ñ˜TÔ"Ø—‘˜AŸJ™J›L×/Ñ/Ó1Ó2ð +°bØ—‘ rÓ*÷+ð +÷		+ó 	+÷+ð +úð +÷		+÷ 	+ó 	+úð+úsF   ‘. ®'DÁA>DÃC9Ã$	DÃ-
DÃ9DÃ>DÄDÄD	ÄDÄDr‡   )
rP   r+   rQ   r�   rO   r£   rc   r   rF   úRead[IntoDataFrameT])
rP   r+   rQ   r�   rO   zCallable[..., IntoFrameT]rc   r   rF   zScan[IntoFrameT])r¤   rB  rF   z"Scan[nw.LazyFrame[IntoDataFrameT]])r«   zstr | Iterable[str]r¬   r‘   r¦   ÚboolrF   rC  )rˆ   r   r7   r‘   rF   r‘   )rO   r   rF   r   )rF   zAtuple[Sequence[Read[pl.DataFrame]], Sequence[Scan[pl.LazyFrame]]])rF   zSequence[Read[pd.DataFrame]])rF   zSequence[Read[pa.Table]])rF   zRead[pa.Table])rñ   r(   rF   zCallable[..., pd.DataFrame])rF   zRead[pd.DataFrame])r	  ró   rÚ   r   rc   r   rF   znw.DataFrame[pd.DataFrame])rñ   r(   rF   zCallable[..., pa.Table])rF   zRead[pl.DataFrame])rñ   r(   rF   zCallable[..., pl.DataFrame])rð   rò   rF   r   )rð   rò   rc   r   rF   r  )^rJ   Ú
__future__r   ÚsysÚenumr   Ú	functoolsr   r   Úimportlib.utilr   Ú	itertoolsr	   Úoperatorr
   Úpathlibr   r)   r   r   r   r   Únarwhals.stabler   r�   Únarwhals.stable.v1.dependenciesr   r   Únarwhals.stable.v1.typingr   Úaltair.datasets._constraintsr   r   r   r   r   r   r   r   r   Úaltair.datasets._exceptionsr   Úversion_infor    Útyping_extensionsr"   Úcollections.abcr#   r$   r%   r&   r&  r'   Útypesr(   rÒ   rÖ   r¿   rÇ   rÍ   r=  Únarwhals.stable.v1Únwtr*   r+   Ú__all__r3   Ú	LazyFramer6   r8   r:   r<   rM   r1   r2   r¥   r,   rs   rt   r0   r.   r/   r-   râ   rÔ   rÕ   rí   rç   rÂ   rÁ   rÀ   ræ   r0  rè   r>   rC   rA   ú<module>rY     s#  ðÙ ;å "ã 
Ý ß $Ý $Ý Ý Ý ß 7Ó 7å $ß BÝ 4÷
÷ 
õ 
õ <à×Ñ�wÒÞå)Ø×Ñ�wÒÞ$å/áßFÓFÝÝ ãÛÛÝ0ç:â
X€áˆC�°$Ô7€ÙØØ
WØ�L‰L˜Ñô€
ñ
 �VÐ7ÀnÐEVÔW€Ø $á�VÐ3À*ÀÔO€Ø "ô	ˆ4ô 	ôtˆw�q‰zô tðv "ð	0ð ð0ð ð	0Ø%ð0ð
 ð0ð ó0ð "ð	0ð ð0ð ð	0Ø!ð0ð
 ð0ð ó0ó
>ð OSñ=Ø"ð=Ø58ð=ØGKð=à	ó=ó,
óóó0ó4ó.	óMó$ó>ð 26ñØðØ+.ðØ?Bðàóó
ó>ó
óó@ó ô+rC   