§
    	�’j+=  ã                  ó|  — d dl mZ d dlmZmZ d dlZd dlmZm	Z
mZmZ d dlmZ d dlmZ d dlmZmZ d dlmZ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" 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 m0Z0m1Z1 d?d„Z2d@d „Z3dAd$„Z4dBd)„Z5dCd,„Z6dDd2„Z7 G d3„ d4¦  «        Z8dEd8„Z9dFd;„Z:dGd=„Z;dHd>„Z<dS )Ié    )Ú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ÚBlockPlacementÚaxesúlist[Index]Úconcat_axisr   ÚcopyÚboolÚreturnr   c                ó$  ‡— |o|dk    }|dk    r-t          || |¦  «        }|d                              ||¦  «        S t          | ¦  «        dk    r¸| d         d         j        dk    r¡| d         d         j        d         j        Š‰t          j        t          j        fv rit          ˆfd„| D ¦   «         ¦  «        rNt          | ¦  «        dk    r;t          d„ |D ¦   «         ¦  «        }t          | |‰¦  «        }t          |f|¦  «        S t          || |¦  «        }t          |¦  «        dk    r'|d         }|                     d¬¦  «        }	||	_        |	S g }
t          |¦  «        D �]\  }}|d         }|j        }t#          |¦  «        r˜d„ |D ¦   «         }|j        st          j        |d¬¦  «        }nIt)          |j        ¦  «        r$t+          |dd	¬
¦  «        }t-          |d¬¦  «        }nt+          |d¬¦  «        }t/          |¦  «        }|j        j        |j        k    }nt3          ||¬¦  «        }d}|r|                     ||¬¦  «        }nt7          ||¬¦  «        }|
                     |¦  «         �Œt          t          |
¦  «        |¦  «        S )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  ó>   •K  — | ]\  }}t          |‰¦  «        V — Œd S ©N)Ú_is_homogeneous_mgr)Ú.0ÚmgrÚ_Úfirst_dtypes      €úJC:\Projects\DSCons\.venv\Lib\site-packages\pandas\core\internals\concat.pyú	<genexpr>z'concatenate_managers.<locals>.<genexpr>b   s2   øè è € ÐVÐV¹f¸cÀ1Õ'¨¨[Ñ9Ô9ÐVÐVÐVÐVÐVÐVó    é   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r*   )Úlen)r,   Úxs     r0   r1   z'concatenate_managers.<locals>.<genexpr>g   s(   è è € Ð3Ð3¨�c !™fœfÐ3Ð3Ð3Ð3Ð3Ð3r2   F©Údeepc                ó&   — g | ]}|j         j        ‘ŒS © )ÚblockÚvalues©r,   Újus     r0   ú
<listcomp>z(concatenate_managers.<locals>.<listcomp>{   s   € Ð9Ð9Ð9¨�B”H”OÐ9Ð9Ð9r2   ©ÚaxisT©rA   Úea_compat_axisé   )Úndim)r%   )Ú	placement)Ú_maybe_reindex_columns_na_proxyÚconcat_horizontalr5   ÚnblocksÚblocksÚdtypeÚnpÚfloat64Úfloat32ÚallÚtupleÚ_concat_homogeneous_fastpathr   r%   r"   Ú_get_combined_planr;   Ú_is_uniform_join_unitsÚis_extensionÚconcatenater   r   r   r   r<   Ú_concatenate_join_unitsÚmake_block_same_classr   Úappend)Úmgrs_indexersr"   r$   r%   Ú
needs_copyÚmgrsÚshapeÚnbr-   ÚoutrJ   rF   Ú
join_unitsÚunitÚblkÚvalsr<   ÚfastpathÚbr/   s                      @r0   Úconcatenate_managersre   =   sÂ  ø€ ð$ Ð*˜+¨Ò*€Jð �aÒÐÝ.¨t°]ÀJÑOÔOˆØ�AŒw×(Ò(¨¨tÑ4Ô4Ð4å
ˆ=ÑÔ˜AÒÐ -°Ô"2°1Ô"5Ô"=ÀÒ"AÐ"AØ# AÔ& qÔ)Ô0°Ô3Ô9ˆØ�2œ:¥r¤zÐ2Ð2Ð2õ
 ÐVÐVÐVÐVÈÐVÑVÔVÑVÔVð1å˜Ñ&Ô&¨Ò*Ð*õ Ð3Ð3¨dÐ3Ñ3Ô3Ñ3Ô3�Ý1°-ÀÈÑTÔT�Ý# R E¨4Ñ0Ô0Ð0å*¨4°À
ÑKÔK€Då
ˆ4�y„y�A‚~€~Ø�1ŒgˆØ�hŠh˜EˆhÑ"Ô"ˆØˆŒØˆ
à€Fõ "4°DÑ!9Ô!9ð #ñ #Ñˆ	�:Ø˜!Œ}ˆØŒjˆå! *Ñ-Ô-ð 	Ø9Ð9¨jÐ9Ñ9Ô9ˆDàÔ#ð 5õ œ¨°1Ð5Ñ5Ô5��Ý$ S¤YÑ/Ô/ð 5å& t°!ÀDÐIÑIÔI�Ý+¨F¸Ð;Ñ;Ô;��å& t°!Ð4Ñ4Ô4�å3°FÑ;Ô;ˆFà”zÔ'¨6¬<Ò7ˆHˆHå,¨Z¸dÐCÑCÔCˆFØˆHàð 	:Ø×)Ò)¨&¸IÐ)ÑFÔFˆAˆAå˜V¨yÐ9Ñ9Ô9ˆAà�Š�aÑÔÐÑå�˜f™œ tÑ,Ô,Ð,r2   rY   ú0list[tuple[BlockManager, dict[int, np.ndarray]]]rZ   úlist[BlockManager]c           
     óî   — g }|D ]o\  }}|                      ¦   «         D ]&\  }}|                     | |         ||ddd¬¦  «        }Œ'|r|s|                     d¬¦  «        }|                     |¦  «         Œp|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)rA   Ú
only_sliceÚ
allow_dupsÚuse_na_proxyr7   )ÚitemsÚreindex_indexerr%   rX   )r"   rY   rZ   Únew_mgrsr-   ÚindexersÚiÚindexers           r0   rG   rG   ž   s«   € ð €Hà&ð ð ‰ˆˆXð #Ÿ.š.Ñ*Ô*ð 	ð 	‰JˆAˆwØ×%Ò%Ø�Q”ØØØØØ!ð &ñ ô ˆCˆCð ð 	&˜hð 	&Ø—(’( �(Ñ%Ô%ˆCà�Š˜ÑÔÐÐØ€Or2   r-   r/   r   c                ó’   — | j         dk    rdS | j        d         }|j        j        r|j        j        j        dk    sdS |j        |k    S )zC
    Check if this Manager can be treated as a single ndarray.
    r3   Fr   )rI   rJ   Úmgr_locsÚis_slice_likeÚas_sliceÚsteprK   )r-   r/   ra   s      r0   r+   r+   ¿   sR   € ð „{�aÒÐØˆuØ
Œ*�QŒ-€CØŒLÔ&ð ¨3¬<Ô+@Ô+EÈÒ+JÐ+JØˆuàŒ9˜Ò#Ð#r2   r\   r   únp.dtyper    c           	     óÀ  — t          d„ | D ¦   «         ¦  «        r^d„ | D ¦   «         }t          j        |¦  «        j        }t	          j        t          |d         ¦  «        ¦  «        }t          ||¦  «        }|S t          j        ||¬¦  «        }|t          j	        k    rt          j        }nt          j        }d}| D ]k\  }	}
|	j        d         }||z   }d|
v r0 ||	j        d         j        |
d         |dd…||…f         ¦  «         n|	j        d         j        |dd…||…f<   ||z  }Œlt	          j        t          |d         ¦  «        ¦  «        }t          ||¦  «        }|S )zl
    With single-Block managers with homogeneous dtypes (that can already hold nan),
    we avoid [...]
    c              3  ó"   K  — | ]
\  }}| V — Œd S r*   r:   )r,   r.   ro   s      r0   r1   z/_concat_homogeneous_fastpath.<locals>.<genexpr>Ö   s(   è è € Ð
9Ð
9™K˜A˜xˆxˆ<Ð
9Ð
9Ð
9Ð
9Ð
9Ð
9r2   c                óB   — g | ]\  }}|j         d          j        j        ‘ŒS )r   )rJ   r<   ÚT)r,   r-   r.   s      r0   r?   z0_concat_homogeneous_fastpath.<locals>.<listcomp>Ø   s(   € ÐCÐCÐC©6¨3°�”
˜1”Ô$Ô&ÐCÐCÐCr2   r   )rK   r3   N)rO   rL   rU   r{   Úlibinternalsr!   Úslicer   ÚemptyrM   ÚlibalgosÚtake_2d_axis0_float64_float64Útake_2d_axis0_float32_float32r\   rJ   r<   )rY   r\   r/   ÚarrsÚarrÚbpr]   Ú	take_funcÚstartr-   ro   Úmgr_lenÚends                r0   rQ   rQ   Ì   sy  € õ Ð
9Ð
9¨=Ð
9Ñ
9Ô
9Ñ9Ô9ð àCÐC°]ÐCÑCÔCˆÝŒn˜TÑ"Ô"Ô$ˆÝÔ(­¨u°Q¬x©¬Ñ9Ô9ˆÝ˜#˜rÑ"Ô"ˆØˆ	å
Œ(�5 Ð
,Ñ
,Ô
,€Cà•b”jÒ Ð ÝÔ:ˆ	ˆ	åÔ:ˆ	à€EØ&ð ð ‰ˆˆXØ”)˜A”,ˆØ�g‰oˆà�ˆ=ˆ=ØˆIØ”
˜1”Ô$Ø˜”Ø�A�A�A�u˜S�y�LÔ!ñô ð ð ð !$¤
¨1¤Ô 4ˆC����5˜�9�Ñà�Ñˆˆå	Ô	$¥U¨5°¬8¡_¤_Ñ	5Ô	5€BÝ	�c˜2Ñ	Ô	€BØ€Ir2   r[   ú0Generator[tuple[BlockPlacement, list[JoinUnit]]]c              #  ó8  K  — | d         j         d         }d„ | D ¦   «         }t          j        |¦  «        }|D ]a\  }}g }t          | ¦  «        D ]D\  }}||         }	t	          |||	|¬¦  «        }
t          |
¦  «        }|                     |¦  «         ŒE||fV — Œbd S )Nr   c                ó   — g | ]	}|j         ‘Œ
S r:   )Úblknos)r,   r-   s     r0   r?   z&_get_combined_plan.<locals>.<listcomp>   s   € Ð.Ð.Ð. #�3”:Ð.Ð.Ð.r2   )Úmax_len)r\   r|   Úget_concat_blkno_indexersÚ	enumerateÚ_get_block_for_concat_planÚJoinUnitrX   )r[   r�   Úblknos_listÚpairsrŒ   r„   Úunits_for_bpÚkr-   Úblknor]   r`   s               r0   rR   rR   û   sÍ   è è € ð �1ŒgŒm˜AÔ€Gà.Ð.¨Ð.Ñ.Ô.€KÝÔ2°;Ñ?Ô?€EØð ð ‰
ˆ�ð ˆÝ ‘o”oð 	&ð 	&‰FˆAˆsØ˜1”IˆEå+¨C°°UÀGÐLÑLÔLˆBÝ˜B‘<”<ˆDØ×Ò Ñ%Ô%Ð%Ð%à�,ÐÐÐÐÐðð r2   r„   r!   r–   Úintr�   c               ó€  — | j         |         }t          |¦  «        t          |j        ¦  «        k    r$|j        j        r|j        j        j        dk    r|}ng| j        |j                 }t          j	        ||¦  «        }t          |t          ¦  «        r|                     |¦  «        }n|                     |¦  «        }|S )Nr3   )rJ   r5   rs   rt   ru   rv   Úblklocsrq   r	   Úmaybe_indices_to_sliceÚ
isinstancer}   Úslice_block_columnsÚtake_block_columns)r-   r„   r–   r�   ra   r]   Úax0_blk_indexerÚslcs           r0   r�   r�     s·   € ð Œ*�UÔ
€Cõ ˆ2�w„w•#�c”lÑ#Ô#Ò#Ð#ØŒÔ"ð $Ø'*¤|Ô'<Ô'AÀQÒ'FÐ'Fàˆˆàœ+ b¤jÔ1ˆåÔ(¨¸'ÑBÔBˆõ �c�5Ñ!Ô!ð 	-Ø×(Ò(¨Ñ-Ô-ˆBˆBà×'Ò'¨Ñ,Ô,ˆBð €Ir2   c                  óF   — e Zd Zdd„Zdd„Zdd„Zedd„¦   «         Zdd„ZdS )r‘   r;   r    r'   ÚNonec                ó   — || _         d S r*   )r;   )Úselfr;   s     r0   Ú__init__zJoinUnit.__init__.  s   € ØˆŒ
ˆ
ˆ
r2   Ústrc                ó@   — t          | ¦  «        j        › d| j        ›d�S )Nú(ú))ÚtypeÚ__name__r;   )r£   s    r0   Ú__repr__zJoinUnit.__repr__1  s$   € Ý�t‘*”*Ô%Ð7Ð7¨¬
Ð7Ð7Ð7Ð7r2   rK   r   r&   c                ób  ‡— | j         sdS | j        }|j        j        dk    rdS |j        t          k    r6|j        }t          ˆfd„|                     d¬¦  «        D ¦   «         ¦  «        S |j        }|t          u r|j        ‰k    rdS |t          u rt          ‰¦  «        rdS t          |‰¦  «        S )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  ó8   •K  — | ]}t          |‰¦  «        V — Œd S r*   r   )r,   r6   rK   s     €r0   r1   z,JoinUnit._is_valid_na_for.<locals>.<genexpr>B  s.   øè è € ÐXÐX¸1Õ,¨Q°Ñ6Ô6ÐXÐXÐXÐXÐXÐXr2   ÚK)Úorder)Úis_nar;   rK   ÚkindÚobjectr<   rO   ÚravelÚ
fill_valuer   r
   r   r   )r£   rK   ra   r<   Úna_values    `   r0   Ú_is_valid_na_forzJoinUnit._is_valid_na_for4  sÇ   ø€ ð
 Œzð 	Ø�5àŒjˆØŒ9Œ>˜SÒ Ð Ø�4àŒ9�ÒÐØ”ZˆFÝÐXÐXÐXÐXÀÇÂÐSVÀÑ@WÔ@WÐXÑXÔXÑXÔXÐXà”>ˆØ•sˆ?ˆ?˜sœy¨EÒ1Ð1ð �5à•rˆ>ˆ>Õ1°%Ñ8Ô8ˆ>ð �5õ % X¨uÑ5Ô5Ð5r2   c                ó8   — | j         }|j        j        dk    rdS dS )Nr­   TF©r;   rK   r²   )r£   ra   s     r0   r±   zJoinUnit.is_naT  s"   € àŒjˆØŒ9Œ>˜SÒ Ð Ø�4Øˆur2   Úempty_dtyper   c                óv  — |€!| j         j        j        dk    r| j         j        S |}|                      |¦  «        rt| j         j        }|t          j        d¦  «        k    r5t          t
          j        | j         j        ¦  «        }|j        r
|d         €d }t          || j         j
        |¦  «        S | j         j        S )Nr­   r³   )r   r   )r;   rK   r²   r<   r·   rL   r   ÚndarrayÚsizer   r\   )r£   rº   Úupcasted_narµ   Ú	blk_dtyper<   s         r0   Úget_reindexed_valueszJoinUnit.get_reindexed_values[  s´   € ð Ð 4¤:Ô#3Ô#8¸CÒ#?Ð#?à”:Ô$Ð$à$ˆJà×$Ò$ [Ñ1Ô1ð Pà œJÔ,�	à¥¤¨Ñ 2Ô 2Ò2Ð2õ "¥"¤*¨d¬jÔ.?Ñ@Ô@�FØ”{ð * v¨d¤|Ð';Ø%)˜
å$ [°$´*Ô2BÀJÑOÔOÐOà”:Ô$Ð$r2   N)r;   r    r'   r¡   )r'   r¥   )rK   r   r'   r&   )r'   r&   )rº   r   r'   r   )	rª   Ú
__module__Ú__qualname__r¤   r«   r·   r   r±   rÀ   r:   r2   r0   r‘   r‘   -  s…   € € € € € ðð ð ð ð8ð 8ð 8ð 8ð6ð 6ð 6ð 6ð@ ðð ð ñ „^ðð%ð %ð %ð %ð %ð %r2   r‘   r_   úlist[JoinUnit]r   c                óJ  ‡‡— t          | ¦  «        Št          d„ | D ¦   «         ¦  «        }t          ‰|¦  «        Šˆˆfd„| D ¦   «         }t          d„ |D ¦   «         ¦  «        r/d„ |D ¦   «         }t          |dd¬¦  «        }t	          |d¦  «        }nt          |d	¬
¦  «        }|S )zB
    Concatenate values from several join units along axis=1.
    c              3  ó@   K  — | ]}|j         j        j        d k    V — ŒdS ©r­   Nr¹   ©r,   r`   s     r0   r1   z*_concatenate_join_units.<locals>.<genexpr>{  ó/   è è € ÐNÐN¸4˜$œ*Ô*Ô/°3Ò6ÐNÐNÐNÐNÐNÐNr2   c                ó>   •— g | ]}|                      ‰‰¬ ¦  «        ‘ŒS ))rº   r¾   )rÀ   )r,   r>   rº   r¾   s     €€r0   r?   z+_concatenate_join_units.<locals>.<listcomp>~  s<   ø€ ð ð ð àð 	×Ò¨KÀ[ÐÑQÔQðð ð r2   c              3  ó>   K  — | ]}t          |j        ¦  «        V — Œd S r*   ©r   rK   ©r,   Úts     r0   r1   z*_concatenate_join_units.<locals>.<genexpr>ƒ  s-   è è € Ð
;Ð
;¨AÕ˜qœwÑ'Ô'Ð
;Ð
;Ð
;Ð
;Ð
;Ð
;r2   c                óR   — g | ]$}t          |j        ¦  «        r|n|d dd…f         ‘Œ%S )r   NrË   rÌ   s     r0   r?   z+_concatenate_join_units.<locals>.<listcomp>ˆ  sG   € ð 
ð 
ð 
àõ % Q¤WÑ-Ô-Ð:ˆAˆA°1°Q¸¸¸°T´7ð
ð 
ð 
r2   r   TrB   rD   r3   r@   )Ú_get_empty_dtypeÚanyÚ_dtype_to_na_valuer   r   )r_   r%   Úhas_none_blocksÚ	to_concatÚconcat_valuesrº   r¾   s        @@r0   rV   rV   u  së   øø€ õ # :Ñ.Ô.€KåÐNÐNÀ:ÐNÑNÔNÑNÔN€OÝ$ [°/ÑBÔB€Kðð ð ð ð àðñ ô €Iõ
 Ð
;Ð
;°Ð
;Ñ
;Ô
;Ñ;Ô;ð 9ð

ð 
àð
ñ 
ô 
ˆ	õ & i°aÈÐMÑMÔMˆÝ*¨=¸!Ñ<Ô<ˆˆõ & i°aÐ8Ñ8Ô8ˆàÐr2   rK   rÒ   c                ól  — t          | t          ¦  «        r| j        S | j        dv r.|                      dt          j        | ¦  «        d         ¦  «        S | j        dv r|                      d¦  «        S | j        dk    rdS | j        dv r|sdS t
          j        S | j        d	k    rt
          j        S t          ‚)
z2
    Find the NA value to go with this dtype.
    ÚmMr   r   ÚfcÚNaNrd   NÚiuÚO)	r›   r   r¶   r²   r©   rL   Údatetime_dataÚnanÚNotImplementedError)rK   rÒ   s     r0   rÑ   rÑ   •  s»   € õ �%�Ñ(Ô(ð ØŒ~ÐØ	Œ�tÐ	Ð	Ø�zŠz˜%¥Ô!1°%Ñ!8Ô!8¸Ô!;Ñ<Ô<Ð<Ø	Œ�tÐ	Ð	Ø�zŠz˜%Ñ Ô Ð Ø	Œ�sÒ	Ð	àˆtØ	Œ�tÐ	Ð	Øð 	à�4ÝŒvˆØ	Œ�sÒ	Ð	ÝŒvˆÝ
Ðr2   úSequence[JoinUnit]c                óô   — t          j        d„ | D ¦   «         ¦  «        r| d         j        j        }|S t	          d„ | D ¦   «         ¦  «        }d„ | D ¦   «         }t          |¦  «        }|rt          |¦  «        }|S )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
    c                ó&   — g | ]}|j         j        ‘ŒS r:   )r;   rK   r=   s     r0   r?   z$_get_empty_dtype.<locals>.<listcomp>¶  s   € ÐAÐAÐA°˜RœXœ^ÐAÐAÐAr2   r   c              3  ó@   K  — | ]}|j         j        j        d k    V — ŒdS rÆ   r¹   rÇ   s     r0   r1   z#_get_empty_dtype.<locals>.<genexpr>º  rÈ   r2   c                ó4   — g | ]}|j         °	|j        j        ‘ŒS r:   )r±   r;   rK   rÇ   s     r0   r?   z$_get_empty_dtype.<locals>.<listcomp>¼  s$   € ÐHÐHÐH 4¸T¼ZÐHˆdŒjÔÐHÐHÐHr2   )r	   Údtypes_all_equalr;   rK   rÐ   r   r   )r_   rº   rÒ   ÚdtypesrK   s        r0   rÏ   rÏ   ¬  s‘   € õ ÔÐAÐA°jÐAÑAÔAÑBÔBð Ø  ”mÔ)Ô/ˆØÐåÐNÐNÀ:ÐNÑNÔNÑNÔN€OàHÐH¨:ÐHÑHÔH€Få˜VÑ$Ô$€EØð 0Ý(¨Ñ/Ô/ˆà€Lr2   c                óà   ‡— | d         j         Š‰j        j        dk    rdS t          ˆfd„| D ¦   «         ¦  «        o3t          ˆfd„| D ¦   «         ¦  «        o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 V — Œ(d S r*   )r©   r;   ©r,   r>   Úfirsts     €r0   r1   z)_is_uniform_join_units.<locals>.<genexpr>Ñ  s6   øè è € Ð?Ð?¨b�D�”‰NŒN�d 5™kœkÐ)Ð?Ð?Ð?Ð?Ð?Ð?r2   c              3  óh   •K  — | ],}|j         j        ‰j        k    p|j         j        j        d v V — Œ-dS )ÚiubNr¹   rç   s     €r0   r1   z)_is_uniform_join_units.<locals>.<genexpr>Ô  sZ   øè è € ð 
ð 
ð
 ð	 ŒHŒN˜eœkÒ)ð ,ð ŒxŒ~Ô" eÐ+ð	
ð 
ð 
ð 
ð 
ð 
r2   c              3  ó>   K  — | ]}|j          p|j        j        V — Œd S r*   )r±   r;   rT   r=   s     r0   r1   z)_is_uniform_join_units.<locals>.<genexpr>Þ  s0   è è € ÐGÐG°b�”ˆLÐ1˜BœHÔ1ÐGÐGÐGÐGÐGÐGr2   )r;   rK   r²   rO   )r_   rè   s    @r0   rS   rS   Å  s¬   ø€ ð �qŒMÔ€EØ„{Ô˜3ÒÐØˆuõ 	Ð?Ð?Ð?Ð?°JÐ?Ñ?Ô?Ñ?Ô?ð 	Hõ 	ð 
ð 
ð 
ð 
ð
 !ð
ñ 
ô 
ñ 	
ô 	
ð	Hõ 	ÐGÐG¸JÐGÑGÔGÑGÔGðr2   )r"   r#   r$   r   r%   r&   r'   r   )r"   r#   rY   rf   rZ   r&   r'   rg   )r-   r   r/   r   r'   r&   )r\   r   r/   rw   r'   r    )r[   rg   r'   r‰   )
r-   r   r„   r!   r–   r—   r�   r—   r'   r    )r_   rÃ   r%   r&   r'   r   )rK   r   rÒ   r&   )r_   rÞ   r'   r   )r_   rÃ   r'   r&   )=Ú
__future__r   Útypingr   r   ÚnumpyrL   Úpandas._libsr   r   r   r   r|   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!   re   rG   r+   rQ   rR   r�   r‘   rV   rÑ   rÏ   rS   r:   r2   r0   ú<module>rý      sN  ðØ "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð
 Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø <Ð <Ð <Ð <Ð <Ð <à CÐ CÐ CÐ CÐ CÐ Cðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð
 ð ðð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð ÐÐÐÐÐðð ð ð ð ð ð ð ð^-ð ^-ð ^-ð ^-ðBð ð ð ðB
$ð 
$ð 
$ð 
$ð,ð ,ð ,ð ,ð^ð ð ð ð,ð ð ð ð8E%ð E%ð E%ð E%ð E%ñ E%ô E%ð E%ðPð ð ð ð@ð ð ð ð.ð ð ð ð2ð ð ð ð ð r2   