§
    Ñ! hÏJ  ã                  ó´  — d dl mZ d dlmZmZ d dl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 d dlmZm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"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/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8 d dl)m9Z9m:Z: dEd„Z;dFd „Z<dGd%„Z=dHd*„Z>dId/„Z?dJd1„Z@dKd7„ZA G d8„ d9¦  «        ZBdLd=„ZCdMd@„ZDdNdC„ZEdOdD„ZFdS )Pé    )Úannotations)ÚTYPE_CHECKINGÚcastN)ÚNaTÚalgosÚ	internalsÚlib)ÚNA)Úcache_readonly)Úfind_stack_level)Úensure_dtype_can_hold_naÚfind_common_type)Úis_1d_only_ea_dtypeÚ	is_scalarÚneeds_i8_conversion)Úconcat_compat)ÚExtensionDtypeÚSparseDtype)Úis_valid_na_for_dtypeÚisnaÚisna_all)Úensure_wrapped_if_datetimelike)ÚArrayManager)Úensure_block_shapeÚnew_block_2d)ÚBlockManagerÚmake_na_array)ÚSequence)Ú	ArrayLikeÚAxisIntÚDtypeObjÚ	Manager2DÚShape)ÚIndex)ÚBlockÚBlockPlacementÚmgrsúlist[ArrayManager]Úaxesúlist[Index]Úconcat_axisr    Úreturnr"   c                óŽ   — |dk    r| d                               | |¦  «        S |dk    sJ ‚| d                              | |¦  «        S )zí
    Concatenate array managers into one.

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

    Returns
    -------
    ArrayManager
    é   r   )Úconcat_verticalÚconcat_horizontal)r'   r)   r+   s      úVc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\pandas/core/internals/concat.pyÚ_concatenate_array_managersr2   F   sV   € ð  �aÒÐØ�AŒw×&Ò& t¨TÑ2Ô2Ð2ð ˜aÒÐÐÐØ�AŒw×(Ò(¨¨tÑ4Ô4Ð4ó    ÚcopyÚboolc                ó®  ‡— |o|dk    }t          | d         d         t          ¦  «        r"t          || |¦  «        }t          |||¦  «        S |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 t%          |¦  «        }
g }|
D �]\  }}|d         }|j        }t)          |¦  «        r˜d„ |D ¦   «         }|j        st          j        |d¬¦  «        }nIt/          |j        ¦  «        r$t1          |dd	¬
¦  «        }t3          |d¬¦  «        }nt1          |d¬¦  «        }t5          |¦  «        }|j        j        |j        k    }nt9          ||¬¦  «        }d}|r|                     ||¬¦  «        }nt=          ||¬¦  «        }|                     |¦  «         �Œ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      €r1   ú	<genexpr>z'concatenate_managers.<locals>.<genexpr>Œ   s2   øè è € ÐVÐV¹f¸cÀ1Õ'¨¨[Ñ9Ô9ÐVÐVÐVÐVÐVÐVr3   r.   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r8   )Úlen)r:   Úxs     r1   r>   z'concatenate_managers.<locals>.<genexpr>‘   s(   è è € Ð3Ð3¨�c !™fœfÐ3Ð3Ð3Ð3Ð3Ð3r3   F)Údeepc                ó&   — g | ]}|j         j        ‘ŒS © )ÚblockÚvalues©r:   Újus     r1   ú
<listcomp>z(concatenate_managers.<locals>.<listcomp>§   s   € Ð9Ð9Ð9¨�B”H”OÐ9Ð9Ð9r3   ©ÚaxisT©rK   Úea_compat_axisé   )Úndim)r4   )Ú	placement) Ú
isinstancer   Ú_maybe_reindex_columns_na_proxyr2   r0   r@   ÚnblocksÚblocksÚdtypeÚnpÚfloat64Úfloat32ÚallÚtupleÚ_concat_homogeneous_fastpathr   r4   r)   Ú_get_combined_planrE   Ú_is_uniform_join_unitsÚis_extensionÚconcatenater   r   r   r   rF   Ú_concatenate_join_unitsÚmake_block_same_classr   Úappend)Úmgrs_indexersr)   r+   r4   Ú
needs_copyr'   ÚshapeÚnbr;   ÚoutÚconcat_planrT   rP   Ú
join_unitsÚunitÚblkÚvalsrF   ÚfastpathÚbr=   s                       @r1   Úconcatenate_managersro   ^   s  ø€ ð$ Ð*˜+¨Ò*€Jõ �- Ô" 1Ô%¥|Ñ4Ô4ð 
Ý.¨t°]ÀJÑOÔOˆõ +Ø�$˜ñ
ô 
ð 	
ð �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Ñ"Ô"ˆØˆŒØˆ
å$ TÑ*Ô*€Kà€Fð "-ð #ñ #Ñˆ	�:Ø˜!Œ}ˆØŒ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Ñ,Ô,Ð,r3   rc   ú0list[tuple[BlockManager, dict[int, np.ndarray]]]rd   úlist[BlockManager]c                óø   — g }|D ]t\  }}|                      ¦   «         D ]-\  }}|                     | |         ||         |dddd¬¦  «        }Œ.|r|s|                     ¦   «         }|                     |¦  «         Œu|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.
    FT)rK   r4   Ú
only_sliceÚ
allow_dupsÚuse_na_proxy)ÚitemsÚreindex_indexerr4   rb   )r)   rc   rd   Únew_mgrsr;   ÚindexersÚiÚindexers           r1   rR   rR   Ê   s¬   € ð €Hà&ð ð ‰ˆˆXð #Ÿ.š.Ñ*Ô*ð 		ð 		‰JˆAˆwØ×%Ò%Ø�Q”Ø˜”ØØØØØ!ð &ñ ô ˆCˆCð ð 	˜hð 	Ø—(’(‘*”*ˆCà�Š˜ÑÔÐÐØ€Or3   r;   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.
    r.   Fr   )rS   rT   Úmgr_locsÚis_slice_likeÚas_sliceÚsteprU   )r;   r=   rk   s      r1   r9   r9   ì   sR   € ð „{�aÒÐØˆuØ
Œ*�QŒ-€CØŒLÔ&ð ¨3¬<Ô+@Ô+EÈÒ+JÐ+JØˆuàŒ9˜Ò#Ð#r3   re   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 r8   rD   )r:   r<   ry   s      r1   r>   z/_concat_homogeneous_fastpath.<locals>.<genexpr>  s(   è è € Ð
9Ð
9™K˜A˜xˆxˆ<Ð
9Ð
9Ð
9Ð
9Ð
9Ð
9r3   c                óB   — g | ]\  }}|j         d          j        j        ‘ŒS )r   )rT   rF   ÚT)r:   r;   r<   s      r1   rI   z0_concat_homogeneous_fastpath.<locals>.<listcomp>  s(   € ÐCÐCÐC©6¨3°�”
˜1”Ô$Ô&ÐCÐCÐCr3   r   )rU   r.   N)rY   rV   r_   r…   Úlibinternalsr&   Úslicer   ÚemptyrW   ÚlibalgosÚtake_2d_axis0_float64_float64Útake_2d_axis0_float32_float32re   rT   rF   )rc   re   r=   ÚarrsÚarrÚbprf   Ú	take_funcÚstartr;   ry   Úmgr_lenÚends                r1   r[   r[   ù   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Ø€Ir3   ú+list[tuple[BlockPlacement, list[JoinUnit]]]c                óz  — g }| d         j         d         }d„ | D ¦   «         }t          j        |¦  «        }t          |¦  «        D ]u\  }\  }}g }t          | ¦  «        D ]D\  }	}
||	         }t	          |
|||¬¦  «        }t          |¦  «        }|                     |¦  «         ŒE|                     ||f¦  «         Œv|S )Nr   c                ó   — g | ]	}|j         ‘Œ
S rD   )Úblknos)r:   r;   s     r1   rI   z&_get_combined_plan.<locals>.<listcomp>/  s   € Ð.Ð.Ð. #�3”:Ð.Ð.Ð.r3   )Úmax_len)re   r†   Úget_concat_blkno_indexersÚ	enumerateÚ_get_block_for_concat_planÚJoinUnitrb   )r'   Úplanr—   Úblknos_listÚpairsÚindr–   rŽ   Úunits_for_bpÚkr;   Úblknorf   rj   s                 r1   r\   r\   (  sÜ   € ð €Dà�1ŒgŒm˜AÔ€Gà.Ð.¨Ð.Ñ.Ô.€KÝÔ2°;Ñ?Ô?€EÝ& uÑ-Ô-ð (ð (Ñˆ‰\ˆf�bð ˆÝ ‘o”oð 	&ð 	&‰FˆAˆsØ˜1”IˆEå+¨C°°UÀGÐLÑLÔLˆBÝ˜B‘<”<ˆDØ×Ò Ñ%Ô%Ð%Ð%à�Š�R˜Ð&Ñ'Ô'Ð'Ð'à€Kr3   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 )Nr.   )rT   r@   r}   r~   r   r€   Úblklocsr{   r	   Úmaybe_indices_to_slicerQ   r‡   Úslice_block_columnsÚtake_block_columns)r;   rŽ   r¢   r—   rk   rf   Úax0_blk_indexerÚslcs           r1   rš   rš   B  s·   € ð Œ*�UÔ
€Cõ ˆ2�w„w•#�c”lÑ#Ô#Ò#Ð#ØŒÔ"ð $Ø'*¤|Ô'<Ô'AÀQÒ'FÐ'Fàˆˆàœ+ b¤jÔ1ˆåÔ(¨¸'ÑBÔBˆõ �c�5Ñ!Ô!ð 	-Ø×(Ò(¨Ñ-Ô-ˆBˆBà×'Ò'¨Ñ,Ô,ˆBð €Ir3   c                  ó^   — e Zd Zdd„Zdd„Zdd„Zedd„¦   «         Zedd„¦   «         Zdd„Z	dS )r›   rE   r%   r,   ÚNonec                ó   — || _         d S r8   )rE   )ÚselfrE   s     r1   Ú__init__zJoinUnit.__init___  s   € ØˆŒ
ˆ
ˆ
r3   Ústrc                óZ   — t          | ¦  «        j        › dt          | j        ¦  «        › d�S )Nú(ú))ÚtypeÚ__name__ÚreprrE   )r®   s    r1   Ú__repr__zJoinUnit.__repr__b  s,   € Ý�t‘*”*Ô%Ð;Ð;­¨T¬ZÑ(8Ô(8Ð;Ð;Ð;Ð;r3   rU   r!   r5   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 r8   )r   )r:   rA   rU   s     €r1   r>   z,JoinUnit._is_valid_na_for.<locals>.<genexpr>s  s.   øè è € ÐXÐX¸1Õ,¨Q°Ñ6Ô6ÐXÐXÐXÐXÐXÐXr3   ÚK)Úorder)Úis_narE   rU   ÚkindÚobjectrF   rY   ÚravelÚ
fill_valuer   r
   r   r   )r®   rU   rk   rF   Úna_values    `   r1   Ú_is_valid_na_forzJoinUnit._is_valid_na_fore  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Ð5r3   c                ó¸  — | j         }|j        j        dk    rdS |j        sdS |j        }|j        dk    rdS t          |j        t          ¦  «        rdS |j        dk    r7|d         }t          |¦  «        rt          |¦  «        sdS t          |¦  «        S |d         d         }t          |¦  «        rt          |¦  «        sdS t          d„ |D ¦   «         ¦  «        S )Nr¹   TFr   r.   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r8   )r   )r:   Úrows     r1   r>   z!JoinUnit.is_na.<locals>.<genexpr>¢  s(   è è € Ð7Ð7¨•x ‘}”}Ð7Ð7Ð7Ð7Ð7Ð7r3   )rE   rU   r¾   Ú_can_hold_narF   ÚsizerQ   r   rO   r   r   r   rY   )r®   rk   rF   Úvals       r1   r½   zJoinUnit.is_na…  sí   € àŒjˆØŒ9Œ>˜SÒ Ð Ø�4àÔð 	Ø�5à”ˆØŒ;˜!ÒÐà�4å�f”l¥KÑ0Ô0ð 	Ø�5àŒ;˜!ÒÐà˜”)ˆCÝ˜S‘>”>ð ­¨c©¬ð à�uÝ˜FÑ#Ô#Ð#à˜”)˜A”,ˆCÝ˜S‘>”>ð ­¨c©¬ð à�uÝÐ7Ð7°Ð7Ñ7Ô7Ñ7Ô7Ð7r3   c                ó8   — | j         }|j        j        dk    rdS dS )z{
        Will self.is_na be True after values.size == 0 deprecation and isna_all
        deprecation are enforced?
        r¹   TF©rE   rU   r¾   )r®   rk   s     r1   Ú)is_na_after_size_and_isna_all_deprecationz2JoinUnit.is_na_after_size_and_isna_all_deprecation¤  s$   € ð ŒjˆØŒ9Œ>˜SÒ Ð Ø�4Øˆur3   Ú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   )rE   rU   r¾   rF   rÃ   rV   r   ÚndarrayrÈ   r   re   )r®   rÍ   Úupcasted_narÁ   Ú	blk_dtyperF   s         r1   Ú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à”:Ô$Ð$r3   N)rE   r%   r,   r¬   )r,   r°   )rU   r!   r,   r5   )r,   r5   )rÍ   r!   r,   r   )
rµ   Ú
__module__Ú__qualname__r¯   r·   rÃ   r   r½   rÌ   rÒ   rD   r3   r1   r›   r›   ^  s¥   € € € € € ðð ð ð ð<ð <ð <ð <ð6ð 6ð 6ð 6ð@ ð8ð 8ð 8ñ „^ð8ð< ðð ð ñ „^ðð%ð %ð %ð %ð %ð %r3   r›   ri   úlist[JoinUnit]r   c                óÂ  ‡‡— t          | ¦  «        \  Š}t          d„ | D ¦   «         ¦  «        }t          ‰|¦  «        Šˆˆfd„| D ¦   «         }t          d„ |D ¦   «         ¦  «        r/d„ |D ¦   «         }t          |dd¬¦  «        }t	          |d¦  «        }nt          |d	¬
¦  «        }‰|k    r3‰|j        k    r(t          j        dt          t          ¦   «         ¬¦  «         |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:   rj   s     r1   r>   z*_concatenate_join_units.<locals>.<genexpr>Ï  ó/   è è € ÐNÐN¸4˜$œ*Ô*Ô/°3Ò6ÐNÐNÐNÐNÐNÐNr3   c                ó>   •— g | ]}|                      ‰‰¬ ¦  «        ‘ŒS ))rÍ   rÐ   )rÒ   )r:   rH   rÍ   rÐ   s     €€r1   rI   z+_concatenate_join_units.<locals>.<listcomp>Ò  s<   ø€ ð ð ð àð 	×Ò¨KÀ[ÐÑQÔQðð ð r3   c              3  ó>   K  — | ]}t          |j        ¦  «        V — Œd S r8   ©r   rU   ©r:   Úts     r1   r>   z*_concatenate_join_units.<locals>.<genexpr>×  s-   è è € Ð
;Ð
;¨AÕ˜qœwÑ'Ô'Ð
;Ð
;Ð
;Ð
;Ð
;Ð
;r3   c                óR   — g | ]$}t          |j        ¦  «        r|n|d dd…f         ‘Œ%S )r   NrÝ   rÞ   s     r1   rI   z+_concatenate_join_units.<locals>.<listcomp>Ü  sL   € ð 
ð 
ð 
ð õ # 1¤7Ñ+Ô+ðˆAˆAà�1�a�a�a�4”ð
ð 
ð 
r3   r   TrL   rN   r.   rJ   a  The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.)Ú
stacklevel)
Ú_get_empty_dtypeÚanyÚ_dtype_to_na_valuer   r   rU   ÚwarningsÚwarnÚFutureWarningr   )ri   r4   Úempty_dtype_futureÚhas_none_blocksÚ	to_concatÚconcat_valuesrÍ   rÐ   s         @@r1   r`   r`   É  s;  øø€ õ '7°zÑ&BÔ&BÑ#€KÐ#åÐNÐNÀ:ÐNÑNÔNÑNÔN€OÝ$ [°/ÑBÔB€Kðð ð ð ð àðñ ô €Iõ
 Ð
;Ð
;°Ð
;Ñ
;Ô
;Ñ;Ô;ð 9ð

ð 
ð ð	
ñ 
ô 
ˆ	õ & i°aÈÐMÑMÔMˆÝ*¨=¸!Ñ<Ô<ˆˆõ & i°aÐ8Ñ8Ô8ˆàÐ(Ò(Ð(Ø˜-Ô-Ò-Ð-åŒMð(õ
 Ý+Ñ-Ô-ðñ ô ð ð Ðr3   rU   ré   c                ó:  — t          | t          ¦  «        r| j        S | j        dv r|                      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   ÚfcÚNaNrn   NÚiuÚO)rQ   r   rÂ   r¾   r´   rV   ÚnanÚNotImplementedError)rU   ré   s     r1   rä   rä   ÷  s©   € õ �%�Ñ(Ô(ð ØŒ~ÐØ	Œ�tÐ	Ð	Ø�zŠz˜%Ñ Ô Ð Ø	Œ�tÐ	Ð	Ø�zŠz˜%Ñ Ô Ð Ø	Œ�sÒ	Ð	àˆtØ	Œ�tÐ	Ð	Øð 	à�4ÝŒvˆØ	Œ�sÒ	Ð	ÝŒvˆÝ
Ðr3   úSequence[JoinUnit]útuple[DtypeObj, DtypeObj]c                óD  — t          j        d„ | D ¦   «         ¦  «        r| d         j        j        }||fS t	          d„ | D ¦   «         ¦  «        }d„ | D ¦   «         }t          |¦  «        sd„ | D ¦   «         }t          |¦  «        }|rt          |¦  «        }|}t          |¦  «        t          | ¦  «        k    rgd„ | D ¦   «         }t          |¦  «        sd„ | D ¦   «         }t          |¦  «        t          |¦  «        k    r t          |¦  «        }|rt          |¦  «        }||f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 rD   )rE   rU   rG   s     r1   rI   z$_get_empty_dtype.<locals>.<listcomp>  s   € ÐAÐAÐA°˜RœXœ^ÐAÐAÐAr3   r   c              3  ó@   K  — | ]}|j         j        j        d k    V — ŒdS rØ   rË   rÙ   s     r1   r>   z#_get_empty_dtype.<locals>.<genexpr>  rÚ   r3   c                ó4   — g | ]}|j         °	|j        j        ‘ŒS rD   )r½   rE   rU   rÙ   s     r1   rI   z$_get_empty_dtype.<locals>.<listcomp>  s$   € ÐHÐHÐH 4¸T¼ZÐHˆdŒjÔÐHÐHÐHr3   c                óP   — g | ]#}|j         j        j        d k    ¯|j         j        ‘Œ$S ©r¹   rË   rÙ   s     r1   rI   z$_get_empty_dtype.<locals>.<listcomp>   s7   € ð 
ð 
ð 
Ø!%°t´zÔ7GÔ7LÐPSÒ7SÐ7SˆDŒJÔÐ7SÐ7SÐ7Sr3   c                ó4   — g | ]}|j         °	|j        j        ‘ŒS rD   )rÌ   rE   rU   rÙ   s     r1   rI   z$_get_empty_dtype.<locals>.<listcomp>*  s6   € ð 
ð 
ð 
àØÔAð
ØŒJÔð
ð 
ð 
r3   c                óP   — g | ]#}|j         j        j        d k    ¯|j         j        ‘Œ$S rû   rË   rÙ   s     r1   rI   z$_get_empty_dtype.<locals>.<listcomp>0  s7   € ð ð ð Ø%)¸4¼:Ô;KÔ;PÐTWÒ;WÐ;W�”
Ô Ð;WÐ;WÐ;Wr3   )r	   Údtypes_all_equalrE   rU   rã   r@   r   r   )ri   rÍ   ré   ÚdtypesrU   Údtype_futureÚdtypes_futures          r1   râ   râ     sr  € õ ÔÐAÐA°jÐAÑAÔAÑBÔBð (Ø  ”mÔ)Ô/ˆØ˜KÐ'Ð'åÐNÐNÀ:ÐNÑNÔNÑNÔN€OàHÐH¨:ÐHÑHÔH€FÝˆv‰;Œ;ð 
ð
ð 
Ø)3ð
ñ 
ô 
ˆõ ˜VÑ$Ô$€EØð 0Ý(¨Ñ/Ô/ˆà€LÝ
ˆ6�{„{•c˜*‘o”oÒ%Ð%ð
ð 
à"ð
ñ 
ô 
ˆõ
 �=Ñ!Ô!ð 	ðð Ø-7ðñ ô ˆMõ ˆv‰;Œ;�#˜mÑ,Ô,Ò,Ð,Ý+¨MÑ:Ô:ˆLØð FÝ7¸ÑEÔE�à�,ÐÐr3   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 r8   )r´   rE   ©r:   rH   Úfirsts     €r1   r>   z)_is_uniform_join_units.<locals>.<genexpr>H  s6   øè è € Ð?Ð?¨b�D�”‰NŒN�d 5™kœkÐ)Ð?Ð?Ð?Ð?Ð?Ð?r3   c              3  óh   •K  — | ],}|j         j        ‰j        k    p|j         j        j        d v V — Œ-dS )ÚiubNrË   r  s     €r1   r>   z)_is_uniform_join_units.<locals>.<genexpr>K  sZ   øè è € ð 
ð 
ð
 ð	 ŒHŒN˜eœkÒ)ð ,ð ŒxŒ~Ô" eÐ+ð	
ð 
ð 
ð 
ð 
ð 
r3   c              3  ó>   K  — | ]}|j          p|j        j        V — Œd S r8   )r½   rE   r^   rG   s     r1   r>   z)_is_uniform_join_units.<locals>.<genexpr>U  s0   è è € ÐGÐG°b�”ˆLÐ1˜BœHÔ1ÐGÐGÐGÐGÐGÐGr3   )rE   rU   r¾   rY   )ri   r  s    @r1   r]   r]   <  s¬   ø€ ð �qŒMÔ€EØ„{Ô˜3ÒÐØˆuõ 	Ð?Ð?Ð?Ð?°JÐ?Ñ?Ô?Ñ?Ô?ð 	Hõ 	ð 
ð 
ð 
ð 
ð
 !ð
ñ 
ô 
ñ 	
ô 	
ð	Hõ 	ÐGÐG¸JÐGÑGÔGÑGÔGðr3   )r'   r(   r)   r*   r+   r    r,   r"   )r)   r*   r+   r    r4   r5   r,   r"   )r)   r*   rc   rp   rd   r5   r,   rq   )r;   r   r=   r!   r,   r5   )re   r#   r=   r�   r,   r%   )r'   rq   r,   r“   )
r;   r   rŽ   r&   r¢   r£   r—   r£   r,   r%   )ri   rÕ   r4   r5   r,   r   )rU   r!   ré   r5   )ri   rô   r,   rõ   )ri   rÕ   r,   r5   )GÚ
__future__r   Útypingr   r   rå   ÚnumpyrV   Úpandas._libsr   r   r‰   r   r†   r	   Úpandas._libs.missingr
   Úpandas.util._decoratorsr   Úpandas.util._exceptionsr   Úpandas.core.dtypes.castr   r   Úpandas.core.dtypes.commonr   r   r   Úpandas.core.dtypes.concatr   Úpandas.core.dtypes.dtypesr   r   Úpandas.core.dtypes.missingr   r   r   Úpandas.core.constructionr   Ú#pandas.core.internals.array_managerr   Úpandas.core.internals.blocksr   r   Úpandas.core.internals.managersr   r   Úcollections.abcr   Úpandas._typingr   r    r!   r"   r#   Úpandasr$   r%   r&   r2   ro   rR   r9   r[   r\   rš   r›   r`   rä   râ   r]   rD   r3   r1   ú<module>r     sÇ  ðØ "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð €€€à Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 4Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð DÐ CÐ CÐ CÐ CÐ CØ <Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð
 ð Ø(Ð(Ð(Ð(Ð(Ð(ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ÐÐÐÐÐðð ð ð ð ð ð ð ð5ð 5ð 5ð 5ð0i-ð i-ð i-ð i-ðXð ð ð ðD
$ð 
$ð 
$ð 
$ð,ð ,ð ,ð ,ð^ð ð ð ð4ð ð ð ð8h%ð h%ð h%ð h%ð h%ñ h%ô h%ð h%ðV+ð +ð +ð +ð\ð ð ð ð.+ð +ð +ð +ð\ð ð ð ð ð r3   