ó
    Ñ]jL;  ã                  óÚ  • S SK Jr  S SKJrJr  S SKrS SKJrJ	r
JrJr  S SKJr  S SKJr  S SKJrJr  S SKJrJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SK J!r!J"r"  S SK#J$r$J%r%  \(       a"  S SK&J'r'J(r(  S SK)J*r*J+r+J,r,J-r-  S SK.J/r/  S SK J0r0J1r1          SS jr2        S S jr3S!S jr4      S"S jr5    S#S jr6          S$S jr7 " S S5      r8S%S jr9S&S jr:S'S jr;S(S jr<g))é    )Úannotations)ÚTYPE_CHECKINGÚcastN)ÚNaTÚalgosÚ	internalsÚlib)ÚNA)Úcache_readonly)Úensure_dtype_can_hold_naÚfind_common_type)Úis_1d_only_ea_dtypeÚneeds_i8_conversion)Úconcat_compat)ÚExtensionDtype©Úis_valid_na_for_dtype)Úensure_wrapped_if_datetimelike)Úensure_block_shapeÚnew_block_2d)ÚBlockManagerÚmake_na_array)Ú	GeneratorÚSequence)Ú	ArrayLikeÚAxisIntÚDtypeObjÚShape)ÚIndex)ÚBlockÚBlockPlacementc                óÞ  ^• U=(       a    US:H  nUS:X  a   [        XU5      nUS   R                  XQ5      $ [        U 5      S:”  a­  U S   S   R                  S:”  a—  U S   S   R                  S   R
                  mT[        R                  [        R                  4;   aT  [        U4S jU  5       5      (       a:  [        U 5      S:”  a+  [        S U 5       5      n[        XT5      n[        U4U5      $ [        XU5      n[        U5      S:X  a  US   nUR                  SS9n	Xl        U	$ / n
[        U5       GH  u  p¼US   nUR                   n[#        U5      (       aµ  U Vs/ s H  oÿR                   R$                  PM     nnUR&                  (       d  [        R(                  " USS9nO:[+        UR
                  5      (       a  [-        USSS	9n[/        US
S9nO
[-        USS9n[1        U5      nUR$                  R
                  UR
                  :H  nO[3        XÃS9nSnU(       a  UR5                  UUS9nO
[7        UUS9nU
R9                  U5        GM     [        [        U
5      U5      $ s  snf )zÑ
Concatenate block managers into one.

Parameters
----------
mgrs_indexers : list of (BlockManager, {axis: indexer,...}) tuples
axes : list of Index
concat_axis : int
copy : bool

Returns
-------
BlockManager
r   c              3  ó@   >#   • U  H  u  p[        UT5      v •  M     g 7f©N)Ú_is_homogeneous_mgr)Ú.0ÚmgrÚ_Úfirst_dtypes      €ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pandas/core/internals/concat.pyÚ	<genexpr>Ú'concatenate_managers.<locals>.<genexpr>b   s   øé € ÐVÊ¹f¸cÔ'¨¨[×9Ð9Êùs   ƒé   c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr$   )Úlen)r&   Úxs     r*   r+   r,   g   s   é € Ð3ªd¨œc !Ÿf˜fªdùs   ‚F©Údeep©ÚaxisT©r4   Úea_compat_axisé   )Úndim)Úcopy)Ú	placement)Ú_maybe_reindex_columns_na_proxyÚconcat_horizontalr/   ÚnblocksÚblocksÚdtypeÚnpÚfloat64Úfloat32ÚallÚtupleÚ_concat_homogeneous_fastpathr   r9   Ú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_indexersrF   Úconcat_axisr9   Ú
needs_copyÚmgrsÚshapeÚnbr'   Úoutr>   r:   Ú
join_unitsÚunitÚblkÚjuÚvalsrJ   ÚfastpathÚbr)   s                       @r*   Úconcatenate_managersr^   =   s;  ø€ ð$ ×*˜+¨Ñ*€Jð �aÓÜ.¨tÀJÓOˆØ�A‰w×(Ñ(¨Ó4Ð4ä
ˆ=Ó˜AÓ -°Ñ"2°1Ñ"5×"=Ñ"=ÀÓ"AØ# AÑ& qÑ)×0Ñ0°Ñ3×9Ñ9ˆØœ2Ÿ:™:¤r§z¡zÐ2Ó2ô
 ÔVÉÓ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ªj¨—H‘H—O”O©jˆDÐ9à×#×#ô Ÿš¨°1Ñ5‘Ü$ S§Y¡Y×/Ñ/ä& t°!ÀDÑI�Ü+¨F¸Ñ;‘ä& t°!Ñ4�ä3°FÓ;ˆFà—z‘z×'Ñ'¨6¯<©<Ñ7‰Hä,¨ZÑCˆFØˆHæØ×)Ñ)¨&¸IÐ)ÐF‰Aä˜V¨yÑ9ˆAà�‰�a×ñG ":ôJ œ˜f› tÓ,Ð,ùòA :s   Å!I*c                óÚ   • / nU Hb  u  pEUR                  5        H  u  pgUR                  X   UUSSSS9nM     U(       a  U(       d  UR                  SS9nUR                  U5        Md     U$ )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)r4   Ú
only_sliceÚ
allow_dupsÚuse_na_proxyr1   )ÚitemsÚreindex_indexerr9   rO   )rF   rP   rR   Únew_mgrsr'   ÚindexersÚiÚindexers           r*   r;   r;   ž   s}   € ð €Hã&‰ˆð #Ÿ.™.Ö*‰JˆAØ×%Ñ%Ø‘ØØØØØ!ð &ð ŠCñ +ö žhØ—(‘( �(Ð%ˆCà�‰˜Öñ 'ð  €Oó    c                óà   • U R                   S:w  a  gU R                  S   nUR                  R                  (       a$  UR                  R                  R
                  S:X  d  gUR                  U:H  $ )z;
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)   rY   s      r*   r%   r%   ¿   sV   € ð ‡{�{�aÓØØ
�*‰*�Q‰-€CØ�L‰L×&×&¨3¯<©<×+@Ñ+@×+EÑ+EÈÓ+JØà�9‰9˜Ñ#Ð#ri   c           	     ó(  • [        S U  5       5      (       a†  U  VVs/ s H(  u  p4UR                  S   R                  R                  PM*     nnn[        R
                  " U5      R                  n[        R                  " [        US   5      5      n[        Xg5      nU$ [        R                  " XS9nU[        R                  :X  a  [        R                  n	O[        R                  n	Sn
U  Hp  u  p;UR                  S   nX¬-   nSU;   a-  U	" UR                  S   R                  US   USS2X­24   5        O!UR                  S   R                  USS2X­24'   X¬-  n
Mr     [        R                  " [        US   5      5      n[        Xg5      nU$ s  snnf )z`
With single-Block managers with homogeneous dtypes (that can already hold nan),
we avoid [...]
c              3  ó4   #   • U  H  u  pU(       + v •  M     g 7fr$   © )r&   r(   rf   s      r*   r+   Ú/_concat_homogeneous_fastpath.<locals>.<genexpr>Ö   s   é € Ð
9ª=™K˜Aˆx�<‰<ª=ùs   ‚r   )r?   r-   N)rC   r>   rJ   ÚTr@   rL   Úlibinternalsr!   Úslicer   ÚemptyrA   ÚlibalgosÚtake_2d_axis0_float64_float64Útake_2d_axis0_float32_float32rT   )rP   rT   r)   r'   r(   ÚarrsÚarrÚbprU   Ú	take_funcÚstartrf   Úmgr_lenÚends                 r*   rE   rE   Ì   s\  € ô Ñ
9©=Ó
9×9Ñ9á5BÔC²]©6¨3�—
‘
˜1‘×$Ñ$×&Ô&±]ˆÑCÜ�nŠn˜TÓ"×$Ñ$ˆÜ×(Ò(¬¨u°Q©x«Ó9ˆÜ˜#Ó"ˆØˆ	ä
�(Š(�5Ñ
,€Cà”b—j‘jÓ Ü×:Ñ:‰	ä×:Ñ:ˆ	à€EÛ&‰ˆØ—)‘)˜A‘,ˆØ‰oˆà�‹=ÙØ—
‘
˜1‘×$Ñ$Ø˜‘Ø’A�u�y�LÑ!õð !$§
¡
¨1¡× 4Ñ 4ˆC’�5�9�ÑàÑŠñ 'ô  
×	$Ò	$¤U¨5°©8£_Ó	5€BÜ	�cÓ	€BØ€IùóA Ds   �/Fc           	   #  ó<  #   • U S   R                   S   nU  Vs/ s H  o"R                  PM     nn[        R                  " U5      nU HJ  u  pV/ n[	        U 5       H/  u  p‚XX   n	[        X&X‘S9n
[        U
5      nUR                  U5        M1     Xg4v •  ML     g s  snf 7f)Nr   )Úmax_len)rT   Úblknosrt   Úget_concat_blkno_indexersÚ	enumerateÚ_get_block_for_concat_planÚJoinUnitrO   )rS   r‚   r'   Úblknos_listÚpairsrƒ   r|   Úunits_for_bpÚkÚblknorU   rX   s               r*   rG   rG   û   sœ   é € ð �1‰g�m‰m˜AÑ€Gá)-Ó.ª #—:”:©€KÐ.Ü×2Ò2°;Ó?€EÛ‰
ˆð ˆÜ –o‰FˆAØ‘IˆEä+¨C°UÑLˆBÜ˜B“<ˆDØ×Ñ Ö%ñ &ð ÐÔò ùò /ùs   ‚B™B®A.Bc               ó¾  • U R                   U   n[        U5      [        UR                  5      :X  aC  UR                  R                  (       a(  UR                  R                  R
                  S:X  a  UnU$ U R                  UR                     n[        R                  " Xc5      n[        U[        5      (       a  UR                  U5      nU$ UR                  U5      nU$ )Nr-   )r>   r/   rk   rl   rm   rn   Úblklocsrh   r	   Úmaybe_indices_to_sliceÚ
isinstanceru   Úslice_block_columnsÚtake_block_columns)r'   r|   rŒ   r‚   rY   rU   Ú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ð €Iri   c                  óP   • \ rS rSrS	S jrS
S jrSS jr\SS j5       rSS jr	Sr
g)r‡   i-  c                ó   • Xl         g r$   ©rH   )ÚselfrH   s     r*   Ú__init__ÚJoinUnit.__init__.  s   € Ø�
ri   c                óN   • [        U 5      R                   SU R                  < S3$ )NÚ(Ú))ÚtypeÚ__name__rH   )r˜   s    r*   Ú__repr__ÚJoinUnit.__repr__1  s$   € Ü�t“*×%Ñ%Ð& a¨¯
©
¡~°QÐ7Ð7ri   c                ó’  ^• U R                   (       d  gU R                  nUR                  R                  S:X  a  gUR                  [        :X  a.  UR
                  n[        U4S jUR                  SS9 5       5      $ UR                  nU[        L a  UR                  T:w  a  gU[        L a  [        T5      (       a  g[        UT5      $ )z—
Check that we are all-NA of a type/dtype that is compatible with this dtype.
Augments `self.is_na` with an additional check of the type of NA values.
FÚVTc              3  ó<   >#   • U  H  n[        UT5      v •  M     g 7fr$   r   )r&   r0   r?   s     €r*   r+   Ú,JoinUnit._is_valid_na_for.<locals>.<genexpr>B  s   øé € ÐXÒ@W¸1Ô,¨Q°×6Ð6Ò@Wùs   ƒÚK)Úorder)Úis_narH   r?   ÚkindÚobjectrJ   rC   ÚravelÚ
fill_valuer   r
   r   r   )r˜   r?   rY   rJ   Úna_values    `   r*   Ú_is_valid_na_forÚJoinUnit._is_valid_na_for4  s£   ø€ ð
 �z�zØà�j‰jˆØ�9‰9�>‰>˜SÓ Øà�9‰9œÓØ—Z‘ZˆFÜÔXÀÇÁÐSVÀÑ@WÓXÓXÐXà—>‘>ˆØ”sŠ?˜sŸy™y¨EÓ1ð à”rŠ>Ô1°%×8Ñ8ð ô % X¨uÓ5Ð5ri   c                óR   • U R                   nUR                  R                  S:X  a  gg)Nr£   TF©rH   r?   r©   )r˜   rY   s     r*   r¨   ÚJoinUnit.is_naT  s!   € à�j‰jˆØ�9‰9�>‰>˜SÓ ØØri   c                ó  • Uc:  U R                   R                  R                  S:w  a  U R                   R                  $ UnU R	                  U5      (       a—  U R                   R                  nU[
        R                  " S5      :X  aG  [        [
        R                  U R                   R                  5      nUR                  (       a  US   c  S n[        XR                   R                  U5      $ U R                   R                  $ )Nr£   rª   )r   r   )rH   r?   r©   rJ   r®   r@   r   ÚndarrayÚsizer   rT   )r˜   Úempty_dtypeÚupcasted_nar¬   Ú	blk_dtyperJ   s         r*   Úget_reindexed_valuesÚJoinUnit.get_reindexed_values[  s¿   € ð Ñ 4§:¡:×#3Ñ#3×#8Ñ#8¸CÓ#?à—:‘:×$Ñ$Ð$à$ˆJà×$Ñ$ [×1Ñ1à ŸJ™J×,Ñ,�	à¤§¢¨Ó 2Ó2ô "¤"§*¡*¨d¯j©j×.?Ñ.?Ó@�FØ—{—{ v¨d¡|Ñ';Ø%)˜
ä$ [·*±*×2BÑ2BÀJÓOÐOà—:‘:×$Ñ$Ð$ri   r—   N)rH   r    ÚreturnÚNone)r»   Ústr)r?   r   r»   Úbool)r»   r¾   )r¶   r   r»   r   )rŸ   Ú
__module__Ú__qualname__Ú__firstlineno__r™   r    r®   r   r¨   r¹   Ú__static_attributes__rq   ri   r*   r‡   r‡   -  s+   † ôô8ô6ð@ óó ð÷%ri   r‡   c                ó†  • [        U 5      n[        S U  5       5      n[        X#5      nU  Vs/ s H  nUR                  X$S9PM     nn[        S U 5       5      (       aN  U Vs/ s H(  n[	        UR
                  5      (       a  UOUSSS24   PM*     nn[        USSS9n[        US5      nU$ [        US	S
9nU$ s  snf s  snf )z:
Concatenate values from several join units along axis=1.
c              3  óf   #   • U  H'  oR                   R                  R                  S :H  v •  M)     g7f©r£   Nr±   ©r&   rX   s     r*   r+   Ú*_concatenate_join_units.<locals>.<genexpr>{  ó#   é € ÐNÂ:¸4Ÿ*™*×*Ñ*×/Ñ/°3Ö6Â:ùó   ‚/1)r¶   r·   c              3  óL   #   • U  H  n[        UR                  5      v •  M     g 7fr$   )r   r?   )r&   Úts     r*   r+   rÇ   ƒ  s   é € Ð
;²¨AÔ˜qŸw™w×'Ð'²ùs   ‚"$r   NTr5   r7   r-   r3   )Ú_get_empty_dtypeÚanyÚ_dtype_to_na_valuer¹   r   r?   r   r   )	rW   r9   r¶   Úhas_none_blocksr·   rZ   Ú	to_concatrË   Úconcat_valuess	            r*   rM   rM   u  sê   € ô # :Ó.€KäÑNÁ:ÓNÓN€OÜ$ [ÓB€Kñ óâˆBð 	×Ñ¨KÐÓQÙð ð ô
 Ñ
;±Ó
;×;Ñ;ñ ó
â�ô % Q§W¡W×-Ñ-‰A°1°Qº°T±7Ò:Ùð 	ð 
ô & i°aÈÑMˆÜ*¨=¸!Ó<ˆð
 Ðô & i°aÑ8ˆàÐùò)ùò
s   ­B9Á#/B>c                ó¶  • [        U [        5      (       a  U R                  $ U R                  S;   a)  U R	                  S[
        R                  " U 5      S   5      $ U R                  S;   a  U R	                  S5      $ U R                  S:X  a  gU R                  S;   a  U(       d  g[
        R                  $ U R                  S	:X  a  [
        R                  $ [        e)
z*
Find the NA value to go with this dtype.
ÚmMr   r   ÚfcÚNaNr]   NÚiuÚO)	r�   r   r­   r©   rž   r@   Údatetime_dataÚnanÚNotImplementedError)r?   rÏ   s     r*   rÎ   rÎ   •  s¨   € ô �%œ×(Ñ(Ø�~‰~ÐØ	�‰�tÓ	Ø�z‰z˜%¤×!1Ò!1°%Ó!8¸Ñ!;Ó<Ð<Ø	�‰�tÓ	Ø�z‰z˜%Ó Ð Ø	�‰�sÓ	àØ	�‰�tÓ	ÞàÜ�v‰vˆØ	�‰�sÓ	Ü�v‰vˆÜ
Ðri   c                óœ  • [         R                  " U  Vs/ s H  oR                  R                  PM     sn5      (       a  U S   R                  R                  nU$ [	        S U  5       5      nU  Vs/ s H+  oDR
                  (       a  M  UR                  R                  PM-     nn[        U5      nU(       a  [        U5      nU$ s  snf s  snf )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  óf   #   • U  H'  oR                   R                  R                  S :H  v •  M)     g7frÅ   r±   rÆ   s     r*   r+   Ú#_get_empty_dtype.<locals>.<genexpr>º  rÈ   rÉ   )r	   Údtypes_all_equalrH   r?   rÍ   r¨   r   r   )rW   rZ   r¶   rÏ   rX   Údtypesr?   s          r*   rÌ   rÌ   ¬  s¢   € ô ×Ò±jÓA²j°ŸX™XŸ^œ^±jÑA×BÑBØ  ‘m×)Ñ)×/Ñ/ˆØÐäÑNÁ:ÓNÓN€Oá+5ÓHª: 4¿Z½ZÓˆd�j‰j×Ô©:€FÐHä˜VÓ$€EÞÜ(¨Ó/ˆà€Lùò Bùò Is   •CÁ1C	Â	C	c                óì   ^• U S   R                   mTR                  R                  S:X  a  g[        U4S jU  5       5      =(       a.    [        U4S jU  5       5      =(       a    [        S U  5       5      $ )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  ód   >#   • U  H%  n[        UR                  5      [        T5      L v •  M'     g 7fr$   )rž   rH   ©r&   rZ   Úfirsts     €r*   r+   Ú)_is_uniform_join_units.<locals>.<genexpr>Ñ  s"   øé € Ð?²J¨bŒD�—‘‹Nœd 5›kÕ)²Jùs   ƒ-0c              3  ó¾   >#   • U  HR  nUR                   R                  TR                  :H  =(       d#    UR                   R                  R                  S ;   v •  MT     g7f)ÚiubNr±   râ   s     €r*   r+   rä   Ô  sO   øé € ð 
ò
 !�ð	 �H‰H�N‰N˜eŸk™kÑ)÷ ,ð �x‰x�~‰~×"Ñ" eÑ+ô,ò !ùs   ƒAAc              3  ó|   #   • U  H2  oR                   (       + =(       d    UR                  R                  v •  M4     g 7fr$   )r¨   rH   rK   )r&   rZ   s     r*   r+   rä   Þ  s&   é € ÐGºJ°b—‘ŒL×1˜BŸH™H×1Ñ1Ô1ºJùs   ‚:<)rH   r?   r©   rC   )rW   rã   s    @r*   rI   rI   Å  ss   ø€ ð �q‰M×Ñ€EØ‡{�{×Ñ˜3ÓØô 	Ô?±JÓ?Ó?÷ 	Hô 	ô 
ñ
 !ó
ó 	
÷	Hô 	ÑG¹JÓGÓGðri   )rF   úlist[Index]rQ   r   r9   r¾   r»   r   )rF   rè   rP   z0list[tuple[BlockManager, dict[int, np.ndarray]]]rR   r¾   r»   úlist[BlockManager])r'   r   r)   r   r»   r¾   )rT   r   r)   znp.dtyper»   r    )rS   ré   r»   z0Generator[tuple[BlockPlacement, list[JoinUnit]]])
r'   r   r|   r!   rŒ   Úintr‚   rê   r»   r    )rW   úlist[JoinUnit]r9   r¾   r»   r   )r?   r   rÏ   r¾   )rW   zSequence[JoinUnit]r»   r   )rW   rë   r»   r¾   )=Ú
__future__r   Útypingr   r   Únumpyr@   Úpandas._libsr   r   rw   r   rt   r	   Úpandas._libs.missingr
   Úpandas.util._decoratorsr   Úpandas.core.dtypes.castr   r   Úpandas.core.dtypes.commonr   r   Úpandas.core.dtypes.concatr   Úpandas.core.dtypes.dtypesr   Úpandas.core.dtypes.missingr   Ú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^   r;   r%   rE   rG   r†   r‡   rM   rÎ   rÌ   rI   rq   ri   r*   Ú<module>rý      s@  ðÝ "÷ó
 ÷ó õ $Ý 2÷÷õ 4Ý 4Ý <å C÷÷ö
 ÷÷
ó õ ÷ð^-Ø$ð^-Ø3:ð^-ØBFð^-àô^-ðBØ
ðàCðð ðð ô	ôB
$ð,Øð,Ø.6ð,à
ô,ð^Ø
ðà5ôð,Ø	ðØ)ðØ25ðØCFðà
ô÷8E%ñ E%ôPô@ô.õ2ri   