ó
    b‡Ej\³  ã                   óº  • S SK r S SKJr  S SKJr  S SKrS SKJr  S SKrS SK	J
r
  S SKrS SKrS SKrS SKr S SKrS SKrS SKJrJrJr  0 q0 q0 qS rS rS	 rS
 rS rS r  S+S jr!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S+S jr,  S,S jr-S r.S-S jr/S r0 S.S jr11 Skr2S r3S  r4S! r5S+S" jr6 S+S# jr7S$ r8S% r9S& r:S' r;S( r<S) r=S* r>g! \ a    Sr NŸf = f)/é    N)ÚSequence)Úfutures)Údeepcopy)Úzip_longest)Ú_pandas_apiÚ	frombytesÚis_threading_enabledc            	      ó†  • [         (       Gd0  [         R                  0 [        R                  R                  S_[        R                  R
                  S_[        R                  R                  S_[        R                  R                  S_[        R                  R                  S_[        R                  R                  S_[        R                  R                  S_[        R                  R                  S_[        R                  R                  S	_[        R                  R                  S
_[        R                  R                  S_[        R                  R                  S_[        R                  R                   S_[        R                  R"                  S_[        R                  R$                  S_[        R                  R&                  S_[        R                  R(                  S_[        R                  R*                  S[        R                  R,                  S[        R                  R.                  S0E5        [         $ )NÚemptyÚboolÚint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64Úfloat16Úfloat32Úfloat64ÚdateÚtimeÚbytesÚunicode)Ú_logical_type_mapÚupdateÚpaÚlibÚType_NAÚ	Type_BOOLÚ	Type_INT8Ú
Type_INT16Ú
Type_INT32Ú
Type_INT64Ú
Type_UINT8ÚType_UINT16ÚType_UINT32ÚType_UINT64ÚType_HALF_FLOATÚ
Type_FLOATÚType_DOUBLEÚType_DATE32ÚType_DATE64ÚType_TIME32ÚType_TIME64ÚType_BINARYÚType_FIXED_SIZE_BINARYÚType_STRING© ó    ÚR/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pyarrow/pandas_compat.pyÚget_logical_type_mapr7   .   sÉ  € ÷ ÓÜ× Ñ ð "
Ü�F‰F�N‰N˜Gð"
ä�F‰F×Ñ˜fð"
ô �F‰F×Ñ˜fð"
ô �F‰F×Ñ˜wð	"
ô
 �F‰F×Ñ˜wð"
ô �F‰F×Ñ˜wð"
ô �F‰F×Ñ˜wð"
ô �F‰F×Ñ ð"
ô �F‰F×Ñ ð"
ô �F‰F×Ñ ð"
ô �F‰F×"Ñ" Ið"
ô �F‰F×Ñ˜yð"
ô �F‰F×Ñ 	ð"
ô �F‰F×Ñ ð"
ô �F‰F×Ñ ð"
ô  �F‰F×Ñ ð!"
ô" �F‰F×Ñ ð#"
ô$ �F‰F×Ñ Ü�F‰F×)Ñ)¨7Ü�F‰F×Ñ 	ñ)"
ô 	ô, Ðr5   c                 óú  • [        5       n XR                     $ ! [         aÖ    [        U [        R
                  R                  5      (       a   g[        U [        R
                  R                  5      (       a  S[        U R                  5       S3s $ [        U [        R
                  R                  5      (       a  U R                  b  Ss $ Ss $ [        R                  R                  U 5      (       a   g gf = f)NÚcategoricalzlist[Ú]Ú
datetimetzÚdatetimeÚdecimalÚobject)r7   ÚidÚKeyErrorÚ
isinstancer   r   ÚDictionaryTypeÚListTypeÚget_logical_typeÚ
value_typeÚTimestampTypeÚtzÚtypesÚ
is_decimal)Ú
arrow_typeÚlogical_type_maps     r6   rD   rD   K   s½   € Ü+Ó-ÐðØ§¡Ñ.Ð.øÜó 	Ü�j¤"§&¡&×"7Ñ"7×8Ñ8Ù Ü˜
¤B§F¡F§O¡O×4Ñ4ØÔ+¨J×,AÑ,AÓBÐCÀ1ÐEÒEÜ˜
¤B§F¡F×$8Ñ$8×9Ñ9Ø#-§=¡=Ñ#<�<ÒLÀ*ÒLÜ�X‰X× Ñ  ×,Ñ,ÙÙð	ús(   Œ š3C:ÁAC:Â8C:ÃC:Ã$C:Ã9C:c                  óò  • [         (       dç  [         R                  [        R                  S[        R                  S[        R
                  S[        R                  S[        R                  S[        R                  S[        R                  S[        R                  S[        R                  S	[        R                  S
[        R                  SSS[        R                  S[        R                  S05        [         $ )Nr   r   r   r   r   r   r   r   r   r   r   údatetime64[D]r   Ústringr   )Ú_numpy_logical_type_mapr   ÚnpÚbool_r   r   r   r   r   r   r   r   r   r   Ústr_Úbytes_r4   r5   r6   Úget_numpy_logical_type_maprT   \   s�   € ç"Ò"Ü×&Ñ&Ü�H‰H�fÜ�G‰G�VÜ�H‰H�gÜ�H‰H�gÜ�H‰H�gÜ�H‰H�gÜ�I‰I�xÜ�I‰I�xÜ�I‰I�xÜ�J‰J˜	Ü�J‰J˜	Ø˜VÜ�G‰G�XÜ�I‰I�wð(
ô 	ô  #Ð"r5   c                 ób  • [        5       n XR                  R                     $ ! [         a€    [	        U R                  S5      (       a   g[        U R                  5      R                  S5      (       a  [        U R                  5      s $ [        R                  " U 5      nUS:X  a   gUs $ f = f)NrG   r;   Ú
datetime64rN   r   )	rT   ÚdtypeÚtyper@   ÚhasattrÚstrÚ
startswithr   Úinfer_dtype)Úpandas_collectionÚnumpy_logical_type_mapÚresults      r6   Úget_logical_type_from_numpyr`   r   s�   € Ü7Ó9ÐðØ%×&=Ñ&=×&BÑ&BÑCÐCøÜó 
ÜÐ$×*Ñ*¨D×1Ñ1Ùô Ð ×&Ñ&Ó'×2Ñ2°<×@Ñ@ÜÐ(×.Ñ.Ó/Ò/Ü×(Ò(Ð):Ó;ˆØ�XÓÙØŠð
ús!   Œ$ ¤%B.Á>B.ÂB.Â)B.Â-B.c                 ó¢  • U R                   n[        U5      S:X  aV  [        U SU 5      nUc   e[        UR                  5      UR
                  S.n[        UR                  R                   5      nXC4$ [        US5      (       a>  S[        R                  R                  UR                  5      0nSUR                   S3nXC4$ S n[        U5      nXC4$ )NÚcategoryÚcat)Únum_categoriesÚorderedrG   Útimezonezdatetime64[r:   )rW   rZ   ÚgetattrÚlenÚ
categoriesre   ÚcodesrY   r   r   Útzinfo_to_stringrG   Úunit)ÚcolumnrW   ÚcatsÚmetadataÚphysical_dtypes        r6   Úget_extension_dtype_inforq   ƒ   sÎ   € Ø�L‰L€EÜ
ˆ5ƒz�ZÓÜ�v˜u fÓ-ˆØÑÐÐä! $§/¡/Ó2Ø—|‘|ñ
ˆô ˜TŸZ™Z×-Ñ-Ó.ˆð Ð#Ð#ô 
�˜×	Ñ	Ø¤§¡× 7Ñ 7¸¿¹Ó AÐBˆØ& u§z¡z l°!Ð4ˆð Ð#Ð#ð ˆÜ˜U›ˆØÐ#Ð#r5   c                 ó¸  • [        U5      n[        U 5      u  pVUS:X  a  UR                  UR                  S.nSnUbi  [	        U[
        5      (       a  [        R                  " U5      (       d9  [	        U[        5      (       d$  [        SU S[        U5      R                   35      e[	        U[        5      (       d   [        [        U5      5      5       eUUUUUS.$ )a‹  Construct the metadata for a given column

Parameters
----------
column : pandas.Series or pandas.Index
name : str
arrow_type : pyarrow.DataType
field_name : str
    Equivalent to `name` when `column` is a `Series`, otherwise if `column`
    is a pandas Index then `field_name` will not be the same as `name`.
    This is the name of the field in the arrow Table's schema.

Returns
-------
dict
r=   )Ú	precisionÚscaler>   z)Column name must be a string. Got column z	 of type ©ÚnameÚ
field_nameÚpandas_typeÚ
numpy_typero   )rD   rq   rs   rt   rA   ÚfloatrP   ÚisnanrZ   Ú	TypeErrorrX   Ú__name__)rm   rv   rJ   rw   Úlogical_typeÚstring_dtypeÚextra_metadatas          r6   Úget_column_metadatar�   –   sÙ   € ô" $ JÓ/€Lä#;¸FÓ#CÑ €LØ�yÓ à#×-Ñ-Ø×%Ñ%ñ
ˆð  ˆð 	ÑÜ˜D¤%×(Ñ(¬R¯XªX°d¯^©^Ü˜4¤×%Ñ%äØ7¸°v¸YÜ�D‹z×"Ñ"Ð#ð%ó
ð 	
ô
 �j¤#×&Ñ&Ð=¬¬D°Ó,<Ó(=Ó=Ð&àØ Ø#Ø"Ø"ñð r5   c           
      óŒ  • Uc  U Vs/ s H  n[        U5      PM     nn[        X45       V	V
s/ s H  u  pš[        U
[        5      (       a  M  Xš4PM!     nn	n
[	        U5      n[	        U5      nUSXÜ-
   nXmU-
  S n/ n[        XX~5       H%  u  nnnn[        UUUUS9nUR                  U5        M'     / nUSLGa?  / n[        X¿5       H  u  u  pšnU	R                  b:  [        U	R                  [         5      (       d  UR                  U	R                  5        [        U	[        U	R                  5      UU
S9nUR                  U5        M�     [	        U5      S:”  a  [        R                  " SU S3[        SS9  / n[        UR                  S	UR                  /5      n[        UR                  S
UR                  R                  /5      n[        UU5       H!  u  p˜[        X˜5      nUR                  U5        M#     O/ =n=nn[        US5      (       a  UR                   O0 n ["        R$                  " U5        S["        R$                  " UUUU-   US[(        R*                  S.[,        R.                  S.5      R1                  S5      0$ s  snf s  sn
n	f ! [&         a*  n0 n[        R                  " SU S3[        SS9   SnANŠSnAff = f)a–  Returns a dictionary containing enough metadata to reconstruct a pandas
DataFrame as an Arrow Table, including index columns.

Parameters
----------
columns_to_convert : list[pd.Series]
df : pandas.DataFrame
column_names : list[str | None]
column_field_names: list[str]
index_levels : List[pd.Index]
index_descriptors : List[Dict]
preserve_index : bool
types : List[pyarrow.DataType]

Returns
-------
dict
N)rv   rJ   rw   Fr   z&The DataFrame has non-str index name `z@` which will be converted to string and not roundtrip correctly.é   ©Ú
stacklevelÚlevelsÚnamesÚattrsz(Could not serialize pd.DataFrame.attrs: z!, defaulting to empty attributes.s   pandasÚpyarrow)ÚlibraryÚversion)Úindex_columnsÚcolumn_indexesÚcolumnsÚ
attributesÚcreatorÚpandas_versionÚutf8)rZ   ÚziprA   Údictrh   r�   Úappendrv   Ú_column_name_to_stringsÚwarningsÚwarnÚUserWarningrg   rŽ   Ú_get_simple_index_descriptorrY   rˆ   ÚjsonÚdumpsÚ	Exceptionr   Ú__version__r   r‹   Úencode)Úcolumns_to_convertÚdfÚcolumn_namesÚindex_levelsÚindex_descriptorsÚpreserve_indexrH   Úcolumn_field_namesrv   ÚlevelÚ
descriptorÚserialized_index_levelsÚnum_serialized_index_levelsÚntypesÚdf_typesÚindex_typesÚcolumn_metadataÚcolrw   rJ   ro   Úindex_column_metadataÚnon_str_index_namesr�   r†   r‡   r�   Úes                               r6   Úconstruct_metadatar³   Å   sæ  € ð* Ñ!ñ 5AÓA²L¨Dœc $ži±LÐÐAô "% \Ô!Eôâ!EÑˆEÜ˜*¤d×+ó 	ˆÓÙ!Eð ñ ô #&Ð&=Ó">Ðô �‹Z€FØÐ:�fÑ:Ð;€HØÐ!<Ñ<Ð=Ð>€Kà€OÜ-0Ð1CØ1Cö.OÑ)ˆˆT�:˜zä& s°Ø2<Ø2<ñ>ˆð 	×Ñ˜xÖ(ñ.Oð ÐØ˜UÓ"Ø ÐÜ/2Ø#ö0
Ñ+ÑˆU ð �z‰zÑ%¬j¸¿¹ÄS×.IÑ.IØ#×*Ñ*¨5¯:©:Ô6ä*ØÜ,¨U¯Z©ZÓ8Ø%Ø%ñ	ˆHð "×(Ñ(¨Ö2ñ0
ô Ð"Ó# aÓ'Ü�MŠMØ8Ð9LÐ8Mð N0ð 0ô ¨ò	+ð ˆä˜Ÿ™ X°·
±
¨|Ó<ˆÜ˜Ÿ
™
 G¨b¯j©j¯o©oÐ->Ó?ˆÜ˜v uÖ-‰KˆEÜ3°EÓ@ˆHØ×!Ñ! (Ö+ò .ð FHÐGÐÐGÐ1°Nä$ R¨×1Ñ1�—’°r€Jð'Ü�
Š
�:Ôð 	”4—:’:Ø.Ø,Ø&Ð)>Ñ>Ø$à$ÜŸ>™>ñô *×1Ñ1ñ

ó 
÷ ‰6�&‹>ðð ùòK Bùóøôx ó 'Øˆ
Ü�ŠØ6°q°cð :/ð 0ä A÷	'ûð'ús(   ˆJ­J	ÁJ	ÈJ Ê
KÊ J>Ê>Kc                 ó¨   • [        U 5      u  p#[        U 5      nSU;   a  [        R                  " S[        SS9  US:X  a  U(       a   eSS0nUUUUUS.$ )	NÚmixedzlThe DataFrame has column names of mixed type. They will be converted to strings and not roundtrip correctly.rƒ   r„   r   ÚencodingúUTF-8ru   )rq   r`   r—   r˜   r™   )r§   rv   r   r€   rx   s        r6   rš   rš   2  sn   € Ü#;¸EÓ#BÑ €LÜ-¨eÓ4€KØ�+ÓÜ�Šð@ä Aò	'ð �iÓÞ!Ð!Ð!Ø$ gÐ.ˆàØØ"Ø"Ø"ñð r5   c                 óª  • [        U [        5      (       a  U $ [        U [        5      (       a  U R                  S5      $ [        U [        5      (       a"  [        [	        [        [        U 5      5      5      $ [        U [        5      (       a  [        S5      eU b0  [        U [        5      (       a  [        R                  " U 5      (       a  U $ [        U 5      $ )aÑ  Convert a column name (or level) to either a string or a recursive
collection of strings.

Parameters
----------
name : str or tuple

Returns
-------
value : str or tuple

Examples
--------
>>> name = 'foo'
>>> _column_name_to_strings(name)
'foo'
>>> name = ('foo', 'bar')
>>> _column_name_to_strings(name)
"('foo', 'bar')"
>>> import pandas as pd
>>> name = (1, pd.Timestamp('2017-02-01 00:00:00'))
>>> _column_name_to_strings(name)
"('1', '2017-02-01 00:00:00')"
r’   z%Unsupported type for MultiIndex level)rA   rZ   r   ÚdecodeÚtupleÚmapr–   r   r|   rz   rP   r{   ©rv   s    r6   r–   r–   F  sœ   € ô2 �$œ×ÑØˆÜ	�Dœ%×	 Ñ	 à�{‰{˜6Ó"Ð"Ü	�Dœ%×	 Ñ	 Ü”5œÔ4°dÓ;Ó<Ó=Ð=Ü	�Dœ(×	#Ñ	#ÜÐ?Ó@Ð@Ø	‰œ* T¬5×1Ñ1´b·h²h¸t·n±nØˆÜˆt‹9Ðr5   c                 ót   • U R                   b%  U R                   U;  a  [        U R                   5      $ SUS S3$ )z¹Return the name of an index level or a default name if `index.name` is
None or is already a column name.

Parameters
----------
index : pandas.Index
i : int

Returns
-------
name : str
Ú__index_level_ÚdÚ__)rv   r–   )ÚindexÚir¢   s      r6   Ú_index_level_namerÃ   m  s9   € ð ‡z�zÑ %§*¡*°LÓ"@Ü& u§z¡zÓ2Ð2à  !˜u BÐ'Ð'r5   c                 óp  • [        XU5      nU R                  R                  (       d!  [        S[	        U R                  5       35      eUb  [        XU5      $ / n/ nUSLa  [        U R                  5      O/ n/ n/ nU H‰  n	X	   n
[        U	5      n	[        R                  " U
5      (       a  [        SU	 S35      eUR                  U
5        UR                  S 5        UR                  U	5        UR                  [        U	5      5        M‹     / n/ n[        U5       H�  u  pÞ[        XíU5      n	[!        U[        R"                  R$                  5      (       a  Uc  ['        U5      nO5UR                  U5        UR                  S 5        U	nUR                  U	5        UR                  U5        M‘     X\-   nUXEUX¶Xx4$ )NzDuplicate column names found: FúSparse pandas data (column ú) not supported.)Ú_resolve_columns_of_interestrŽ   Ú	is_uniqueÚ
ValueErrorÚlistÚ$_get_columns_to_convert_given_schemaÚ_get_index_level_valuesrÁ   r–   r   Ú	is_sparser|   r•   rZ   Ú	enumeraterÃ   rA   ÚpdÚ
RangeIndexÚ_get_range_index_descriptor)r¡   Úschemar¥   rŽ   r¢   r¦   r£   r    Úconvert_fieldsrv   r¯   r¤   Úindex_column_namesrÂ   Úindex_levelÚdescrÚ	all_namess                    r6   Ú_get_columns_to_convertrØ   €  sÂ  € Ü*¨2°wÓ?€Gà�:‰:××ÜØ,¬T°"·*±*Ó-=Ð,>Ð?ó
ð 	
ð ÑÜ3°BÀÓOÐOà€LØÐð .<À5Ò-HÔ §¡Ô)Øð ð
 ÐØ€NãˆØ‰hˆÜ& tÓ,ˆä× Ò  ×%Ñ%ÜØ-¨d¨VÐ3CÐDóFð Fð 	×!Ñ! #Ô&Ø×Ñ˜dÔ#Ø×Ñ˜DÔ!Ø×!Ñ!¤# d£)Ö,ñ ð ÐØÐÜ# LÖ1‰ˆÜ  °Ó>ˆÜ�{¤K§N¡N×$=Ñ$=×>Ñ>ØÑ&Ü/°Ó<‰Eà×%Ñ% kÔ2Ø×!Ñ! $Ô'ØˆEØ×%Ñ% dÔ+Ø× Ñ  Ö'ñ 2ð #Ñ7€Ið �|Ð9KØÐ-?ðQð Qr5   c                 óÚ  • / n/ n/ n/ n/ n/ nUR                    H´  n	 X	   n
Sn[        R                  " U
5      (       a  [        SU	 S35      eUR                  U	5      nUR                  U
5        UR                  U5        UR                  U	5        U(       d  M�  UR                  U	5        UR                  U	5        UR                  U
5        M¶     X7-   nXÓX7XhXE4$ ! [         a…     [        X	5      n
O#! [        [        4 a    [        SU	 S35      ef = fUSL a  [	        SU	 S35      eUc8  [        U
[        R                  R                  5      (       a  [	        SU	 S35      eSn GNFf = f)	zá
Specialized version of _get_columns_to_convert in case a Schema is
specified.
In that case, the Schema is used as the single point of truth for the
table structure (types, which columns are included, order of columns, ...).
Fzname 'zF' present in the specified schema is not found in the columns or indexzd' present in the specified schema corresponds to the index, but 'preserve_index=False' was specifiedzý' is present in the schema, but it is a RangeIndex which will not be converted as a column in the Table, but saved as metadata-only not in columns. Specify 'preserve_index=True' to force it being added as a column, or remove it from the specified schemaTrÅ   rÆ   )r‡   r@   Ú_get_index_levelÚ
IndexErrorrÉ   rA   r   rÏ   rÐ   rÍ   r|   Úfieldr•   )r¡   rÒ   r¥   r¢   r    rÓ   r¤   rÔ   r£   rv   r¯   Úis_indexrÜ   r×   s                 r6   rË   rË   Â  s¾  € ð €LØÐØ€NØÐØÐØ€Là—”ˆð	Ø‘(ˆCØˆHô2 × Ò  ×%Ñ%ÜØ-¨d¨VÐ3CÐDóFð Fð —‘˜TÓ"ˆØ×!Ñ! #Ô&Ø×Ñ˜eÔ$Ø×Ñ˜DÔ!çˆ8Ø×%Ñ% dÔ+Ø×$Ñ$ TÔ*Ø×Ñ Ö$ñQ ðT Ñ1€Ià \ØÐ-?ðQð QøôQ ó 	ð/Ü& rÓ0‘øÜœjÐ)ó /äØ˜T˜Fð #.ð .ó/ð /ð/úð
  Ò&Ü Ø˜T˜Fð # ð  ó!ð !ð !Ñ(Ü˜s¤K§N¡N×$=Ñ$=×>Ñ>Ü Ø˜T˜Fð #'ð 'ó(ð (ð ‹Hð-	ús*   �CÃ
E*Ã&C2Ã1E*Ã2 DÄAE*Å)E*c                 ó¼   • UnXR                   R                  ;  a'  [        U5      (       a  [        U[	        S5      S 5      nU R                   R                  U5      $ )zS
Get the index level of a DataFrame given 'name' (column name in an arrow
Schema).
r¾   éþÿÿÿ)rÁ   r‡   Ú_is_generated_index_nameÚintrh   Úget_level_values)r¡   rv   Úkeys      r6   rÚ   rÚ      sP   € ð
 €CØ—8‘8—>‘>Ó!Ô&>¸t×&DÑ&Dô �$”sÐ+Ó,¨RÐ0Ó1ˆØ�8‰8×$Ñ$ SÓ)Ð)r5   c                 ój   •  [         R                  " U 5        U $ ! [         a    [        U 5      s $ f = f©N)r›   rœ   r|   rZ   r¼   s    r6   Ú_level_nameræ     s1   € ðÜ�
Š
�4ÔØˆøÜó Ü�4‹yÒðús   ‚ š2±2c                 ó¶   • S[        U R                  5      [        R                  " U S5      [        R                  " U S5      [        R                  " U S5      S.$ )NÚrangeÚstartÚstopÚstep)Úkindrv   ré   rê   rë   )ræ   rv   r   Úget_rangeindex_attribute)r§   s    r6   rÑ   rÑ     sM   € ð Ü˜EŸJ™JÓ'Ü×5Ò5°e¸WÓEÜ×4Ò4°U¸FÓCÜ×4Ò4°U¸FÓCñð r5   c                 óŽ   • [        [        U SU /5      5      n[        U5       Vs/ s H  o R                  U5      PM     sn$ s  snf )Nr†   )rh   rg   rè   râ   )rÁ   ÚnrÂ   s      r6   rÌ   rÌ   !  s<   € ÜŒG�E˜8 e WÓ-Ó.€AÜ/4°Q¬xÓ8ªx¨!×"Ñ" 1Ö%©xÑ8Ð8ùÒ8s   ¥Ac                 ó¼   • Ub  Ub  [        S5      eUb  UR                  nU$ Ub%  U Vs/ s H  o3U R                  ;   d  M  UPM     nnU$ U R                  nU$ s  snf )NzJSchema and columns arguments are mutually exclusive, pass only one of them)rÉ   r‡   rŽ   )r¡   rÒ   rŽ   Úcs       r6   rÇ   rÇ   &  su   € ØÑ˜gÑ1Üð <ó =ð 	=à	Ñ	Ø—,‘,ˆð €Nð 
Ñ	Ù%Ó9šg˜¨b¯j©j©—1™gˆÐ9ð €Nð —*‘*ˆà€Nùò	 :s   ªAÁAc                 óÀ  • [        U S X5      u  nnnnnnn	n/ n
U	 GH/  nUR                  n[        R                  " U5      (       a   [        R
                  " USS9R                  nOÓ[        R                  " U5      (       a_  [        U[        R                  R                  5      (       a  UR                  S5      OUS S n[        R
                  " USS9R                  nOY[        XËR                  S 5      u  pÍ[        R                  R                  XÍ5      nUc  [        R
                  " USS9R                  nU
R!                  U5        GM2     [#        X�XHUXUS9nX:U4$ )NT)Úfrom_pandasr   ©r¦   )rØ   Úvaluesr   Úis_categoricalr   ÚarrayrX   Úis_extension_array_dtyperA   rÏ   ÚSeriesÚheadÚget_datetimetz_typerW   r   Ú_ndarray_to_arrow_typer•   r³   )r¡   r¥   rŽ   r×   r¢   r¦   Ú_r¤   rŒ   r    rH   rñ   rõ   Útype_r   ro   s                   r6   Údataframe_to_typesrÿ   4  s:  € ô " " d¨NÓ
Dñ€YØØØØØØØà€EäˆØ—‘ˆÜ×%Ò% f×-Ñ-Ü—H’H˜Q¨DÑ1×6Ñ6‰EÜ×1Ò1°&×9Ñ9Ü!+Ø”;—>‘>×(Ñ(÷"*ñ "*�A—F‘F˜1”IØ/0°°!¨uð ä—H’H˜U°Ñ5×:Ñ:‰Eä/°¿¹ÀÓF‰MˆFÜ—F‘F×1Ñ1°&Ó@ˆEØ‰}ÜŸš °Ñ5×:Ñ:�Ø�‰�U×ñ  ô "Ø Ð=NØÐ2Dñ€Hð
 ˜XÐ%Ð%r5   c                 óš  ^• [        XUU5      u  nnnn	n
nnnUcE  [        U 5      [        U R                  5      pþXïS-  :”  a  US:”  a  [        R                  " 5       nOSn[        5       (       d  SnU4S jnS nUS:X  a(  [        XÍ5       VVs/ s H  u  nnU" UU5      PM     nnnOÒ/ n[        R                  " U5       n[        XÍ5       HY  u  nnU" UR                  5      (       a  UR                  U" UU5      5        M7  UR                  UR                  UUU5      5        M[     S S S 5        [        U5       H:  u  nn[        U[        R                  5      (       d  M'  UR                  5       UU'   M<     U Vs/ s H  nUR                   PM     nnUcT  / n[        UU5       H,  u  nnUR                  [        R"                  " UU5      5        M.     [        R$                  " U5      n['        XÀX{U
UUUS9nUR(                  (       a  [+        UR(                  5      O	[-        5       nUR/                  U5        UR1                  U5      nS n[        U5      S:X  a=   U
S   S   n U S:X  a.  U
S   S	   n!U
S   S
   n"U
S   S   n#[        [3        U!U"U#5      5      nUUU4$ s  snnf ! , (       d  f       GN„= fs  snf ! [4         a     N.f = f)Néd   é   c                 ó¶  >• Uc  SnS nOUR                   nUR                  n [        R                  " XSTS9nU(       d,  UR                  S:”  a  [        SU SUR                   S35      eU$ ! [        R                  [        R
                  [        R                  4 a7  nU=R                  SU R                   SU R                   34-  sl        UeS nAff = f)	NT)rX   ró   ÚsafezConversion failed for column z with type r   zField z( was non-nullable but pandas column had z null values)ÚnullablerX   r   r÷   ÚArrowInvalidÚArrowNotImplementedErrorÚArrowTypeErrorÚargsrv   rW   Ú
null_countrÉ   )r¯   rÜ   Úfield_nullablerþ   r_   r²   r  s         €r6   Úconvert_columnÚ+dataframe_to_arrays.<locals>.convert_columnp  sá   ø€ Ø‰=Ø!ˆNØ‰Eà"Ÿ^™^ˆNØ—J‘JˆEð	Ü—X’X˜c¸4ÀdÑKˆFö  &×"3Ñ"3°aÓ"7Ü˜v e Wð -$Ø$*×$5Ñ$5Ð#6°lðDó Eð Eàˆøô —‘Ü×+Ñ+Ü×!Ñ!ð#ó 	ð �FŠFØ/°·±¨z¸ÀSÇYÁYÀKÐPðSñ S�FàˆGûð	ús   £A. Á.3CÂ!2CÃCc                 óÚ   • [        U [        R                  5      =(       aK    U R                  R                  =(       a.    [        U R                  R                  [        R                  5      $ rå   )	rA   rP   ÚndarrayÚflagsÚ
contiguousÚ
issubclassrW   rX   Úinteger)Úarrs    r6   Ú_can_definitely_zero_copyÚ6dataframe_to_arrays.<locals>._can_definitely_zero_copy…  sB   € Ü˜3¤§
¡
Ó+÷ 7Ø—	‘	×$Ñ$÷7ä˜3Ÿ9™9Ÿ>™>¬2¯:©:Ó6ð	8r5   rô   r   rì   rè   ré   rê   rë   )rØ   rh   rŽ   r   Ú	cpu_countr	   r“   r   ÚThreadPoolExecutorrõ   r•   ÚsubmitrÎ   rA   ÚFuturer_   rX   rÜ   rÒ   r³   ro   r   r”   r   Úwith_metadatarè   rÛ   )$r¡   rÒ   r¥   ÚnthreadsrŽ   r  r×   r¢   r¦   rÔ   r¤   rŒ   r    rÓ   ÚnrowsÚncolsr  r  rñ   ÚfÚarraysÚexecutorrÂ   Ú	maybe_futÚxrH   Úfieldsrv   rþ   Úpandas_metadataro   Ún_rowsrì   ré   rê   rë   s$        `                              r6   Údataframe_to_arraysr'  W  s¸  ø€ ô /¨r¸>Ø/6ó8ñ€YØØØØØØØð ÑÜ˜2“w¤ B§J¡J£ˆuØ˜3‘;Ó 5¨1£9Ü—|’|“~‰HàˆHä×!Ñ!Øˆõò*8ð
 �1ƒ}ä!Ð"4ÔEôGÚE‘d�a˜ñ !  AÖ&ÙEð 	ñ Gˆð ˆÜ×'Ò'¨Ô1°XÜÐ.Ö?‘��1Ù,¨Q¯X©X×6Ñ6Ø—M‘M¡.°°AÓ"6Ö7à—M‘M (§/¡/°.À!ÀQÓ"GÖHñ	 @÷ 2ô & fÖ-‰LˆAˆyÜ˜)¤W§^¡^×4Ó4Ø%×,Ñ,Ó.��q“	ñ .ñ $Ó$šV˜ˆQ�VŒV™V€EÐ$à�~ØˆÜ˜y¨%Ö0‰KˆD�%Ø�M‰Mœ"Ÿ(š( 4¨Ó/Ö0ñ 1ä—’˜6Ó"ˆä(Ø Ð=NØ˜Ð2Dñ€Oð -3¯O¯OŒx˜Ÿ™Ô(ÄÃ€HØ‡O�O�OÔ$Ø×!Ñ! (Ó+€Fð €FÜ
ˆ6ƒ{�aÓð	Ø$ QÑ'¨Ñ/ˆDØ�w‹Ø)¨!Ñ,¨WÑ5�Ø(¨Ñ+¨FÑ3�Ø(¨Ñ+¨FÑ3�ÜœU 5¨$°Ó5Ó6�ð �6˜6Ð!Ð!ùó[G÷ 2Ö1üò %øô6 ó 	Ùð	ús+   ÂJ Ã A)J&Å>J8É<J= Ê&
J5Ê=
K
Ë	K
c                 óB  • U R                   R                  [        R                  :w  a  X4$ [        R
                  " U5      (       a4  Uc1  UR                  nUR                  n[        R                  " XC5      nX4$ Uc   [        R                  " U R                   5      nX4$ rå   )rW   rX   rP   rV   r   Úis_datetimetzrG   rl   r   Ú	timestampÚfrom_numpy_dtype)rõ   rW   rþ   rG   rl   s        r6   rû   rû   »  s‚   € Ø‡|�|×ÑœBŸM™MÓ)Øˆ}Ðä× Ò  ×'Ñ'¨E©Mà�X‰XˆØ�z‰zˆÜ—’˜TÓ&ˆð
 ˆ=Ðð	 
‰ä×#Ò# F§L¡LÓ1ˆàˆ=Ðr5   c                 óÄ  • SSK Js  Jn  U R                  SS5      nU S   nSU ;   a%  [        R
                  R                  XPS   U S   S9nOýSU ;   a   [        R                  " UR                  5      u  p‰[        X€S   5      n
[        R                  " 5       (       a/  [        R                  R                  UR                  S	5      U
S
S9nO~UnU(       a  UR                  XVUR                   U
S9nU$ OWSU ;   aO  U S   n[#        U5      S:X  d   eXS      nX,   n[%        US5      (       d  ['        S5      eUR)                  U5      nOUnU(       a  UR                  XvS9$ Xv4$ )a\  
Construct a pandas Block from the `item` dictionary coming from pyarrow's
serialization or returned by arrow::python::ConvertTableToPandas.

This function takes care of converting dictionary types to pandas
categorical, Timestamp-with-timezones to the proper pandas Block, and
conversion to pandas ExtensionBlock

Parameters
----------
item : dict
    For basic types, this is a dictionary in the form of
    {'block': np.ndarray of values, 'placement': pandas block placement}.
    Additional keys are present for other types (dictionary, timezone,
    object).
columns :
    Column names of the table being constructed, used for extension types
extension_columns : dict
    Dictionary of {column_name: pandas_dtype} that includes all columns
    and corresponding dtypes that will be converted to a pandas
    ExtensionBlock.

Returns
-------
pandas Block

r   NÚblockÚ	placementÚ
dictionaryre   )ri   re   rf   r   F)rW   Úcopy)r.  ÚklassrW   Úpy_arrayr  Ú__from_arrow__zGThis column does not support to be converted to a pandas ExtensionArray)r.  )Úpandas.core.internalsÚcoreÚ	internalsÚgetr   Úcategorical_typeÚ
from_codesrP   Údatetime_datarW   Úmake_datetimetzÚ	is_ge_v21rÏ   r÷   ÚviewÚ
make_blockÚDatetimeTZBlockrh   rY   rÉ   r3  )ÚitemrŽ   Úextension_columnsÚreturn_blockÚ_intÚ	block_arrr.  r  rl   rý   rW   r-  rv   Úpandas_dtypes                 r6   Ú_reconstruct_blockrF  Î  s  € ÷8 )Ð(à—‘˜ $Ó'€IØ�[Ñ!€IØ�tÓÜ×*Ñ*×5Ñ5Ø |Ñ"4Ø˜‘Oð 6ð %‰ð 
�tÓ	Ü×"Ò" 9§?¡?Ó3‰ˆÜ ¨:Ñ&6Ó7ˆÜ× Ò ×"Ñ"Ü—.‘.×&Ñ&Ø—‘˜wÓ'¨u¸5ð 'ð ‰Cð ˆCÞØŸ™¨	Ø.2×.BÑ.BØ.3ð (ð 5�ð �ð	 ð
 
�tÓ	à�:ÑˆÜ�9‹~ Ó"Ð"Ð"Ø ‘|Ñ$ˆØ(Ñ.ˆÜ�|Ð%5×6Ñ6Üð :ó ;ð ;à×)Ñ)¨#Ó.‰àˆæØ�‰˜sˆÐ8Ð8àˆ~Ðr5   c                 ó    • [         R                  " 5       (       a  Sn [        R                  R	                  U5      n[         R
                  " XS9$ )NÚns©rG   )r   Úis_v1r   r   Ústring_to_tzinfoÚdatetimetz_type)rl   rG   s     r6   r;  r;    s;   € Ü×Ò×ÑØˆÜ	�‰×	 Ñ	  Ó	$€BÜ×&Ò& tÑ3Ð3r5   c           
      ó¾  • / n/ n0 nUR                   R                  nU(       dX  UbU  US   nUR                  S/ 5      nUR                  S0 5      nUS   n	[        X5      n[	        XXT5      u  p[        XX@U5      nO7[        R                  R                  UR                  5      n
[        U/ X@U5      n[        U5        [        XU5      nUR                  n[        R                  R                  XU[!        UR#                  5       5      5      n[        R$                  " 5       (       a1  SSKJn  U Vs/ s H  n[+        UXÛSS9PM     nnU" UX¬S	9nUUl        U$ SS
KJn  SSKJn  U Vs/ s H  n[+        UXÛ5      PM     nnXÊ/nU" UU5      n[        R6                  " 5       (       a  UR9                  UUR:                  5      nOU" U5      nUUl        U$ s  snf s  snf )NrŽ   r�   r�   rŒ   r   )Úcreate_dataframe_from_blocksF)rB  )rÁ   rŽ   )ÚBlockManager)Ú	DataFrame)rÒ   r%  r7  Ú_add_any_metadataÚ_reconstruct_indexÚ_get_extension_dtypesr   rÏ   rÐ   Únum_rowsÚ'_check_data_column_metadata_consistencyÚ_deserialize_column_indexr¢   r   r   Útable_to_blocksrÊ   ÚkeysÚis_ge_v3Úpandas.api.internalsrN  rF  rˆ   r4  rO  ÚpandasrP  r<  Ú	_from_mgrÚaxes)ÚoptionsÚtableri   Úignore_metadataÚtypes_mapperÚall_columnsr�   r�   r%  r¤   rÁ   Úext_columns_dtypesrŽ   r¢   r_   rN  r@  Úblocksr¡   rO  rP  r]  Úmgrs                          r6   Útable_to_dataframerf    só  € ð €KØ€NØ€JØ—l‘l×2Ñ2€Oæ˜Ñ:Ø% iÑ0ˆØ(×,Ñ,Ð-=¸rÓBˆØ$×(Ñ(¨°rÓ:ˆ
Ø+¨OÑ<ÐÜ! %Ó9ˆÜ)¨%Ø*5óE‰ˆä2Ø °zóCÑô —‘×)Ñ)¨%¯.©.Ó9ˆÜ2Ø�2�|¨jó
Ðô ,¨KÔ8Ü'¨¸NÓK€Gà×%Ñ%€LÜ�V‰V×#Ñ# G°JÜ$(Ð);×)@Ñ)@Ó)BÓ$CóE€Fä×Ò×ÑÝEñ
 ó
ò �ô Ø�lÀUôLáð 	ð 
ñ
 *¨&¸ÑOˆØˆŒàˆ	å6Ý$ñ ó
â�ô ˜t \ÖFÙð 	ð 
ð ÐˆÙ˜6 4Ó(ˆÜ× Ò ×"Ñ"Ø×$Ñ$ S¨#¯(©(Ó3‰Bá˜3“ˆBàˆŒàˆ	ùò5
ùò
s   Ä2GÅ)G>   r   r   r   r   r   r   r>   r   r   r   r   r   r   c                 óL  • US   nU=(       d    / n0 n[         R                  c  U$ U(       a:  U R                   H*  nUR                  nU" U5      n	U	c  M  X–UR                  '   M,     U R                   Ha  nUR                  nUR                  U;  d  M!  [        U[        R                  5      (       d  MB   UR                  5       n	X–UR                  '   Mc     U Hñ  n
 U
S   nU
S   nX¶;  d  M  U[        ;  d  M!  [         R                  " U5      n	[        U	[         R                  5      (       d  MX  [        U	[         R                  R                  5      (       aY  U(       d  X´;   a  M�   [        R                  R!                  U R                  R#                  U5      R                  5      (       a  MÙ   [%        U	S5      (       d  Mí  X–U'   Mó     [         R&                  " 5       (       Ga  U(       dú  U R                   Hê  nUR                  U;  d  M  [        R                  R)                  UR                  5      (       d^  [        R                  R+                  UR                  5      (       d0  [        R                  R-                  UR                  5      (       d  M¡  UR                  U;  d  M³  [         R                  R                  [.        R0                  S9XgR                  '   Mì     U$ ! [         a     GMˆ  f = f! [         a	    U
S   n GN.f = f! [         a     GNnf = f)aÏ  
Based on the stored column pandas metadata and the extension types
in the arrow schema, infer which columns should be converted to a
pandas extension dtype.

The 'numpy_type' field in the column metadata stores the string
representation of the original pandas dtype (and, despite its name,
not the 'pandas_type' field).
Based on this string representation, a pandas/numpy dtype is constructed
and then we can check if this dtype supports conversion from arrow.

Ústrings_to_categoricalrw   rv   ry   r3  )Úna_value)r   Úextension_dtyperÒ   rX   rv   rA   r   ÚBaseExtensionTypeÚto_pandas_dtypeÚNotImplementedErrorr@   Ú_pandas_supported_numpy_typesrE  rÏ   ÚStringDtyperH   Úis_dictionaryrÜ   rY   Úuses_string_dtypeÚ	is_stringÚis_large_stringÚis_string_viewrP   Únan)r_  Úcolumns_metadatara  r^  ri   rh  Úext_columnsrÜ   ÚtyprE  Úcol_metarv   rW   s                r6   rS  rS  b  s‚  € ð %Ð%=Ñ>ÐØ×!˜r€Jà€Kô ×"Ñ"Ñ*ØÐö Ø—\”\ˆEØ—*‘*ˆCÙ'¨Ó,ˆLØÓ'Ø*6˜EŸJ™JÓ'ñ	 "ð —”ˆØ�j‰jˆØ�:‰:˜[Õ(¬Z¸¼R×=QÑ=Q×-RÓ-Rð7Ø"×2Ñ2Ó4�ð +7˜EŸJ™JÓ'ñ ó %ˆð	$Ø˜LÑ)ˆDð ˜Ñ&ˆàÕ" uÔ4QÕ'Qô '×3Ò3°EÓ:ˆLÜ˜,¬×(CÑ(C×DÓDÜ˜l¬K¯N©N×,FÑ,F×GÑGö .°Ó1CÙ ðÜŸ8™8×1Ñ1°%·,±,×2DÑ2DÀTÓ2J×2OÑ2O×PÑPÙ$ð Qô ˜<Ð)9×:Ó:Ø(4 Ó%ñ5 %ô: ×$Ò$×&Ò&Ö/EØ—\”\ˆEØ�z‰z Õ,Ü—‘×"Ñ" 5§:¡:×.Ñ.Ü—8‘8×+Ñ+¨E¯J©J×7Ñ7Ü—8‘8×*Ñ*¨5¯:©:×6Ó6Ø—*‘* JÕ.Ü*5¯.©.×*DÑ*DÌbÏfÉfÐ*DÐ*U�ŸJ™JÓ'ñ "ð ÐøôY 'ó Ûðûô ó 	$Ø˜FÑ#‹Dð	$ûô( $ó Úðús7   Â6K-ÃK?Å*ALË-
K<Ë;K<Ë?LÌLÌ
L#Ì"L#c                 ó6   • [        S U  5       5      (       d   eg )Nc              3   ód   #   • U  H&  nUS    SL =(       a    SU;   =(       d    US    SLv •  M(     g7f)rv   Nrw   r4   )Ú.0rñ   s     r6   Ú	<genexpr>Ú:_check_data_column_metadata_consistency.<locals>.<genexpr>º  s;   é € ð âˆAð 
ˆ6‰�dÐ	×	0˜|¨qÑ0×J°Q°v±YÀdÐ5JÔJÚùs   ‚.0)Úall)rb  s    r6   rU  rU  µ  s(   € ô
 ñ áó÷ ñ ð ñ r5   c           
      óh  • U(       a]  U Vs0 s H%  nUR                  S[        US   5      5      US   _M'     nnU R                   Vs/ s H  oTR                  XU5      PM     nnOU R                  n[        U5      S:”  a]  [        R
                  R                  R                  [        [        [        R                  U5      5      U Vs/ s H  owS   PM	     snS9nO,[        R
                  R                  Xb(       a  US   S   OS S9n[        U5      S:”  a  [        X‚5      nU$ s  snf s  snf s  snf )Nrw   rv   r  ©r‡   r   r¼   )r7  r–   r¢   rh   r   rÏ   Ú
MultiIndexÚfrom_tuplesrÊ   r»   ÚastÚliteral_evalÚIndexÚ"_reconstruct_columns_from_metadata)	Úblock_tablerb  r�   rñ   Úcolumns_name_dictrv   Úcolumns_valuesÚ	col_indexrŽ   s	            r6   rV  rV  À  s:  € Þñ !ó
â �ð �E‰E�,Ô 7¸¸&¹	Ó BÓCÀQÀvÁYÒNÙ ð 	ð 
ð
 ;F×:RÒ:Ró
Ú:R°$×!Ñ! $Ö-Ñ:Rð 	ð 
ˆð %×1Ñ1ˆô ˆ>Ó˜QÓô —.‘.×+Ñ+×7Ñ7Ü””S×%Ñ% ~Ó6Ó7Ù6DÓE²n¨˜VÔ$±nÑEð 8ð 
‰ô
 —.‘.×&Ñ&Ø½n °Ñ!2°6Ò!:ÐRVð 'ð 
ˆô
 ˆ>Ó˜QÓÜ4°WÓMˆà€Nùò9
ùò
ùò Fs   Œ,D%ÁD*Ã	D/
c                 ó  • U Vs0 s H  nUR                  SUS   5      U_M     nn/ n/ nU nU H³  n	[        U	[        5      (       a  [        XX•U5      u  pŠnU
c  M-  OcU	S   S:X  aI  U	S   n[        R
                  R                  U	S   U	S   U	S   US9n
[        U
5      [        U 5      :w  a  M  O[        S	U	S    35      eUR                  U
5        UR                  U5        Mµ     [        R
                  n[        U5      S
:”  a  UR                  R                  XgS9nX�4$ [        U5      S
:X  a4  US   n[        XÜR                  5      (       d  UR                  X×S   S9nX�4$ UR                  U R                  5      nX�4$ s  snf )Nrw   rv   rì   rè   ré   rê   rë   )rë   rv   zUnrecognized index kind: r  r�  r   r¼   )r7  rA   rZ   Ú_extract_index_levelr   rÏ   rÐ   rh   rÉ   r•   r‚  Úfrom_arraysr†  rT  )r_  r¤   rb  ra  rñ   Úfield_name_to_metadataÚindex_arraysÚindex_namesÚresult_tablerÖ   rÕ   Ú
index_namerÏ   rÁ   s                 r6   rR  rR  á  sÂ  € ñ óâˆAð 	
�‰ˆl˜A˜f™IÓ&¨Ò)Ùð ð ð €LØ€KØ€LÛ"ˆÜ�eœS×!Ñ!Ü4HØ UÀLó5RÑ1ˆL zàÑ"áð #ð �6‰]˜gÓ%Ø˜v™ˆJÜ%Ÿ.™.×3Ñ3°E¸'±NØ49¸&±MØ9>¸v¹Ø9Cð 4ð EˆKô �;Ó¤3 u£:Ó-áð .ô Ð8¸¸v¹¸ÐHÓIÐIØ×Ñ˜KÔ(Ø×Ñ˜:Ö&ñ' #ô* 
�‰€Bô ˆ<Ó˜1ÓØ—‘×)Ñ)¨,Ð)ÐJˆð ÐÐô 
ˆ\Ó	˜aÓ	Ø˜Q‘ˆÜ˜%§¡×*Ñ*à—H‘H˜U°Q©�HÐ8ˆEð ÐÐð —‘˜eŸn™nÓ-ˆàÐÐùòYs   … Fc                 ó  • X2   S   n[        X%5      nU R                  R                  U5      nUS:X  a  US S 4$ U R                  U5      nUR	                  US9n	S U	l        UR                  UR                  R                  U5      5      nXU4$ )Nrv   éÿÿÿÿ)ra  )Ú _backwards_compatible_index_namerÒ   Úget_field_indexrm   Ú	to_pandasrv   Úremove_column)
r_  r’  rw   r�  ra  Úlogical_namer“  rÂ   r¯   rÕ   s
             r6   r�  r�    s—   € à)Ñ5°fÑ=€LÜ1°*ÓK€JØ�‰×$Ñ$ ZÓ0€AàˆBƒwà˜T 4Ð'Ð'à
�,‰,�q‹/€CØ—-‘-¨\�-Ð:€KØ€KÔØ×-Ñ-Ø×Ñ×+Ñ+¨JÓ7ó€Lð  jÐ0Ð0r5   c                 ó2   • X:X  a  [        U 5      (       a  gU$ )a  Compute the name of an index column that is compatible with older
versions of :mod:`pyarrow`.

Parameters
----------
raw_name : str
logical_name : str

Returns
-------
result : str

Notes
-----
* Part of :func:`~pyarrow.pandas_compat.table_to_blockmanager`
N)rà   )Úraw_namerš  s     r6   r–  r–  )  s   € ð$ ÓÔ$<¸X×$FÑ$FØàÐr5   c                 ó6   • Sn[         R                  " X5      S L$ )Nz^__index_level_\d+__$)ÚreÚmatch)rv   Úpatterns     r6   rà   rà   A  s   € Ø&€GÜ�8Š8�GÓ"¨$Ð.Ð.r5   c                  óð   • [         (       df  [         R                  SSSS[        R                  S[        R                  [        R
                  [        R                  [        R                  S.
5        [         $ )NrM   zdatetime64[ns]rZ   )
r   r<   r;   r   r   rN   r  Úfloatingr=   r   )Ú_pandas_logical_type_mapr   rP   rS   r   r   Úobject_r4   r5   r6   Úget_pandas_logical_type_mapr¥  F  sW   € ÷ $Ò#Ü ×'Ñ'Ø#Ø(Ø*ØÜ—Y‘YØÜ—x‘xÜŸ
™
Ü—z‘zÜ—Z‘Zñ)
ô 	ô $Ð#r5   c                 óœ   • [        5       n X   $ ! [         a1    SU ;   a  [        R                  s $ [        R                  " U 5      s $ f = f)zçGet the numpy dtype that corresponds to a pandas type.

Parameters
----------
pandas_type : str
    The result of a call to pandas.lib.infer_dtype.

Returns
-------
dtype : np.dtype
    The dtype that corresponds to `pandas_type`.
rµ   )r¥  r@   rP   r¤  rW   )rx   Úpandas_logical_type_maps     r6   Ú_pandas_type_to_numpy_typer¨  Y  sK   € ô :Ó;Ðð%Ø&Ñ3Ð3øÜó %Ø�kÓ!ä—:‘:ÒÜ�xŠx˜Ó$Ò$ð	%ús   Œ � A²AÁ
Ac                 óh  • [         R                  n[        U SS5      =(       d    U /n[        U SS5      =(       d    S/n[        X10 S9 VVs/ s H<  u  pVXVR	                  S[        UR                  5      5      UR	                  SS5      4PM>     nnn/ n[        R                  " SS5      n	U GH£  u  pZn[        U
5      nU[        R                  :X  a  UR                  U	5      nGO2U
S	:X  aŠ  [        R                  R                  US
   S   S   5      nUR!                  USS9R#                  U5      n[         R$                  " 5       (       a(  UR'                  [        R(                  " U5      S
   5      nO¢U
S:X  aE  [         R                  R+                  U Vs/ s H  n[,        R.                  " U5      PM     sn5      nOWUR                  S:X  a&  US:X  a   SU
;   d  U
S;   a  UR1                  U5        GMJ  UR                  U:w  a  UR3                  U5      nUR                  U:w  a  U
S	:w  a  UR3                  U5      nUR1                  U5        GM¦     [5        U5      S:”  a  UR7                  X„U R8                  S9$ UR+                  US
   US
   R                  U R:                  S9$ s  snnf s  snf )a  Construct a pandas MultiIndex from `columns` and column index metadata
in `column_indexes`.

Parameters
----------
columns : List[pd.Index]
    The columns coming from a pyarrow.Table
column_indexes : List[Dict[str, str]]
    The column index metadata deserialized from the JSON schema metadata
    in a :class:`~pyarrow.Table`.

Returns
-------
result : MultiIndex
    The index reconstructed using `column_indexes` metadata with levels of
    the correct type.

Notes
-----
* Part of :func:`~pyarrow.pandas_compat.table_to_blockmanager`
r†   Nrj   )Ú	fillvaluerx   ry   rŸ   r·   r;   r   ro   rf   T)Úutcr=   rZ   r>   rµ   )r   rN   r  r�  )rW   rv   )r   rÏ   rg   r   r7  rZ   rW   ÚoperatorÚmethodcallerr¨  rP   rS   r»   r   r   rK  Úto_datetimeÚ
tz_convertrY  Úas_unitr:  r†  r=   ÚDecimalr•   Úastyperh   r‚  r‡   rv   )rŽ   r�   rÏ   r†   Úlabelsr§   r‹  Úlevels_dtypesÚ
new_levelsÚencoderrE  Únumpy_dtyperW   rG   rÂ   s                  r6   r‡  r‡  p  si  € ô, 
�‰€Bô �W˜h¨Ó-×:°'°€FÜ�W˜g tÓ,×6°°€Fô !,Ø¨bò!
ôò!
ÑˆEð 
—‘˜m¬S°·±Ó-=Ó>Ø	�‰�| TÓ	*ó	,ñ!
ð ñ ð €JÜ×#Ò# H¨gÓ6€Gä,9Ñ(ˆ˜[Ü*¨<Ó8ˆð ”B—I‘IÓØ—I‘I˜gÓ&ŠEà˜\Ó)Ü—‘×(Ñ(Ø˜qÑ! *Ñ-¨jÑ9ó;ˆBà—N‘N 5¨d�NÐ3×>Ñ>¸rÓBˆEÜ×#Ò#×%Ñ%ð Ÿ™¤b×&6Ò&6°{Ó&CÀAÑ&FÓG�øà˜YÓ&Ü—N‘N×(Ñ(ÁeÓ)LÂeÀ¬'¯/ª/¸!Ö*<ÁeÑ)LÓM‰Eà�K‰K˜5Ó  [°HÓ%<Ø˜LÓ(¨LÐ<QÓ,Qð ×Ñ˜eÔ$ÚØ�[‰[˜EÓ!Ø—L‘L Ó'ˆEà�;‰;˜+Ó%¨,¸,Ó*FØ—L‘L Ó-ˆEà×Ñ˜%× ñO -:ôR ˆ:ƒ˜ÓØ�}‰}˜Z°w·}±}ˆ}ÐEÐEà�x‰x˜
 1™¨Z¸©]×-@Ñ-@ÀwÇ|Á|ˆxÐTÐTùóoùò: *Ms   ÁAJ)Æ J/
c                 óú  • 0 n0 nU R                   nUS   nU Vs/ s H  n[        U[        5      (       d  M  UPM     nn[        U5      n[        US   5      U-
  n[	        US   5       GH@  u  pšU
R                  S5      nU(       d  U
S   nX˜:¼  a  XYU-
     nUc  SnUR                  U5      nUS:w  d  MM  U
S   S:X  d  MX  X   n[        UR                  [        R                  R                  5      (       d  M‘  U
S	   nU(       d  MŸ  UR                  S
5      nU(       d  M¹  XýR                  R                  :w  d  MÔ  UR                  5       n[        R                  " SUS9n[        R                  R                  UUS9n[        R                   " XL   R"                  U5      X<'   UX,'   GMC     [        U5      S:”  a¹  / n/ n[%        [        U R                   5      5       Ha  n	X’;   a(  UR'                  X)   5        UR'                  X9   5        M0  UR'                  X	   5        UR'                  U R                   U	   5        Mc     [        R(                  R+                  U[        R                   " U5      S9$ U $ s  snf )NrŒ   rŽ   rw   rv   ÚNoner•  rx   r;   ro   rf   rH  rI  )rX   r   )rÒ   )rÒ   rA   rZ   rh   rÎ   r7  r—  rX   r   r   rF   rG   r˜  r*  ÚArrayró   rÜ   rv   rè   r•   ÚTablerŽ  )r_  r%  Úmodified_columnsÚmodified_fieldsrÒ   rŒ   Úidx_colÚn_index_levelsÚ	n_columnsrÂ   ry  rœ  Úidxr¯   ro   Úmetadata_tzÚ	convertedÚtz_aware_typer  rŽ   r$  s                        r6   rQ  rQ  Ç  s9  € ØÐØ€Oà�\‰\€Fà# OÑ4€Má,9ó 2ªM Ü" 7¬C×0÷ ©M€Mð 2ä˜Ó'€NÜ�O IÑ.Ó/°.Ñ@€Iô ! °Ñ!;×<‰ˆà—<‘< Ó-ˆÞà Ñ'ˆHØ‹~à(¨Y©Ñ7�ØÑØ!�à×$Ñ$ XÓ.ˆØ�"�9Ø˜Ñ&¨,Õ6Ø‘j�Ü! #§(¡(¬B¯F©F×,@Ñ,@×AÑAÙØ# JÑ/�ÞÙØ&Ÿl™l¨:Ó6�ß�; ;·(±(·+±+Õ#=Ø #§¡£�IÜ$&§L¢L°¸+Ñ$F�MÜ$&§H¡H×$8Ñ$8¸Ø>Kð %9ð %M�Mô ,.¯8ª8°F±K×4DÑ4DØ4Aó,C�OÑ(à,9Ð$Ô)ñ= =ô@ ÐÓ˜qÓ ØˆØˆÜ”s˜5Ÿ<™<Ó(Ö)ˆAØÓ$Ø—‘Ð/Ñ2Ô3Ø—‘˜oÑ0Ö1à—‘˜u™xÔ(Ø—‘˜eŸl™l¨1™oÖ.ñ *ô �x‰x×#Ñ# G´B·I²I¸fÓ4EÐ#ÐFÐFàˆùòe2s
   šI8·I8c                 ó¬   • [         R                  R                  U5      nU R                  R	                  S5      R                  R                  U5      n U $ )z:
Make a datetime64 Series timezone-aware for the given tz
r«  )r   r   rK  ÚdtÚtz_localizer¯  )ÚseriesrG   s     r6   Úmake_tz_awarerÉ    sA   € ô 
�‰×	 Ñ	  Ó	$€BØ�i‰i×#Ñ# EÓ*ß‘RŸ
™
 2›ð à€Mr5   rå   )r  NT)NNT)NFN)?r„  Úcollections.abcr   Ú
concurrentr   Úconcurrent.futures.threadr0  r   r=   Ú	itertoolsr   r›   r¬  rž  r—   ÚnumpyrP   ÚImportErrorr‰   r   Úpyarrow.libr   r   r	   r   rO   r£  r7   rD   rT   r`   rq   r�   r³   rš   r–   rÃ   rØ   rË   rÚ   ræ   rÑ   rÌ   rÇ   rÿ   r'  rû   rF  r;  rf  rn  rS  rU  rV  rR  r�  r–  rà   r¥  r¨  r‡  rQ  rÉ  r4   r5   r6   Ú<module>rÑ     sQ  ðó& Ý $Ý ó !Ý Û Ý !Û Û Û 	Û ðÛó ß DÑ Dð Ð ØÐ ØÐ òò:ò"#ò,ò"$ò&,ðb +/ôjòZò($òN(ò&?QòD;Qò|
*òòò9ò
ô &ðF IMØ!ôa"òHô&BòJ4ð JNô;ò@!Ð òPòfòôB2ðl ?Cô1ò&ò0/ò
$ò&%ò.TUòn:óBøðK' ó Ø	‚Bðús   ¶C ÃCÃC