Ë
    u™ãjÆ7  ã                  óÒ  — d dl mZ d dlmZ d dlZd dlmZm	Z
mZ d dlmZ d dlmZmZ d dlmZ d dlmZmZ d d	l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!m"Z" er"d dl#m$Z$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d„Z/	 	 	 	 	 	 	 	 d d„Z0d!d„Z1	 	 	 	 	 	 d"d„Z2	 	 	 	 d#d„Z3	 	 	 	 	 	 	 	 	 	 d$d„Z4 G d„ d«      Z5	 d	 	 	 	 	 	 	 d%d„Z6d&d„Z7	 d	 	 	 	 	 d'd„Z8d(d„Z9y))é    )Úannotations)ÚTYPE_CHECKINGN)ÚalgosÚ	internalsÚlib)Úcache_readonly)Úensure_dtype_can_hold_naÚfind_common_type)Úis_1d_only_ea_dtype)Úconcat_compatÚunion_categories_compat)ÚCategoricalDtypeÚExtensionDtype)ÚCategorical)Úensure_wrapped_if_datetimelike)Úensure_block_shapeÚnew_block_2d)ÚBlockManagerÚmake_na_array)Ú	GeneratorÚSequence)Ú	ArrayLikeÚAxisIntÚDtypeObjÚShape)ÚIndex)ÚBlockÚBlockPlacementc                óÌ  ‡— |xr |dk(  }|dk(  r"t        || |«      }|d   j                  ||«      S t        | «      dkD  r¤| d   d   j                  dkD  r�| d   d   j                  d   j
                  Š‰t        j                  t        j                  fv rNt        ˆfd„| D «       «      r:t        | «      dkD  r,t        d„ |D «       «      }t        | |‰«      }t        |f|«      S t        || |«      }t        |«      dk(  r |d   }	|	j                  d¬«      }
||
_        |
S g }t        |«      D �]  \  }}|d   }|j                   }t#        |«      r¶|D �cg c]  }|j                   j$                  ‘Œ }}|j&                  st        j(                  |d¬«      }n@t+        |j
                  «      rt-        |dd|¬	«      }t/        |d
¬«      }nt-        |d|¬«      }t1        |«      }|j$                  j
                  |j
                  k(  }nt3        |||¬«      }d}|r|j5                  ||¬«      }nt7        ||¬«      }|j9                  |«       �Œ t        t        |«      |«      S c c}w )a´  
    Concatenate block managers into one.

    Parameters
    ----------
    mgrs_indexers : list of (BlockManager, {axis: indexer,...}) tuples
    axes : list of Index
    concat_axis : int
    copy : bool
    union_categories : bool, default False
        If True, union the categories of categorical blocks being concatenated
        rather than falling back to a non-categorical dtype.

    Returns
    -------
    BlockManager
    r   c              3  ó<   •K  — | ]  \  }}t        |‰«      –— Œ y ­w©N)Ú_is_homogeneous_mgr)Ú.0ÚmgrÚ_Úfirst_dtypes      €úg/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/core/internals/concat.pyú	<genexpr>z'concatenate_managers.<locals>.<genexpr>g   s   øè ø€ ÒV¹f¸cÀ1Ô'¨¨[×9ÑVùs   ƒé   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr!   )Úlen)r#   Úxs     r'   r(   z'concatenate_managers.<locals>.<genexpr>l   s   è ø€ Ò3¨œc !ŸfÑ3ùs   ‚F©Údeep)ÚaxisT©r/   Úea_compat_axisÚunion_categoriesé   )Úndim©r/   r2   )Úcopyr2   )Ú	placement)Ú_maybe_reindex_columns_na_proxyÚconcat_horizontalr+   ÚnblocksÚblocksÚdtypeÚnpÚfloat64Úfloat32ÚallÚtupleÚ_concat_homogeneous_fastpathr   r6   ÚaxesÚ_get_combined_planÚblockÚ_is_uniform_join_unitsÚvaluesÚis_extensionÚconcatenater   r   r   r   Ú_concatenate_join_unitsÚmake_block_same_classr   Úappend)Úmgrs_indexersrC   Úconcat_axisr6   r2   Ú
needs_copyÚmgrsÚshapeÚnbr$   Úoutr;   r7   Ú
join_unitsÚunitÚblkÚjuÚvalsrG   ÚfastpathÚbr&   s                        @r'   Úconcatenate_managersr[   ;   s[  ø€ ð2 Ò*˜+¨Ñ*€Jð �aÒÜ.¨t°]ÀJÓOˆØ�A‰w×(Ñ(¨¨tÓ4Ð4ä
ˆ=Ó˜AÒ -°Ñ"2°1Ñ"5×"=Ñ"=ÀÒ"AØ# AÑ& qÑ)×0Ñ0°Ñ3×9Ñ9ˆØœ2Ÿ:™:¤r§z¡zÐ2Ñ2ô
 ÓVÈÔVÔVÜ˜Ó&¨Ò*ô Ñ3¨dÔ3Ó3�Ü1°-ÀÈÓT�Ü# R E¨4Ó0Ð0ä*¨4°À
ÓK€Dä
ˆ4ƒy�A‚~Ø�1‰gˆØ�h‰h˜EˆhÓ"ˆØˆŒØˆ
à€Fô "4°DÓ!9ó *Ñˆ	�:Ø˜!‰}ˆØ�j‰jˆä! *Ô-Ø.8Ö9¨�B—H‘H—O“OÐ9ˆDÐ9à×#Ò#ô Ÿ™¨°1Ô5‘Ü$ S§Y¡YÔ/ä&ØØØ#'Ø%5ô	�ô ,¨F¸Ô;‘ä& t°!ÐFVÔW�ä3°FÓ;ˆFà—z‘z×'Ñ'¨6¯<©<Ñ7‰Hä,Ø Ð8HôˆFð ˆHáØ×)Ñ)¨&¸IÐ)ÓF‰Aä˜V¨yÔ9ˆAà�‰�aÖðU*ôX œ˜f› tÓ,Ð,ùòO :s   ÅI!c           
     óÐ   — g }|D ]^  \  }}|j                  «       D ]  \  }}|j                  | |   ||ddd¬«      }Œ! |r|s|j                  d¬«      }|j                  |«       Œ` |S )zô
    Reindex along columns so that all of the BlockManagers being concatenated
    have matching columns.

    Columns added in this reindexing have dtype=np.void, indicating they
    should be ignored when choosing a column's final dtype.
    T)r/   Ú
only_sliceÚ
allow_dupsÚuse_na_proxyr-   )ÚitemsÚreindex_indexerr6   rL   )rC   rM   rO   Únew_mgrsr$   ÚindexersÚiÚindexers           r'   r8   r8   ª   s�   € ð €Hà&ò ‰ˆˆXð #Ÿ.™.Ó*ò 	‰JˆAˆwØ×%Ñ%Ø�Q‘ØØØØØ!ð &ó ‰Cð	ñ ™hØ—(‘( �(Ó%ˆCà�‰˜Õðð  €Oó    c                óÒ   — | j                   dk7  ry| j                  d   }|j                  j                  r#|j                  j                  j
                  dk(  sy|j                  |k(  S )zC
    Check if this Manager can be treated as a single ndarray.
    r)   Fr   )r:   r;   Úmgr_locsÚis_slice_likeÚas_sliceÚstepr<   )r$   r&   rV   s      r'   r"   r"   Ë   sV   € ð ‡{�{�aÒØØ
�*‰*�Q‰-€CØ�L‰L×&Ò&¨3¯<©<×+@Ñ+@×+EÑ+EÈÒ+JØà�9‰9˜Ñ#Ð#rf   c           	     ó  — t        d„ | D «       «      rƒ| D ��cg c](  \  }}|j                  d   j                  j                  ‘Œ* }}}t	        j
                  |«      j                  }t        j                  t        |d   «      «      }t        ||«      }|S t	        j                  ||¬«      }|t        j                  k(  rt        j                  }	nt        j                  }	d}
| D ]r  \  }}|j                  d   }|
|z   }d|v r. |	|j                  d   j                  |d   |dd…|
|…f   «       n"|j                  d   j                  |dd…|
|…f<   |
|z  }
Œt t        j                  t        |d   «      «      }t        ||«      }|S c c}}w )zl
    With single-Block managers with homogeneous dtypes (that can already hold nan),
    we avoid [...]
    c              3  ó(   K  — | ]
  \  }}| –— Œ y ­wr!   © )r#   r%   rc   s      r'   r(   z/_concat_homogeneous_fastpath.<locals>.<genexpr>â   s   è ø€ Ò
9™K˜A˜xˆxŒ<Ñ
9ùs   ‚r   ©r<   r)   N)r@   r;   rG   ÚTr=   rI   Úlibinternalsr   Úslicer   Úemptyr>   ÚlibalgosÚtake_2d_axis0_float64_float64Útake_2d_axis0_float32_float32rQ   )rM   rQ   r&   r$   r%   ÚarrsÚarrÚbprR   Ú	take_funcÚstartrc   Úmgr_lenÚends                 r'   rB   rB   Ø   so  € ô Ñ
9¨=Ô
9Ô9à5B×C©6¨3°�—
‘
˜1‘×$Ñ$×&Ó&ÐCˆÑCÜ�n‰n˜TÓ"×$Ñ$ˆÜ×(Ñ(¬¨u°Q©x«Ó9ˆÜ˜#˜rÓ"ˆØˆ	ä
�(‰(�5 Ô
,€Cà”b—j‘jÒ Ü×:Ñ:‰	ä×:Ñ:ˆ	à€EØ&ò ‰ˆˆXØ—)‘)˜A‘,ˆØ�g‰oˆà�‰=ÙØ—
‘
˜1‘×$Ñ$Ø˜‘Ø’A�u˜S�y�LÑ!õð !$§
¡
¨1¡× 4Ñ 4ˆC’�5˜�9�Ñà�Ñ‰ðô  
×	$Ñ	$¤U¨5°©8£_Ó	5€BÜ	�c˜2Ó	€BØ€IùóA Ds   ˜-F	c              #  ó@  K  — | d   j                   d   }| D �cg c]  }|j                  ‘Œ }}t        j                  |«      }|D ]P  \  }}g }t	        | «      D ]5  \  }}||   }	t        |||	|¬«      }
t        |
«      }|j                  |«       Œ7 ||f–— ŒR y c c}w ­w)Nr   )Úmax_len)rQ   Úblknosrq   Úget_concat_blkno_indexersÚ	enumerateÚ_get_block_for_concat_planÚJoinUnitrL   )rP   r   r$   Úblknos_listÚpairsr€   ry   Úunits_for_bpÚkÚblknorR   rU   s               r'   rD   rD     s´   è ø€ ð �1‰g�m‰m˜AÑ€Gà)-Ö. #�3—:“:Ð.€KÐ.Ü×2Ñ2°;Ó?€EØò ‰
ˆ�ð ˆÜ “oò 	&‰FˆAˆsØ˜1‘IˆEä+¨C°°UÀGÔLˆBÜ˜B“<ˆDØ×Ñ Õ%ð	&ð �,ÐÓñùò /ùs   ‚B™B¬A2Bc               ó¦  — | j                   |   }t        |«      t        |j                  «      k(  r=|j                  j                  r'|j                  j                  j
                  dk(  r|}|S | j                  |j                     }t        j                  ||«      }t        |t        «      r|j                  |«      }|S |j                  |«      }|S )Nr)   )r;   r+   rh   ri   rj   rk   Úblklocsre   r   Úmaybe_indices_to_sliceÚ
isinstancerr   Úslice_block_columnsÚtake_block_columns)r$   ry   r‰   r   rV   rR   Úax0_blk_indexerÚslcs           r'   rƒ   rƒ     s»   € ð �*‰*�UÑ
€Cô ˆ2ƒw”#�c—l‘lÓ#Ò#Ø�‰×"Ò" s§|¡|×'<Ñ'<×'AÑ'AÀQÒ'Fàˆð €Ið Ÿ+™+ b§j¡jÑ1ˆä×(Ñ(¨¸'ÓBˆô �cœ5Ô!Ø×(Ñ(¨Ó-ˆBð
 €Ið ×'Ñ'¨Ó,ˆBð €Irf   c                  ó6   — e Zd Zdd„Zdd„Zedd„«       Zd	d„Zy)
r„   c                ó   — || _         y r!   )rE   )ÚselfrE   s     r'   Ú__init__zJoinUnit.__init__:  s	   € Øˆ�
rf   c                óL   — t        | «      j                  › d| j                  ›d�S )Nú(ú))ÚtypeÚ__name__rE   ©r”   s    r'   Ú__repr__zJoinUnit.__repr__=  s$   € Ü�t“*×%Ñ%Ð& a¨¯
©
 ~°QÐ7Ð7rf   c                óH   — | j                   j                  j                  dk(  S ©NÚV©rE   r<   Úkindr›   s    r'   Úis_nazJoinUnit.is_na@  s   € à�z‰z×Ñ×$Ñ$¨Ñ+Ð+rf   c                ó¶   — | j                   j                  j                  dk(  r!t        || j                   j                  |«      S | j                   j
                  S rž   )rE   r<   r¡   r   rQ   rG   )r”   Úempty_dtypeÚupcasted_nas      r'   Úget_reindexed_valueszJoinUnit.get_reindexed_valuesD  sC   € Ø�:‰:×Ñ× Ñ  CÒ'Ü  ¨d¯j©j×.>Ñ.>ÀÓLÐLØ�z‰z× Ñ Ð rf   N)rE   r   ÚreturnÚNone)r§   Ústr)r§   Úbool)r¤   r   r§   r   )rš   Ú
__module__Ú__qualname__r•   rœ   r   r¢   r¦   rn   rf   r'   r„   r„   9  s%   „ óó8ð ò,ó ð,ô!rf   r„   c                ó„  — t        | |¬«      }t        d„ | D «       «      }t        ||«      }| D �cg c]  }|j                  ||¬«      ‘Œ }}t        d„ |D «       «      rJ|D �cg c]"  }t	        |j
                  «      r|n|ddd…f   ‘Œ$ }}t        |dd|¬«      }	t        |	d	«      }	|	S t        |d
|¬«      }	|	S c c}w c c}w )zB
    Concatenate values from several join units along axis=1.
    )r2   c              3  ób   K  — | ]'  }|j                   j                  j                  d k(  –— Œ) y­w©rŸ   Nr    ©r#   rU   s     r'   r(   z*_concatenate_join_units.<locals>.<genexpr>T  ó%   è ø€ ÒN¸4˜$Ÿ*™*×*Ñ*×/Ñ/°3Õ6ÑNùó   ‚-/)r¤   r¥   c              3  óF   K  — | ]  }t        |j                  «      –— Œ y ­wr!   )r   r<   )r#   Úts     r'   r(   z*_concatenate_join_units.<locals>.<genexpr>\  s   è ø€ Ò
;¨AÔ˜qŸw™w×'Ñ
;ùs   ‚!r   NTr0   r3   r)   r5   )Ú_get_empty_dtypeÚanyÚ_dtype_to_na_valuer¦   r   r<   r   r   )
rT   r6   r2   r¤   Úhas_none_blocksr¥   rW   Ú	to_concatr´   Úconcat_valuess
             r'   rJ   rJ   J  sõ   € ô # :Ð@PÔQ€KäÑNÀ:ÔNÓN€OÜ$ [°/ÓB€Kð öàð 	×Ñ¨KÀ[ÐÕQð€Ið ô
 Ñ
;°Ô
;Ô;ð ö
àô % Q§W¡WÔ-‰A°1°Qº°T±7Ñ:ð
ˆ	ð 
ô &Ø˜A¨dÐEUô
ˆô +¨=¸!Ó<ˆð Ðô	 &Ø˜AÐ0@ô
ˆð Ðùò1ùò
s   °B8Á"'B=c                ó�  — t        | t        «      r| j                  S | j                  dv r(| j	                  dt        j                  | «      d   «      S | j                  dv r| j	                  d«      S | j                  dk(  ry| j                  dv r|syt
        j                  S | j                  d	k(  rt
        j                  S t        ‚)
z2
    Find the NA value to go with this dtype.
    ÚmMÚNaTr   ÚfcÚNaNrZ   NÚiuÚO)	r�   r   Úna_valuer¡   r™   r=   Údatetime_dataÚnanÚNotImplementedError)r<   r¸   s     r'   r·   r·   r  s¥   € ô �%œÔ(Ø�~‰~ÐØ	�‰�tÑ	Ø�z‰z˜%¤×!1Ñ!1°%Ó!8¸Ñ!;Ó<Ð<Ø	�‰�tÑ	Ø�z‰z˜%Ó Ð Ø	�‰�sÒ	àØ	�‰�tÑ	ÙàÜ�v‰vˆØ	�‰�sÒ	Ü�v‰vˆÜ
Ðrf   c                ó
  — t        j                  | D �cg c]  }|j                  j                  ‘Œ c}«      r| d   j                  j                  }|S t	        d„ | D «       «      }| D �cg c]%  }|j
                  rŒ|j                  j                  ‘Œ' }}|rE|rC|rAt        d„ |D «       «      r/|D �cg c]  }t        g |¬«      ‘Œ }}t        |«      j                  S t        |«      }	|rt        |	«      }	|	S c c}w c c}w c c}w )zÂ
    Return dtype and N/A values to use when concatenating specified units.

    Returned N/A value may be None which means there was no casting involved.

    Returns
    -------
    dtype
    r   c              3  ób   K  — | ]'  }|j                   j                  j                  d k(  –— Œ) y­wr¯   r    r°   s     r'   r(   z#_get_empty_dtype.<locals>.<genexpr>™  r±   r²   c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wr!   )r�   r   )r#   Údts     r'   r(   z#_get_empty_dtype.<locals>.<genexpr>ž  s   è ø€ ÒA°BŒz˜"Ô.×/ÑAùs   ‚ro   )r   Údtypes_all_equalrE   r<   r¶   r¢   r@   r   r   r
   r	   )
rT   r2   rW   r¤   r¸   rU   ÚdtypesrÉ   Úemptiesr<   s
             r'   rµ   rµ   ‰  sä   € ô ×Ñ°jÖA°˜RŸX™XŸ^›^ÒAÔBØ  ‘m×)Ñ)×/Ñ/ˆØÐäÑNÀ:ÔNÓN€Oà+5ÖH 4¸T¿Z»Zˆd�j‰j×ÓÐH€FÐHá™O±ÜÑA¸&ÔAÔAð <BÖB°R”{ 2¨RÖ0ÐBˆGÐBÜ*¨7Ó3×9Ñ9Ð9ä˜VÓ$€EÙÜ(¨Ó/ˆà€Lùò) Bùò Iùò Cs   ”C6Á)C;Á;C;Â1D c                óÒ   ‡— | d   j                   Š‰j                  j                  dk(  ryt        ˆfd„| D «       «      xr( t        ˆfd„| D «       «      xr t        d„ | D «       «      S )zÏ
    Check if the join units consist of blocks of uniform type that can
    be concatenated using Block.concat_same_type instead of the generic
    _concatenate_join_units (which uses `concat_compat`).

    r   rŸ   Fc              3  ó^   •K  — | ]$  }t        |j                  «      t        ‰«      u –— Œ& y ­wr!   )r™   rE   ©r#   rW   Úfirsts     €r'   r(   z)_is_uniform_join_units.<locals>.<genexpr>¸  s"   øè ø€ Ò?¨bŒD�—‘‹Nœd 5›kÔ)Ñ?ùs   ƒ*-c              3  ó¬   •K  — | ]K  }|j                   j                  ‰j                  k(  xs" |j                   j                  j                  d v –— ŒM y­w)ÚiubNr    rÏ   s     €r'   r(   z)_is_uniform_join_units.<locals>.<genexpr>»  sN   øè ø€ ò 
ð
 ð	 �H‰H�N‰N˜eŸk™kÑ)ò ,ð �x‰x�~‰~×"Ñ" eÐ+ó,ñ
ùs   ƒAAc              3  óf   K  — | ])  }|j                    xs |j                  j                  –— Œ+ y ­wr!   )r¢   rE   rH   )r#   rW   s     r'   r(   z)_is_uniform_join_units.<locals>.<genexpr>Å  s(   è ø€ ÒG°b�—‘ˆLÒ1˜BŸH™H×1Ñ1Ó1ÑGùs   ‚/1)rE   r<   r¡   r@   )rT   rÐ   s    @r'   rF   rF   ¬  ss   ø€ ð �q‰M×Ñ€EØ‡{�{×Ñ˜3ÒØô 	Ó?°JÔ?Ó?ò 	Hô 	ó 
ð
 !ô
ó 	
ò	Hô 	ÑG¸JÔGÓGðrf   )F)
rC   úlist[Index]rN   r   r6   rª   r2   rª   r§   r   )rC   rÔ   rM   z0list[tuple[BlockManager, dict[int, np.ndarray]]]rO   rª   r§   úlist[BlockManager])r$   r   r&   r   r§   rª   )rQ   r   r&   znp.dtyper§   r   )rP   rÕ   r§   z0Generator[tuple[BlockPlacement, list[JoinUnit]]])
r$   r   ry   r   r‰   Úintr   rÖ   r§   r   )rT   úlist[JoinUnit]r6   rª   r2   rª   r§   r   )r<   r   r¸   rª   )rT   zSequence[JoinUnit]r2   rª   r§   r   )rT   r×   r§   rª   ):Ú
__future__r   Útypingr   Únumpyr=   Úpandas._libsr   rt   r   rq   r   Úpandas.util._decoratorsr   Úpandas.core.dtypes.castr	   r
   Úpandas.core.dtypes.commonr   Úpandas.core.dtypes.concatr   r   Úpandas.core.dtypes.dtypesr   r   Úpandas.core.arraysr   Úpandas.core.constructionr   Úpandas.core.internals.blocksr   r   Úpandas.core.internals.managersr   r   Úcollections.abcr   r   Úpandas._typingr   r   r   r   Úpandasr   r   r   r[   r8   r"   rB   rD   rƒ   r„   rJ   r·   rµ   rF   rn   rf   r'   ú<module>rè      s˜  ðÝ "å  ã ÷ñ õ
 3÷õ :÷÷õ
 +Ý C÷÷ñ
 ÷÷
ó õ ÷ð #ðl-à
ðl-ð ðl-ð ð	l-ð
 ðl-ð ól-ð^Ø
ðàCðð ðð ó	óB
$ð,Øð,Ø.6ð,à
ó,ð^Ø
ðà5óð,Ø	ðØ)ðØ25ðØCFðà
ó÷8!ñ !ð( #ð%Øð%à
ð%ð ð%ð ó	%óPð0 >Cð Ø"ð Ø6:ð àó ôFrf   