Ë
    CêñiœK  ã                  ó   — 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 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+m,Z,m-Z- e�rddl.Z.ddlm/Z/m0Z0 ddlm1Z1 ddl2Z3ddl4Z5ddl6Z7ddl8m9Z9 ddl*m:Z:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@mAZA ddlBmCZC e.jˆ                  dk\  r	ddlmEZEmFZF nddlGmEZEmFZF e.jˆ                  dk\  rddlmHZH nddlGmHZH e.jˆ                  dk\  rddlmIZI nddlGmIZI ddlmJZJ ed    ZKd!eLd"<   ed#   ZMd!eLd$<   ed%   ZNd!eLd&<   eeMd'f   ZOd!eLd(<   eeKeOeNf   ZPd!eLd)<   ed*   ZQd!eLd+<   ed,   ZRd!eLd-<   ed.   ZSd!eLd/<   ed0   ZTd!eLd1<   ed2   ZUd!eLd3<   eeKeMeNeQeReSeTeUf   ZVd!eLd4<    eFd5eKeMeNeQeReSeTeU«	      ZWeej°                  j²                  ej°                  j´                  ej°                  j¶                  f   Z\d!eLd6<   eeMeKeNf   Z]d!eLd7<   eed8   d9f   Z^d!eLd:<   	  G d;„ d<ee+e,f   «      Z_	 	 	 	 	 	 dXd=„Z` G d>„ d?e_e+   «      Zae	 dYd@d@dAœ	 	 	 	 	 	 	 	 	 dZdB„«       Zbed@d@dAœ	 	 	 	 	 	 	 	 	 d[dC„«       Zb	 d\dej°                  jÆ                  dAœ	 	 	 	 	 	 	 	 	 d]dD„ZbdEdFœ	 	 	 d^dG„Zded_dH„«       Zeed`dI„«       ZeedadJ„«       ZedbdK„ZedcdL„ZfdddM„Zg	 	 	 	 	 	 dedN„ZhdfdO„Zi	 	 	 	 dgdP„ZjdhdQ„Zk	 	 	 	 didR„ZledjdS„«       ZmedkdT„«       ZmedldU„«       ZmdmdV„ZmdndW„Zny)oaÇ  
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Úoverload)Úbuild_opener)Úv1)ÚRequirement)Ú	_readimpl)ÚCsvCacheÚDatasetCacheÚSchemaCacheÚ_iter_metadata)Ú
is_parquet)ÚAltairDatasetsErrorÚmodule_not_found)ÚIntoDataFrameTÚIntoLazyFrameTÚis_availableN)ÚCallableÚSequence)ÚOpenerDirector)ÚIntoExpr)ÚBaseImplÚRÚReadÚScan)ÚDatasetÚ	ExtensionÚMetadata)ÚOneOrSeq)é   é   )ÚTypeIsÚTypeVar)r*   é   )ÚUnpack)r*   é   )ÚLiteralString)Ú	TypeAliasÚpolarsr2   Ú_PolarsÚpandasÚ_PandasÚpyarrowÚ_PyArrowúpandas[pyarrow]Ú
_PandasAnyÚ_BackendÚcudfÚ_CuDFÚdaskÚ_DaskÚduckdbÚ_DuckDBÚibisÚ_IbisÚpysparkÚ_PySparkÚ
_NwSupportÚ_NwSupportTÚ_EagerAllowedImplÚ_EagerAllowed)Ú	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[IntoLazyFrameT]]Ú_scanÚstrÚ_namerH   Ú_implementationzClassVar[OpenerDirector]Ú_openerÚ	_metadatazmetadata.parquetzClassVar[Path]Ú_metadata_pathc                ó^   — || _         || _        || _        || _        t	        |¬«      | _        y )N)Úimplementation)rQ   rS   rU   rV   r   Ú_schema_cache)ÚselfÚreadÚscanÚnamer[   s        úY/var/www/pod-logistic/pod-ai/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     ra   ú	<genexpr>z"Reader.__repr__.<locals>.<genexpr>¬   s   è ø€ Ò&D°2¤s¨2§wÑ&Dùó   ‚z
scan
c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrh   ri   rj   s     ra   rm   z"Reader.__repr__.<locals>.<genexpr>®   s   è ø€ Ò-K¸"¬c°"¯gÑ-Kùrn   zReader[z] )Útextwrapre   ÚjoinrQ   rS   rU   rV   )r]   re   ÚPREFIXÚNLÚbodys        ra   Ú__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ÐGrc   c               ó:   — | j                  || j                  «      S rh   )Ú_solverQ   ©r]   Úmetas     ra   Úread_fnzReader.read_fn±   s   € Ø�{‰{˜4 §¡Ó,Ð,rc   c               óx   — t        |t        «      r|ndt        |«      i}| j                  || j                  «      S )NÚsuffix)Ú
isinstancer   Ú_into_suffixrw   rS   rx   s     ra   Úscan_fnzReader.scan_fn´   s1   € Ü! $¬Ô0‰t°xÄÈdÓASÐ6TˆØ�{‰{˜4 §¡Ó,Ð,rc   c                ó   — t        | «      S rh   )r   ©r]   s    ra   ÚcachezReader.cache¸   s   € ä˜DÓ!Ð!rc   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 dater7   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]   Úer`   Úmessages       ra   Ú_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Øˆrc   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   rz   Ú_merge_kwdsr‚   Ú	is_activeÚ_maybe_downloadÚ	Exceptionrˆ   rW   Úopen)r]   r`   r|   ÚkwdsÚframery   ÚfnÚfn_kwdsÚfpr†   Úfs              ra   Ú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]   r`   r|   r“   ry   rŠ   Úmsgs          ra   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“.Ð rc   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]   r`   r¥   r¢   ÚrefÚtagrŠ   s          ra   Úopen_markdownzReader.open_markdownø   sf   € ó" 	å)à�k‰k˜$Ó×*Ñ*¨;Ó7×<Ñ<¸QÓ?×GÑGÈÈRÓPˆØ�Ñ'ˆØ<¸S¸EÐAQÐRUÐQVÐWˆØ�‰˜Õrc   .)Úshowc                ó   — y rh   © ©r]   r­   s     ra   ÚprofilezReader.profile  s   € ØILrc   c                ó   — y rh   r¯   r°   s     ra   r±   zReader.profile  s   € Ø7:rc   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rh   )Ú_relevant_columns©rk   Úimpls     ra   rm   z!Reader.profile.<locals>.<genexpr>"  s   è ø€ ÒN¸4 × 6Õ 6ÑNùó   ‚Údataset_namec              3  ó4   K  — | ]  }|j                   –— Œ y ­wrh   )Ú_include_exprr¶   s     ra   rm   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          ra   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ØØˆrc   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]   r`   r|   Úconstraintsr“   r    s         ra   r‹   zReader._query1  sS   € ô (¨¨fÓ5ˆØ#�×#Ñ#Ñ2 kÑ2×:Ñ:Ó<ˆØ�~‰~ÔØˆLà/°¨Ð?ˆCÜ˜S“/Ð!rc   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]   ry   r’   Úschemas       ra   r�   zReader._merge_kwdsD  sD   € ð ×Ñ×'Ñ'Ô)Ø×(Ñ(×4Ñ4°TÓ:Ð:ˆFÐ:á$(�6˜D’=¨fˆDØˆrc   c                óŠ   — | j                   }t        j                   | j                  |«      |«      «      j	                  «       S rh   )rY   rÂ   Úfrom_nativer   Úlazy)r]   r–   s     ra   Ú_metadata_framezReader._metadata_frameP  s6   € à× Ñ ˆÜ�~‰~Ð.˜dŸl™l¨2Ó.¨rÓ2Ó3×8Ñ8Ó:Ð:rc   c                óZ   — |s|r | j                   j                  |i |¤ŽS | j                   S rh   )rÕ   Úfilter)r]   Ú
predicatesrÎ   s      ra   rÀ   zReader._scan_metadataU  s3   € ñ ™Ø.�4×'Ñ'×.Ñ.°
ÐJ¸kÑJÐJØ×#Ñ#Ð#rc   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rh   )Úunwrap_or_skip)rk   r·   rœ   Úsomes     €€ra   rm   z Reader._solve.<locals>.<genexpr>g  s&   øè ø€ ÒM�t°×1DÑ1DÀUÓ1KÐ)K¨Ñ)KŒdÑMùs   ƒ#œ#N)rœ   rŒ   Ú_is_errÚfrom_tabularrU   r   )r]   ry   ÚimplsÚitÚ	fn_or_errrœ   rÜ   s        @@ra   rw   zReader._solve\  sg   ù€ ð —
‘
“ˆÜM˜uÔMˆÜ˜R ›Ð&ˆ9Ð&Ü�yÔ!Ø×,Ñ,¨T°4·:±:Ó>Ð>ØÐÜ!×.Ñ.¨t°T·Z±ZÓ@Ð@rc   )
r^   rP   r_   rR   r`   rT   r[   rH   ÚreturnÚNone©râ   rT   )ry   r(   râ   zCallable[..., IntoDataFrameT])ry   zMetadata | Path | strrâ   zCallable[..., IntoLazyFrameT])râ   r   )r†   r�   r`   rT   râ   rã   rh   )r`   úDataset | LiteralStringr|   úExtension | Noner’   r   râ   r   )r`   rå   r|   ræ   râ   rT   )r`   r&   râ   rã   )r­   zLiteral[False]râ   rM   )r­   zLiteral[True]râ   rã   )r­   Úboolrâ   z_SupportProfile | None)r`   rå   r|   ræ   râ   znw.DataFrame[IntoDataFrameT])ry   r(   r’   zdict[str, Any]râ   zMapping[str, Any])râ   únw.LazyFrame[IntoLazyFrameT])rØ   úOneOrSeq[IntoExpr]rÎ   zUnpack[Metadata]râ   rè   )ry   r(   rß   zSequence[BaseImpl[R]]râ   zCallable[..., R])rž   r…   Ú__qualname__Ú__doc__Ú__annotations__Ú_build_openerrW   r	   Ú__file__ÚparentrY   rb   ru   rz   r   Úpropertyr‚   rˆ   r˜   rŠ   r¬   r   r±   r‹   r�   rÕ   rÀ   rw   r¯   rc   ra   rO   rO   x   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rc   rO   c                ó”   —  | j                   |Ž j                  d«      j                  «       j                  d«      j	                  «       S )Nr¹   )r×   rÁ   rË   r§   Úto_list)r“   rØ   s     ra   rÄ   rÄ   o  s9   € ð
 	ˆ�‰�jÐ!ß	‰�Ó	ß	‰‹ß	‰�NÓ	#ß	‰‹ðrc   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
    )Úsuperru   Ú	csv_cache)r]   Ú	__class__s    €ra   ru   z_NoParquetReader.__repr__}  s#   ø€ Ü‘'Ñ"Ó$Ð%Ð%6°t·~±~Ð6HÐIÐIrc   c                óP   — t        | d«      st        «       | _        | j                  S )NÚ
_csv_cache)Úhasattrr   rú   r�   s    ra   r÷   z_NoParquetReader.csv_cache€  s   € ä�t˜\Ô*Ü&›jˆDŒOØ�‰Ðrc   c                ó¶   — | j                   j                  }| j                  }t        j                  t        j
                  ||¬«      «      j                  «       S )N)Úbackend)r÷   ÚrotatedrV   rÂ   Úmaybe_convert_dtypesÚ	from_dictrÔ   )r]   Údatar·   s      ra   rÕ   z _NoParquetReader._metadata_frame†  sA   € à�~‰~×%Ñ%ˆØ×#Ñ#ˆÜ×&Ñ&¤r§|¡|°DÀ$Ô'GÓH×MÑMÓOÐOrc   rä   )râ   r   )râ   znw.LazyFrame[Any])rž   r…   rê   ru   rð   r÷   rÕ   Ú__classcell__)rø   s   @ra   rô   rô   |  s3   ø„ õJð òó ðð
 òPó ôPrc   rô   .©r`   r[   c                ó   — y rh   r¯   ©Úread_fnsÚscan_fnsr`   r[   s       ra   Úreaderr  �  s   € ð !rc   c                ó   — y rh   r¯   r  s       ra   r  r  —  s   € ð .1rc   c               ó  — |xs' t        d„ | D «       «      j                  d«      d   d   }t        |«      st        t	        |«      «      }|rt        | |||«      S t        | «      x}rt        | |||«      S t        t           | d||«      S )Nc              3  ó4   K  — | ]  }|j                   –— Œ y ­wrh   )Ú_inferred_packagerj   s     ra   rm   zreader.<locals>.<genexpr>¨  s   è ø€ ÒC°B˜2×/Õ/ÑCùr¸   é   r   r¯   )	r   Úmost_commonÚ_is_eager_allowedÚ_into_implementationr   rO   Ú_steal_eager_parquetrô   r   )r  r  r`   r[   Ústolens        ra   r  r  ¡  s“   € ð ÒX”7ÑC¸(ÔCÓC×OÑOÐPQÓRÐSTÑUÐVWÑX€DÜ˜^Ô,Ü-¬k¸$Ó.?Ó@ˆÙÜ�h ¨$°Ó?Ð?Ü% hÓ/Ð/€vÐ/Ü�h ¨¨nÓ=Ð=ä¤Ñ/°¸"¸dÀNÓSÐSrc   )r3   r9   r5   r7   )Ú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rh   )r   Ú_requirementsÚ_from_backend)rk   r`   s     ra   rm   z infer_backend.<locals>.<genexpr>Ã  s"   è ø€ Ò	X $´lÄ=ÐQUÓCVÕ6WŒ-˜×
Ñ	Xùs   ‚,œ,N)rŒ   r   Úfrom_priority)r  rà   r  s      ra   Úinfer_backendr  ³  s6   € ñ  
Y¨(Ô	X€BÜ�b˜$“Ð€vÐØˆÜ
×
+Ñ
+¨HÓ
5Ð5rc   c                ó   — y rh   r¯   ©r`   s    ra   r  r  É  s   € ØKNrc   c                ó   — y rh   r¯   r  s    ra   r  r  Ë  s   € Ø@Crc   c                ó   — y rh   r¯   r  s    ra   r  r  Í  s   € Ø:=rc   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 r3   r  r9   r5   r7   N)	Ú_is_backendrŸ   r  r   Úpl_onlyr  Ú
pd_pyarrowÚpd_onlyÚpa_any)r`   r    r[   ÚrdÚscs        ra   r  r  Ó  s½   € ô �tÔØ   Ð)ˆÜ˜‹nÐÜ)¨$Ó/€NØˆxÒÜ×"Ñ"Ó$‰ˆˆBÜ�b˜" 4¸ÔGÐGØ	Ð"Ò	"Ü”i×*Ñ*Ó,°4ÈÔWÐWØ	�Ò	Ü”i×'Ñ'Ó)°À^ÔTÐTØ	�Ò	Ü”i×&Ñ&Ó(¨tÀNÔSÐSð 
rc   c                ó
   — | dv S )N>   r5   r3   r7   r9   r¯   ©Úobjs    ra   r  r  è  s   € ØÐDÐDÐDrc   c                ó   — | t         u S rh   )r   r'  s    ra   rÝ   rÝ   ì  s   € ØÔ%Ð%Ð%rc   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Ÿ   )r`   r|   Úmr+  r'   r    s         ra   rÊ   rÊ   ð  s‘   € ð €AØ
ˆd�{Øˆˆ+‰ð €Hð 
ˆØ ˆˆ.Ñð €Hð 
×	Ñ	˜3Ô	Ø!¨VÑ4ˆð €Hõ 	$å5ð .©h°yÓ.AÐ-Dð EØ�zð#ð 	ô ˜‹nÐrc   c               ó    — | t         j                  j                  t         j                  j                  t         j                  j                  hv S rh   )rÂ   ÚImplementationÚPANDASÚPOLARSÚPYARROW)r·   s    ra   r  r    sA   € ØÜ
×Ñ× Ñ Ü
×Ñ× Ñ Ü
×Ñ×!Ñ!ðð ð rc   c               ó@  — t        | t        j                  «      rt        t	        | «      «      n| }t        |«      }t        j                  j                  |«      }t        |«      s8|t        j                  j                  u rd|›d�}t        |«      ‚t        |«      ‚|S )NzPackage z  is not supported by `narwhals`.)r}   rÂ   r1  r   rT   Ú_import_guardedÚfrom_backendr  ÚUNKNOWNrÍ   ÚNotImplementedError)rý   ÚreqÚprimaryr·   r    s        ra   r  r    sŽ   € ô &0°¼×9JÑ9JÔ%KŒ”C˜“LÔ!ÐQXð ô ˜cÓ"€GÜ×Ñ×)Ñ)¨'Ó2€DÜ˜TÔ"Ø”2×$Ñ$×,Ñ,Ñ,Ø˜W˜KÐ'GÐHˆCÜ˜S“/Ð!Ü! $Ó'Ð'Ø€Krc   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     ra   r~   r~      sF   € Ü�#”tÔØ�z‰zÐÜ	�CœÔ	Øˆ
à ¤ c£×!3Ñ!3Ð 6Ð7ˆÜ˜‹nÐrc   c               óZ   — t        d„ | D «       d «      x}rt        j                  |«      fS y )Nc              3  óH   K  — | ]  }|j                   t        k  sŒ|–— Œ y ­wrh   )Úincluder   )rk   r$  s     ra   rm   z'_steal_eager_parquet.<locals>.<genexpr>-  s   è ø€ ÒN 2°R·Z±ZÄ:Ó5MœBÑNùs   ‚"›")rŒ   r   Ú	into_scan)r  Úconvertables     ra   r  r  *  s4   € ô ÑN¨ÔNÐPTÓUÐU€{ÐUÜ×#Ñ# KÓ0Ð2Ð2Ørc   c                ó   — y rh   r¯   ©r:  s    ra   r6  r6  2  s   € Ø47rc   c                ó   — y rh   r¯   rC  s    ra   r6  r6  6  s   € Ø9<rc   c                ó   — y rh   r¯   rC  s    ra   r6  r6  :  s   € Ø;>rc   c               ó¢   — t        | «      }|D ];  }t        |«      x}rt        |j                  «       Œ&t	        t        | «      ||¬«      ‚ |d   S )N)Úmissingr   )r  r   r   r`   r   rT   )r:  Úrequiresr`   Úspecs       ra   r6  r6  >  sW   € Ü˜SÓ!€HØò EˆÜ˜T“?Ð"ˆ4Ð"Ü˜$Ÿ)™)Õ$ä"¤3 s£8¨X¸tÔDÐDð	Eð
 �A‰;Ðrc   c               óp   — t        | t        «      rt        | «      n| } | j                  g| j                  ¢­S rh   )r}   rT   r   r`   ÚextrasrC  s    ra   r  r  H  s-   € Ü(¨¬cÔ2Œ+�cÔ
¸€CØ�H‰HÐ"�s—z‘zÑ"Ð"rc   )r“   znw.LazyFramerØ   ré   râ   rL   ).)
r  rP   r  z	tuple[()]r`   ú
str | Noner[   únw.Implementationrâ   zReader[IntoDataFrameT])
r  rP   r  rR   r`   rL  r[   rM  râ   z&Reader[IntoDataFrameT, IntoLazyFrameT])r¯   )
r  rP   r  rR   r`   rL  r[   rM  râ   z?Reader[IntoDataFrameT, IntoLazyFrameT] | Reader[IntoDataFrameT])r  zSequence[_Backend]râ   úReader[Any, Any])r`   r4   râ   z"Reader[pl.DataFrame, pl.LazyFrame])r`   r:   râ   zReader[pd.DataFrame])r`   r8   râ   zReader[pa.Table])r`   r;   râ   rN  )r(  r   râ   zTypeIs[_Backend])r(  r   râ   z!TypeIs[type[AltairDatasetsError]])r`   rå   r|   ræ   râ   r(   )r·   rM  râ   zTypeIs[_EagerAllowedImpl])rý   z9_NwSupport | _PandasAny | nw.Implementation | Requirementrâ   rH   )r(  z
Path | strrâ   r   )r  rP   râ   zSequence[Scan[Any]] | None)r:  r:   râ   r6   )r:  rG   râ   rG   )r:  r   râ   r1   )r:  r   râ   r1   )r:  zRequirement | strrâ   ztuple[Any, ...])orë   Ú
__future__r   Úcollectionsr   Úcollections.abcr   Ú	importlibr   Úimportlib.utilr   Ú	itertoolsr   Úpathlibr	   r-  r
   r   r   r   r   r   Úurllib.requestr   rí   Únarwhals.stabler   rÂ   Úpackaging.requirementsr   Úaltair.datasetsr   Úaltair.datasets._cacher   r   r   r   Úaltair.datasets._constraintsr   Úaltair.datasets._exceptionsr   r   Úaltair.datasets._readimplr   r   r   Úsysr   r   r    r5   Úpdr3   Úplr7   ÚpaÚnarwhals.stable.v1.typingr!   r"   r#   r$   r%   r.  r&   r'   r(   Ú!altair.vegalite.v6.schema._typingr)   Úversion_infor,   r-   Útyping_extensionsr/   r1   r2   r4   rì   r6   r8   r:   r;   r=   r?   rA   rC   rE   rF   rG   r1  r2  r3  r4  rH   rI   rM   rO   rÄ   rô   r  r8  r  r  r  rÝ   rÊ   r  r  r~   r  r6  r  r¯   rc   ra   ú<module>rf     sB  ðòõ& #å Ý #Ý #Ý $Ý Ý ß K× KÝ 8å $Ý .å %ß VÓ VÝ 3ß Mß RÑ RâÛß2Ý-ãÛÛÝ2çAÓAßDÑDÝ:à
×Ñ˜7Ò"ß*Ð*ç5Ø
×Ñ˜7Ò"Þ!å,Ø
×Ñ˜7Ò"Þ(å3Ý à  Ñ*€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ð $+Ø
×Ñ× Ñ Ø
×Ñ× Ñ Ø
×Ñ×!Ñ!ð	#ñ$Ð�yó ð
  ' w°¸Ð'AÑB€M�9ÓBà$ØÐ&Ñ'Ð)<Ð<ñ€�ó ðô$tAˆW�^ ^Ð3Ñ4ô tAðn
Øð
Ø&8ð
àó
ôP�v˜nÑ-ô Pð" 
ð ð!ð Ø(+ñ!Ø,ð!àð!ð ð	!ð
 &ð!ð ò!ó 
ð!ð 
ð
 Ø(+ñ1Ø,ð1à,ð1ð ð	1ð
 &ð1ð ,ò1ó 
ð1ð 02ðTð Ø(*×(9Ñ(9×(AÑ(AñTØ,ðTà,ðTð ð	Tð
 &ðTð EóTð& 'Yñ6Ø#ð6àó6ð, 
Ú Nó 
Ø NØ	Ú Có 
Ø CØ	Ú =ó 
Ø =ó
Tó*Eó&ðØ
!ðØ+;ðàóó0ðØFðàóó ðØ,ðàóð 
Ú 7ó 
Ø 7ð 
Ú <ó 
Ø <ð 
Ú >ó 
Ø >óô#rc   