Ë
    úmxiúI  ã                  ó€  — U d 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 ddlmZ dd	lmZ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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/m0Z0 e�r9ddl1Z1ddlm2Z2m3Z3 ddlm4Z4 ddl5Z6ddl7Z8ddl9Z:ddl.m;Z;m<Z<m=Z=m>Z> ddl?m@Z@mAZAmBZB ddlCmDZD e1jŠ                  dk\  r	ddlmFZFmGZG nddlHmFZFmGZG e1jŠ                  dk\  rddlmIZI nddlHmIZI e1jŠ                  dk\  rddlmJZJ nddlHmJZJ e1jŠ                  dk\  rdd lmKZK ndd lHmKZK ed!   ZLd"eMd#<   ed$   ZNd"eMd%<   ed&   ZOd"eMd'<   eeNd(f   ZPd"eMd)<   eeLePeOf   ZQd"eMd*<   ed+   ZRd"eMd,<   ed-   ZSd"eMd.<   ed/   ZTd"eMd0<   ed1   ZUd"eMd2<   ed3   ZVd"eMd4<   eeLeNeOeReSeTeUeVf   ZWd"eMd5<    eGd6eLeNeOeReSeTeUeV«	      ZXeed7   d8f   ZYd"eMd9<   	  G d:„ d;eee/f   «      ZZ	 	 	 	 	 	 dVd<„Z[ G d=„ d>eZee/f   «      Z\e	 dWd?d?d@œ	 	 	 	 	 	 	 	 	 dXdA„«       Z]ed?d?d@œ	 	 	 	 	 	 	 	 	 dYdB„«       Z]	 dZdej¼                  j¾                  d@œ	 	 	 	 	 	 	 	 	 d[dC„Z]dDdEœ	 	 	 d\dF„Z`ed]dG„«       Zaed^dH„«       Zaed_dI„«       Zad`dJ„ZadadK„ZbdbdL„Zc	 	 	 	 	 	 dcdM„Zd	 	 	 	 dddN„ZededO„Zf	 	 	 	 dfdP„ZgedgdQ„«       ZhedhdR„«       ZhedidS„«       ZhdjdT„ZhdkdU„Ziy)laÇ  
Backend for ``alt.datasets.Loader``.

Notes
-----
Extending would be more ergonomic if `read`, `scan`, `_constraints` were available under a single export::

    from altair.datasets import ext, reader
    import polars as pl

    impls = (
        ext.read(pl.read_parquet, ext.is_parquet),
        ext.read(pl.read_csv, ext.is_csv),
        ext.read(pl.read_json, ext.is_json),
    )
    user_reader = reader(impls)
    user_reader.dataset("airports")
é    )Úannotations)ÚCounter)ÚMapping)Úimport_module)Ú	find_spec)Úchain)ÚPath)ÚTYPE_CHECKINGÚAnyÚClassVarÚGenericÚLiteralÚcastÚoverload)Úbuild_opener)Úv1)ÚIntoDataFrameTÚIntoExpr)ÚRequirement)Ú	_readimpl)ÚCsvCacheÚDatasetCacheÚSchemaCacheÚ_iter_metadata)Ú
is_parquet)ÚAltairDatasetsErrorÚmodule_not_found)Ú
IntoFrameTÚis_availableN)ÚCallableÚSequence)ÚOpenerDirector)ÚBaseImplÚRÚReadÚScan)ÚDatasetÚ	ExtensionÚMetadata)ÚOneOrSeq)é   é   )ÚTypeIsÚTypeVar)r+   é   )ÚUnpack)r+   é   )ÚLiteralString)r+   é
   )Ú	TypeAliasÚpolarsr4   Ú_PolarsÚpandasÚ_PandasÚpyarrowÚ_PyArrowúpandas[pyarrow]Ú
_PandasAnyÚ_BackendÚcudfÚ_CuDFÚdaskÚ_DaskÚduckdbÚ_DuckDBÚibisÚ_IbisÚpysparkÚ_PySparkÚ
_NwSupportÚ_NwSupportT)Ú	supportedÚunsupportedúSequence[Dataset]Ú_SupportProfilec                  óª  — e Zd ZU dZded<   	 ded<   	 ded<   	 ded	<   	  e«       Zd
ed<    ee«      j                  dz  dz  Z
ded<   	 	 	 	 	 	 	 	 	 	 d%d„Zd&d„Zd'd„Zd(d„Zed)d„«       Zd*d„Z	 d+	 	 	 	 	 	 	 d,d„Z	 d+	 	 	 	 	 d-d„Zd.d„Zeddœd/d„«       Zed0d„«       Zddœd1d„Z	 d+	 	 	 	 	 d2d „Zd3d!„Zed4d"„«       Z	 	 	 	 	 	 d5d#„Z	 	 	 	 	 	 d6d$„Zy)7ÚReaderz¦
    Modular file reader, targeting remote & local tabular resources.

    .. warning::
        Use ``reader(...)`` instead of instantiating ``Reader`` directly.
    úSequence[Read[IntoDataFrameT]]Ú_readúSequence[Scan[IntoFrameT]]Ú_scanÚstrÚ_nameúnw.ImplementationÚ_implementationzClassVar[OpenerDirector]Ú_openerÚ	_metadatazmetadata.parquetzClassVar[Path]Ú_metadata_pathc                ó^   — || _         || _        || _        || _        t	        |¬«      | _        y )N)Úimplementation)rQ   rS   rU   rW   r   Ú_schema_cache)ÚselfÚreadÚscanÚnamer\   s        úN/home/htdocs/ttos/venv/lib/python3.12/site-packages/altair/datasets/_reader.pyÚ__init__zReader.__init__–   s.   € ð ˆŒ
ØˆŒ
ØˆŒ
Ø-ˆÔÜ(¸ÔGˆÕó    c                ó"  — ddl m} d}d}d ||j                  d„ | j                  D «       «      |«      › �}| j                  r/|d ||j                  d„ | j                  D «       «      |«      › �z  }d	| j
                  › d
| j                  ›d|› �S )Nr   )Úindentz    ú
zread
c              3  ó2   K  — | ]  }t        |«      –— Œ y ­w©N©rT   ©Ú.0Úels     rb   ú	<genexpr>z"Reader.__repr__.<locals>.<genexpr>¨   s   è ø€ Ò&D°2¤s¨2§wÑ&Dùó   ‚z
scan
c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wri   rj   rk   s     rb   rn   z"Reader.__repr__.<locals>.<genexpr>ª   s   è ø€ Ò-K¸"¬c°"¯gÑ-Kùro   zReader[z] )Útextwraprf   ÚjoinrQ   rS   rU   rW   )r^   rf   ÚPREFIXÚNLÚbodys        rb   Ú__repr__zReader.__repr__£   s�   € Ý#àˆØˆØ™˜rŸw™wÑ&D¸¿¹Ô&DÓDÀfÓMÐNÐOˆØ�:Š:Ø�h™v b§g¡gÑ-KÀÇ
Á
Ô-KÓ&KÈVÓTÐUÐVÑVˆDØ˜Ÿ™˜ B t×';Ñ';Ð&>¸bÀÀÐGÐGrd   c               ó:   — | j                  || j                  «      S ri   )Ú_solverQ   ©r^   Úmetas     rb   Úread_fnzReader.read_fn­   s   € Ø�{‰{˜4 §¡Ó,Ð,rd   c               óx   — t        |t        «      r|ndt        |«      i}| j                  || j                  «      S )NÚsuffix)Ú
isinstancer   Ú_into_suffixrx   rS   ry   s     rb   Úscan_fnzReader.scan_fn°   s1   € Ü! $¬Ô0‰t°xÄÈdÓASÐ6TˆØ�{‰{˜4 §¡Ó,Ð,rd   c                ó   — t        | «      S ri   )r   ©r^   s    rb   ÚcachezReader.cache´   s   € ä˜DÓ!Ð!rd   c                ó”   — dt        |«      v r:dt        t        |«      j                  «      v rd|› d|› d|› d|› �}t        |«      |‚|‚)zuHandle PyArrow date parsing errors with informative error messages, see https://github.com/apache/arrow/issues/41488.zCSV conversion error to dater9   z-PyArrow cannot parse date format in dataset 'z€'. This is a known limitation of PyArrow's CSV reader for non-ISO date formats.

Alternatives:
1. Use a different backend: data.z(engine='pandas') or data.zV(engine='polars')
2. Convert dates manually after loading as strings

Original error: )rT   ÚtypeÚ
__module__r   )r^   Úera   Úmessages       rb   Ú_handle_pyarrow_date_errorz!Reader._handle_pyarrow_date_error¸   ss   € à)¬S°«VÑ3¸	ÄSÜ�‹G×ÑóF
ñ 9
ð @À¸vð F4ð 59°6Ð9SÐTXÐSYð Z#à#$ #ð'ð ô & gÓ.°AÐ5Øˆrd   Nc               ó  — | j                  ||«      }t        t        |«      «      }| j                  |«      }| j	                  ||«      }| j
                  j                  «       r%| j
                  j                  |«      }	  ||fi |¤ŽS | j                  j                  |d   «      5 }
	  ||
fi |¤Žcd d d «       S # t        $ r}	| j                  |	|«       ‚ d }	~	ww xY w# t        $ r}	| j                  |	|«       ‚ d }	~	ww xY w# 1 sw Y   y xY w)NÚurl)Ú_queryÚnextr   r{   Ú_merge_kwdsrƒ   Ú	is_activeÚ_maybe_downloadÚ	Exceptionr‰   rX   Úopen)r^   ra   r}   ÚkwdsÚframerz   ÚfnÚfn_kwdsÚfpr‡   Úfs              rb   ÚdatasetzReader.datasetÈ   s  € ð —‘˜D &Ó)ˆÜ”N 5Ó)Ó*ˆØ�\‰\˜$ÓˆØ×"Ñ" 4¨Ó.ˆØ�:‰:×ÑÔ!Ø—‘×+Ñ+¨DÓ1ˆBðÙ˜"Ñ( Ñ(Ð(ð
 —‘×"Ñ" 4¨¡;Ó/ð °1ðÙ˜aÑ+ 7Ñ+÷ñ øô	 ò Ø×/Ñ/°°4Ô8Øûðûô !ò Ø×3Ñ3°A°tÔ<Øûðú÷ð úsB   Â B; Â'DÂ)CÂ;	CÃCÃCÃ	D Ã(C;Ã;D Ä DÄDc               ó<  — | j                  ||«      }t        t        |«      «      }t        |j	                  «       «      r t        d«      st        j                  |«      ‚|d   }t        |t        «      r|S dt        |«      j                  ›d|›d�}t        |«      ‚)NÚ
vegafusionr‹   zExpected 'str' but got z
from ú.)rŒ   r�   r   r   Úitemsr   r   Úfrom_urlr~   rT   r…   Ú__name__Ú	TypeError)r^   ra   r}   r”   rz   r‹   Úmsgs          rb   r‹   z
Reader.urlâ   sŠ   € ð —‘˜D &Ó)ˆÜ”N 5Ó)Ó*ˆÜ�d—j‘j“lÔ#¬L¸Ô,FÜ%×.Ñ.¨tÓ4Ð4Ø�5‰kˆÜ�cœ3ÔØˆJà+¬D°«I×,>Ñ,>Ð+AÀÈÈÈqÐQˆCÜ˜C“.Ð rd   c               óÒ   — ddl }ddlm} | j                  |«      j	                  d«      j                  d«      j                  dd«      }|d   }d|› d	|› �}|j                  |«       y)
aª  
        Learn more about a dataset, opening `vega-datasets/datapackage.md`_ with the default browser.

        Additional info *may* include: `description`_, `schema`_, `sources`_, `licenses`_.

        .. _vega-datasets/datapackage.md:
            https://github.com/vega/vega-datasets/blob/main/datapackage.md
        .. _description:
            https://datapackage.org/standard/data-resource/#description
        .. _schema:
            https://datapackage.org/standard/table-schema/#schema
        .. _sources:
            https://datapackage.org/standard/data-package/#sources
        .. _licenses:
            https://datapackage.org/standard/data-package/#licenses
        r   N)ÚVERSIONSÚ	file_namerœ   Ú zvega-datasetsz,https://github.com/vega/vega-datasets/blob/vz/datapackage.md#)Ú
webbrowserÚaltair.utilsr£   rŒ   Ú
get_columnÚitemÚreplacer’   )r^   ra   r¦   r£   ÚrefÚtagr‹   s          rb   Úopen_markdownzReader.open_markdownô   sf   € ó" 	å)à�k‰k˜$Ó×*Ñ*¨;Ó7×<Ñ<¸QÓ?×GÑGÈÈRÓPˆØ�Ñ'ˆØ<¸S¸EÐAQÐRUÐQVÐWˆØ�‰˜Õrd   .)Úshowc                ó   — y ri   © ©r^   r®   s     rb   ÚprofilezReader.profile  s   € ØILrd   c                ó   — y ri   r°   r±   s     rb   r²   zReader.profile  s   € Ø7:rd   Fc               ó\  — t        t        j                  d„ | j                  D «       «      «      } | j	                  «       j
                  dg|¢­Ž }t        j                  d„ | j                  D «       «      }t        || «      t        ||«      dœ}|rddl	}|j                  |dd¬	«       y|S )
zÉ
        Describe which datasets can be loaded as tabular data.

        Parameters
        ----------
        show
            Print a densely formatted repr *instead of* returning a mapping.
        c              3  ó4   K  — | ]  }|j                   –— Œ y ­wri   )Ú_relevant_columns©rl   Úimpls     rb   rn   z!Reader.profile.<locals>.<genexpr>  s   è ø€ ÒN¸4 × 6Õ 6ÑNùó   ‚Údataset_namec              3  ó4   K  — | ]  }|j                   –— Œ y ­wri   )Ú_include_exprr·   s     rb   rn   z!Reader.profile.<locals>.<genexpr>!  s   è ø€ Ò$O¸D T×%7Õ%7Ñ$Oùr¹   )rK   rJ   r   NTF)ÚcompactÚ
sort_dicts)
Úsetr   Úfrom_iterablerQ   Ú_scan_metadataÚselectÚnwÚany_horizontalÚ_dataset_namesÚpprint)r^   r®   Úrelevant_columnsr”   Úinc_exprÚresultrÆ   s          rb   r²   zReader.profile  s£   € ô Ü×ÑÑNÀ4Ç:Á:ÔNÓNó
Ðð -�×#Ñ#Ó%×,Ñ,¨^ÐOÐ>NÒOˆÜ×$Ñ$Ñ$OÀDÇJÁJÔ$OÓOˆä)¨%°(°Ó;Ü'¨¨xÓ8ñ#
ˆñ Ûà�M‰M˜&¨$¸5ˆMÔAØØˆrd   c               óž   — t        ||«      } | j                  di |¤Žj                  «       }|j                  «       s|S d|›�}t	        |«      ‚)a  
        Query a tabular version of `vega-datasets/datapackage.json`_.

        Applies a filter, erroring out when no results would be returned.

        .. _vega-datasets/datapackage.json:
            https://github.com/vega/vega-datasets/blob/main/datapackage.json
        zFound no results for:
    r°   )Ú_into_constraintsrÁ   ÚcollectÚis_emptyÚ
ValueError)r^   ra   r}   Úconstraintsr”   r¡   s         rb   rŒ   zReader._query-  sS   € ô (¨¨fÓ5ˆØ#�×#Ñ#Ñ2 kÑ2×:Ñ:Ó<ˆØ�~‰~ÔØˆLà/°¨Ð?ˆCÜ˜S“/Ð!rd   c               ó†   — | j                   j                  «       r&| j                   j                  |«      x}r	|r||z  n|}|S )z£
        Extend user-provided arguments with dataset & library-specfic defaults.

        .. important:: User-provided arguments have a higher precedence.
        )r]   r�   Úschema_kwds)r^   rz   r“   Úschemas       rb   rŽ   zReader._merge_kwds@  sD   € ð ×Ñ×'Ñ'Ô)Ø×(Ñ(×4Ñ4°TÓ:Ð:ˆFÐ:á$(�6˜D’=¨fˆDØˆrd   c                óŠ   — | j                   }t        j                   | j                  |«      |«      «      j	                  «       S ri   )rZ   rÃ   Úfrom_nativer€   Úlazy)r^   r—   s     rb   Ú_metadata_framezReader._metadata_frameL  s6   € à× Ñ ˆÜ�~‰~Ð.˜dŸl™l¨2Ó.¨rÓ2Ó3×8Ñ8Ó:Ð:rd   c                óZ   — |s|r | j                   j                  |i |¤ŽS | j                   S ri   )rÖ   Úfilter)r^   Ú
predicatesrÏ   s      rb   rÁ   zReader._scan_metadataQ  s3   € ñ ™Ø.�4×'Ñ'×.Ñ.°
ÐJ¸kÑJÐJØ×#Ñ#Ð#rd   c               óì   ‡‡— |j                  «       Šˆˆfd„|D «       }t        |d«      x}r)t        |«      r|j                  || j                  «      ‚|S t        j                  || j                  «      ‚)z°
        Return the first function that satisfies dataset constraints.

        See Also
        --------
        ``altair.datasets._readimpl.BaseImpl.unwrap_or_skip``
        c              3  óJ   •K  — | ]  }|j                  ‰«      xŠsŒ‰–— Œ y ­wri   )Úunwrap_or_skip)rl   r¸   r�   Úsomes     €€rb   rn   z Reader._solve.<locals>.<genexpr>c  s&   øè ø€ ÒM�t°×1DÑ1DÀUÓ1KÐ)K¨Ñ)KŒdÑMùs   ƒ#œ#N)r�   r�   Ú_is_errÚfrom_tabularrU   r   )r^   rz   ÚimplsÚitÚ	fn_or_errr�   rÝ   s        @@rb   rx   zReader._solveX  sg   ù€ ð —
‘
“ˆÜM˜uÔMˆÜ˜R ›Ð&ˆ9Ð&Ü�yÔ!Ø×,Ñ,¨T°4·:±:Ó>Ð>ØÐÜ!×.Ñ.¨t°T·Z±ZÓ@Ð@rd   )
r_   rP   r`   rR   ra   rT   r\   rV   ÚreturnÚNone©rã   rT   )rz   r)   rã   zCallable[..., IntoDataFrameT])rz   zMetadata | Path | strrã   zCallable[..., IntoFrameT])rã   r   )r‡   r‘   ra   rT   rã   rä   ri   )ra   úDataset | LiteralStringr}   úExtension | Noner“   r   rã   r   )ra   ræ   r}   rç   rã   rT   )ra   r'   rã   rä   )r®   zLiteral[False]rã   rM   )r®   zLiteral[True]rã   rä   )r®   Úboolrã   z_SupportProfile | None)ra   ræ   r}   rç   rã   znw.DataFrame[IntoDataFrameT])rz   r)   r“   údict[str, Any]rã   zMapping[str, Any]©rã   únw.LazyFrame[IntoFrameT])rÙ   úOneOrSeq[IntoExpr]rÏ   zUnpack[Metadata]rã   rë   )rz   r)   rà   zSequence[BaseImpl[R]]rã   zCallable[..., R])rŸ   r†   Ú__qualname__Ú__doc__Ú__annotations__Ú_build_openerrX   r	   Ú__file__ÚparentrZ   rc   rv   r{   r€   Úpropertyrƒ   r‰   r™   r‹   r­   r   r²   rŒ   rŽ   rÖ   rÁ   rx   r°   rd   rb   rO   rO   t   sÆ  … ñð *Ó)Ø$à%Ó%Ø#àƒJðð 'Ó&ðñ )6«€GÐ%Ó7áˆX‹×Ñ Ñ+Ð.@Ñ@ð �Nó ðHà,ðHð )ðHð ð	Hð
 *ðHð 
óHóHó-ó-ð ò"ó ð"óð& $(ðà%ðð !ðð
 ðð 
óð6 IMð!Ø+ð!Ø5Eð!à	ó!ó$ð4 Ø03ÔLó ØLàÚ:ó Ø:à&+õ ð4 IMð"Ø+ð"Ø5Eð"à	%ó"ó&
ð ò;ó ð;ð$Ø-ð$Ø>Nð$à	!ó$ðAØðAØ%:ðAà	ôArd   rO   c                ó”   —  | j                   |Ž j                  d«      j                  «       j                  d«      j	                  «       S )Nrº   )rØ   rÂ   rÌ   r¨   Úto_list)r”   rÙ   s     rb   rÅ   rÅ   k  s9   € ð
 	ˆ�‰�jÐ!ß	‰�Ó	ß	‰‹ß	‰�NÓ	#ß	‰‹ðrd   c                  óD   ‡ — e Zd Zdˆ fd„Zedd„«       Zedd„«       Zˆ xZS )Ú_NoParquetReaderc                ó>   •— t         ‰| �  «       › d| j                  ›�S )Nz
csv_cache
    )Úsuperrv   Ú	csv_cache)r^   Ú	__class__s    €rb   rv   z_NoParquetReader.__repr__y  s#   ø€ Ü‘'Ñ"Ó$Ð%Ð%6°t·~±~Ð6HÐIÐIrd   c                óP   — t        | d«      st        «       | _        | j                  S )NÚ
_csv_cache)Úhasattrr   rý   r‚   s    rb   rú   z_NoParquetReader.csv_cache|  s   € ä�t˜\Ô*Ü&›jˆDŒOØ�‰Ðrd   c                óÊ   — t        d| j                  j                  «      }| j                  }t	        j
                  t	        j                  ||¬«      «      j                  «       S )Nré   )Úbackend)r   rú   ÚrotatedrW   rÃ   Úmaybe_convert_dtypesÚ	from_dictrÕ   )r^   Údatar¸   s      rb   rÖ   z _NoParquetReader._metadata_frame‚  sI   € äÐ$ d§n¡n×&<Ñ&<Ó=ˆØ×#Ñ#ˆÜ×&Ñ&¤r§|¡|°DÀ$Ô'GÓH×MÑMÓOÐOrd   rå   )rã   r   rê   )rŸ   r†   rí   rv   ró   rú   rÖ   Ú__classcell__)rû   s   @rb   r÷   r÷   x  s3   ø„ õJð òó ðð
 òPó ôPrd   r÷   .©ra   r\   c                ó   — y ri   r°   ©Úread_fnsÚscan_fnsra   r\   s       rb   Úreaderr  ‰  s   € ð <?rd   c                ó   — y ri   r°   r  s       rb   r  r  “  s   € ð *-rd   c               ó8  — |xs' t        d„ | D «       «      j                  d«      d   d   }|t        j                  j                  u rt        t        |«      «      }|rt        | |||«      S t        | «      x}rt        | |||«      S t        t           | d||«      S )Nc              3  ó4   K  — | ]  }|j                   –— Œ y ­wri   )Ú_inferred_packagerk   s     rb   rn   zreader.<locals>.<genexpr>§  s   è ø€ ÒC°B˜2×/Õ/ÑCùr¹   é   r   r°   )r   Úmost_commonrÃ   ÚImplementationÚUNKNOWNÚ_into_implementationr   rO   Ú_steal_eager_parquetr÷   r   )r	  r
  ra   r\   Ústolens        rb   r  r  �  sŸ   € ð ÒX”7ÑC¸(ÔCÓC×OÑOÐPQÓRÐSTÑUÐVWÑX€DØœ×*Ñ*×2Ñ2Ñ2Ü-¬k¸$Ó.?Ó@ˆÙÜ�h ¨$°Ó?Ð?Ü% hÓ/Ð/€vÐ/Ü�h ¨¨nÓ=Ð=ä¤Ñ/°¸"¸dÀNÓSÐSrd   )r5   r;   r7   r9   )Úpriorityc                ó^   — d„ | D «       }t        |d«      x}r|S t        j                  | «      ‚)a²  
    Return the first available reader in order of `priority`.

    Notes
    -----
    - ``"polars"``: can natively load every dataset (including ``(Geo|Topo)JSON``)
    - ``"pandas[pyarrow]"``: can load *most* datasets, guarantees ``.parquet`` support
    - ``"pandas"``: supports ``.parquet``, if `fastparquet`_ is installed
    - ``"pyarrow"``: least reliable

    .. _fastparquet:
        https://github.com/dask/fastparquet
    c              3  ó\   K  — | ]$  }t        t        |«      «      sŒt        |«      –— Œ& y ­wri   )r   Ú_requirementsÚ_from_backend)rl   ra   s     rb   rn   z infer_backend.<locals>.<genexpr>Â  s"   è ø€ Ò	X $´lÄ=ÐQUÓCVÕ6WŒ-˜×
Ñ	Xùs   ‚,œ,N)r�   r   Úfrom_priority)r  rá   r  s      rb   Úinfer_backendr  ²  s6   € ñ  
Y¨(Ô	X€BÜ�b˜$“Ð€vÐØˆÜ
×
+Ñ
+¨HÓ
5Ð5rd   c                ó   — y ri   r°   ©ra   s    rb   r  r  È  s   € ØKNrd   c                ó   — y ri   r°   r  s    rb   r  r  Ê  s   € ØNQrd   c                ó   — y ri   r°   r  s    rb   r  r  Ì  s   € ØDGrd   c               ó„  — t        | «      sd| ›�}t        |«      ‚t        | «      }| dk(  r&t        j                  «       \  }}t        ||| |¬«      S | dk(  r t        t        j                  «       | |¬«      S | dk(  r t        t        j                  «       | |¬«      S | dk(  r t        t        j                  «       | |¬«      S y)zu
    Reader initialization dispatcher.

    FIXME: Works, but defining these in mixed shape functions seems off.
    zUnknown backend r5   r  r;   r7   r9   N)	Ú_is_backendr    r  r   Úpl_onlyr  Ú
pd_pyarrowÚpd_onlyÚpa_any)ra   r¡   r\   ÚrdÚscs        rb   r  r  Ò  s½   € ô �tÔØ   Ð)ˆÜ˜‹nÐÜ)¨$Ó/€NØˆxÒÜ×"Ñ"Ó$‰ˆˆBÜ�b˜" 4¸ÔGÐGØ	Ð"Ò	"Ü”i×*Ñ*Ó,°4ÈÔWÐWØ	�Ò	Ü”i×'Ñ'Ó)°À^ÔTÐTØ	�Ò	Ü”i×&Ñ&Ó(¨tÀNÔSÐSð 
rd   c                ó
   — | dv S )N>   r7   r5   r9   r;   r°   ©Úobjs    rb   r#  r#  ç  s   € ØÐDÐDÐDrd   c                ó   — | t         u S ri   )r   r+  s    rb   rÞ   rÞ   ë  s   € ØÔ%Ð%Ð%rd   c               ó¨   — i }d| v r| |d<   |S |€| |d<   |S |j                  d«      r| |dœ}|S ddlm} ddlm} d ||«      ›d	|›�}t        |«      ‚)
z.Transform args into a mapping to column names.rœ   r¤   rº   )rº   r}   r   )Úget_args)r(   zExpected 'suffix' to be one of z,
but got: )Ú
startswithÚtypingr/  Úaltair.datasets._typingr(   r    )ra   r}   Úmr/  r(   r¡   s         rb   rË   rË   ï  s‘   € ð €AØ
ˆd�{Øˆˆ+‰ð €Hð 
ˆØ ˆˆ.Ñð €Hð 
×	Ñ	˜3Ô	Ø!¨VÑ4ˆð €Hõ 	$å5ð .©h°yÓ.AÐ-Dð EØ�zð#ð 	ô ˜‹nÐrd   c               ó´   — t        | «      }t        j                  j                  |«      }|t        j                  j                  ur|S d|›d�}t        |«      ‚)NzPackage z  is not supported by `narwhals`.)Ú_import_guardedrÃ   r  Úfrom_backendr  rÎ   )r   Úprimaryr¸   r¡   s       rb   r  r    sV   € ô ˜gÓ&€GÜ×Ñ×)Ñ)¨'Ó2€DØ”2×$Ñ$×,Ñ,Ñ,ØˆØ�W�KÐ?Ð
@€CÜ
�S‹/Ðrd   c               ó¤   — t        | t        «      r| j                  S t        | t        «      r| S dt	        | «      j
                  ›�}t        |«      ‚)NzUnexpected type )r~   r	   r}   rT   r…   rŸ   r    )r,  r¡   s     rb   r   r     sF   € Ü�#”tÔØ�z‰zÐÜ	�CœÔ	Øˆ
à ¤ c£×!3Ñ!3Ð 6Ð7ˆÜ˜‹nÐrd   c               óZ   — t        d„ | D «       d «      x}rt        j                  |«      fS y )Nc              3  óH   K  — | ]  }|j                   t        k  sŒ|–— Œ y ­wri   )Úincluder   )rl   r(  s     rb   rn   z'_steal_eager_parquet.<locals>.<genexpr>  s   è ø€ ÒN 2°R·Z±ZÄ:Ó5MœBÑNùs   ‚"›")r�   r   Ú	into_scan)r	  Úconvertables     rb   r  r    s4   € ô ÑN¨ÔNÐPTÓUÐU€{ÐUÜ×#Ñ# KÓ0Ð2Ð2Ørd   c                ó   — y ri   r°   ©Úreqs    rb   r5  r5  $  s   € Ø47rd   c                ó   — y ri   r°   r?  s    rb   r5  r5  (  s   € Ø9<rd   c                ó   — y ri   r°   r?  s    rb   r5  r5  ,  s   € Ø;>rd   c               ó¢   — t        | «      }|D ];  }t        |«      x}rt        |j                  «       Œ&t	        t        | «      ||¬«      ‚ |d   S )N)Úmissingr   )r  r   r   ra   r   rT   )r@  Úrequiresra   Úspecs       rb   r5  r5  0  sW   € Ü˜SÓ!€HØò EˆÜ˜T“?Ð"ˆ4Ð"Ü˜$Ÿ)™)Õ$ä"¤3 s£8¨X¸tÔDÐDð	Eð
 �A‰;Ðrd   c               óp   — t        | t        «      rt        | «      n| } | j                  g| j                  ¢­S ri   )r~   rT   r   ra   Úextrasr?  s    rb   r  r  :  s-   € Ü(¨¬cÔ2Œ+�cÔ
¸€CØ�H‰HÐ"�s—z‘zÑ"Ð"rd   )r”   znw.LazyFramerÙ   rì   rã   rL   ).)
r	  rP   r
  z	tuple[()]ra   ú
str | Noner\   rV   rã   z4Reader[IntoDataFrameT, nw.LazyFrame[IntoDataFrameT]])
r	  rP   r
  rR   ra   rI  r\   rV   rã   z"Reader[IntoDataFrameT, IntoFrameT])r°   )
r	  rP   r
  rR   ra   rI  r\   rV   rã   zYReader[IntoDataFrameT, IntoFrameT] | Reader[IntoDataFrameT, nw.LazyFrame[IntoDataFrameT]])r  zSequence[_Backend]rã   úReader[Any, Any])ra   r6   rã   z"Reader[pl.DataFrame, pl.LazyFrame])ra   r<   rã   z"Reader[pd.DataFrame, pd.DataFrame])ra   r:   rã   zReader[pa.Table, pa.Table])ra   r=   rã   rJ  )r,  r   rã   zTypeIs[_Backend])r,  r   rã   z!TypeIs[type[AltairDatasetsError]])ra   ræ   r}   rç   rã   r)   )r   z%_NwSupport | _PandasAny | Requirementrã   rV   )r,  z
Path | strrã   r   )r	  rP   rã   z3Sequence[Scan[nw.LazyFrame[IntoDataFrameT]]] | None)r@  r<   rã   r8   )r@  rI   rã   rI   )r@  r   rã   r2   )r@  r   rã   r2   )r@  zRequirement | strrã   ztuple[Any, ...])jrî   Ú
__future__r   Úcollectionsr   Úcollections.abcr   Ú	importlibr   Úimportlib.utilr   Ú	itertoolsr   Úpathlibr	   r1  r
   r   r   r   r   r   r   Úurllib.requestr   rð   Únarwhals.stabler   rÃ   Únarwhals.stable.v1.typingr   r   Úpackaging.requirementsr   Úaltair.datasetsr   Úaltair.datasets._cacher   r   r   r   Úaltair.datasets._constraintsr   Úaltair.datasets._exceptionsr   r   Úaltair.datasets._readimplr   r   Úsysr    r!   r"   r7   Úpdr5   Úplr9   Úpar#   r$   r%   r&   r2  r'   r(   r)   Ú!altair.vegalite.v6.schema._typingr*   Úversion_infor-   r.   Útyping_extensionsr0   r2   r4   r6   rï   r8   r:   r<   r=   r?   rA   rC   rE   rG   rH   rI   rM   rO   rÅ   r÷   r  r  r  r  r  r#  rÞ   rË   r  r   r  r5  r  r°   rd   rb   ú<module>rb     sö  ðòõ& #å Ý #Ý #Ý $Ý Ý ß Q× QÑ QÝ 8å $ß >Ý .å %ß VÓ VÝ 3ß Mß >âÛß2Ý-ãÛÛçAÓAßDÑDÝ:à
×Ñ˜7Ò"ß*Ð*ç5Ø
×Ñ˜7Ò"Þ!å,Ø
×Ñ˜7Ò"Þ(å3Ø
×Ñ˜7Ò"Þ$å/Ø  Ñ*€GˆYÓ*Ø  Ñ*€GˆYÓ*Ø! )Ñ,€HˆiÓ,Ø# GÐ->Ð$>Ñ?€J�	Ó?Ø! '¨:°xÐ"?Ñ@€HˆiÓ@Ø˜v‘€Eˆ9Ó&Ø˜v‘€Eˆ9Ó&Ø  Ñ*€GˆYÓ*Ø˜v‘€Eˆ9Ó&Ø! )Ñ,€HˆiÓ,Ø#Ø�˜( E¨5°'¸5À(ÐJñ€J�	ó ñ ØØØØØØØØØó
€Kð %ØÐ&Ñ'Ð)<Ð<ñ€�ó ðô$tAˆW�^ ZÐ/Ñ0ô tAðn
Øð
Ø&8ð
àó
ôP�v˜n¨jÐ8Ñ9ô Pð" 
ð ð?ð Ø(+ñ?Ø,ð?àð?ð ð	?ð
 &ð?ð :ò?ó 
ð?ð 
ð
 Ø(+ñ-Ø,ð-à(ð-ð ð	-ð
 &ð-ð (ò-ó 
ð-ð ,.ðTð Ø(*×(9Ñ(9×(AÑ(AñTØ,ðTà(ðTð ð	Tð
 &ðTð;óTð, 'Yñ6Ø#ð6àó6ð, 
Ú Nó 
Ø NØ	Ú Qó 
Ø QØ	Ú Gó 
Ø Gó
Tó*Eó&ðØ
!ðØ+;ðàóð0Ø2ðàóóðØ,ðà8óð 
Ú 7ó 
Ø 7ð 
Ú <ó 
Ø <ð 
Ú >ó 
Ø >óô#rd   