ó
    Ñ]j/%  ã                  óp  • S SK Jr  S SKJrJr  S SK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JrJrJr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   S SK!J"r"  S SK#J$r$  \(       a  S SK%J&r&  / SQr'   S       SS jjr(SS jr)  S       SS jjr*SS jr+S S!S jjr,S r-S"S jr.S#S jr/g)$é    )Úannotations)ÚTYPE_CHECKINGÚcastN)ÚNaTÚlib)ÚInvalidIndexError)Úfind_common_type)Ú	safe_sort)ÚIndexÚ
_new_IndexÚensure_indexÚensure_index_from_sequencesÚget_unanimous_namesÚmaybe_sequence_to_range)ÚCategoricalIndex)ÚDatetimeIndex)ÚIntervalIndex)Ú
MultiIndex)ÚPeriodIndex)Ú
RangeIndex)ÚTimedeltaIndex)ÚAxis)r   r   r   r   r   r   r   r   r   r   r   Úall_indexes_sameÚdefault_indexr   r   Úget_objs_combined_axisr   r   Úsafe_sort_indexÚunion_indexesc                ó`   • U  Vs/ s H  oDR                  U5      PM     nn[        XQUS9$ s  snf )aƒ  
Extract combined index: return intersection or union (depending on the
value of "intersect") of indexes on given axis, or None if all objects
lack indexes (e.g. they are numpy arrays).

Parameters
----------
objs : list
    Series or DataFrame objects, may be mix of the two.
intersect : bool, default False
    If True, calculate the intersection between indexes. Otherwise,
    calculate the union.
axis : {0 or 'index', 1 or 'outer'}, default 0
    The axis to extract indexes from.
sort : bool, default True
    Whether the result index should come out sorted or not. NoDefault
    use for deprecation in GH#57335.

Returns
-------
Index
)Ú	intersectÚsort)Ú	_get_axisÚ_get_combined_index)Úobjsr   Úaxisr    ÚobjÚ	obs_idxess         ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pandas/core/indexes/api.pyr   r   ?   s1   € ñ8 15Ó5²¨—‘˜tÖ$±€IÐ5Ü˜yÀDÑIÐIùò 6s   …+c                ó¨   • [        5       n/ nU  H?  n[        U5      U;  d  M  UR                  [        U5      5        UR                  U5        MA     U$ )zR
Return a list with distinct elements of "objs" (different ids).
Preserves order.
)ÚsetÚidÚaddÚappend)r#   ÚidsÚresr%   s       r'   Ú_get_distinct_objsr/   _   sH   € ô
 “E€CØ
€CÛˆÜˆc‹7˜#ÕØ�G‰G”B�s“GÔØ�J‰J�sŽOñ ð €Jó    c                ól  • [        U 5      n [        U 5      S:X  a  [        S5      nOh[        U 5      S:X  a  U S   nOSU(       a#  U S   nU SS  H  nUR                  U5      nM     O)[	        X[
        R                  L a  UOSS9n[        U5      nU(       a  U[
        R                  La  [        U5      nU$ )a½  
Return the union or intersection of indexes.

Parameters
----------
indexes : list of Index or list objects
    When intersect=True, do not accept list of lists.
intersect : bool, default False
    If True, calculate the intersection between indexes. Otherwise,
    calculate the union.
sort : bool, default False
    Whether the result index should come out sorted or not. NoDefault
    used for deprecation of GH#57335

Returns
-------
Index
r   é   NF©r    )	r/   Úlenr   Úintersectionr   r   Ú
no_defaultr   r   )Úindexesr   r    ÚindexÚothers        r'   r"   r"   m   s¦   € ô0 ! Ó)€GÜ
ˆ7ƒ|�qÓÜ$ QÓ'‰Ü	ˆW‹˜Ó	Ø˜‘
‰Þ	Ø˜‘
ˆØ˜Q˜R“[ˆEØ×&Ñ& uÓ-ŠEò !ô ˜g¼C¿N¹NÒ4J©DÐPUÑVˆÜ˜UÓ#ˆæ�œCŸN™NÒ*Ü Ó&ˆØ€Lr0   c                óp  • U R                   (       a  U $  [        U 5      n[        U[        5      (       a  U$ [	        [
        R                  U5      n[        U [        5      (       a   [        R                  " XR                  S9n U $ [        XR                  U R                  S9n  U $ ! [         a     U $ f = f)z†
Returns the sorted index

We keep the dtypes and the name attributes.

Parameters
----------
index : an Index

Returns
-------
Index
)Únames)ÚnameÚdtype)Úis_monotonic_increasingr
   Ú
isinstancer   r   ÚnpÚndarrayr   Úfrom_tuplesr;   r<   r=   Ú	TypeError)r8   Úarray_sorteds     r'   r   r   —   s¥   € ð ×$×$ØˆðLÜ  Ó'ˆô �l¤E×*Ñ*ØÐäœBŸJ™J¨Ó5ˆÜ�eœZ×(Ñ(Ü×*Ò*¨<¿{¹{ÑKˆEð €Lô ˜,¯Z©Z¸u¿{¹{ÑK‰Eà€Løô ó Øð €Lðús   •B' Â'
B5Â4B5c                ó<  • [        U 5      S:X  a  [        S5      e[        U 5      S:X  aW  U S   n[        U[        5      (       a;  U(       a  U[        R
                  L a  [        U5      nU$ [        [        U5      5      nU$ [        U 5      u  pUS:X  aÕ  U S   nSnSnU  H3  n[        U[        5      (       d  M  US-  nUR                  c  M.  US-  nM5     USU4;  a  [        S5      eU[        U 5      :X  a  U[        R
                  L a  SnU S   nO0US:”  a*  SnU  Vs/ s H  owR                  [        SS	9PM     n nU S   nU SS  H  nUR                  X�(       a  SOSS
9nM     U$ US:X  Ga  [        U 5      (       dË  [!        U  Vs/ s H  ofR"                  PM     sn5      n	U  V
s/ s H  oªR                  U	SS	9PM     nn
US   R%                  5       nUS   R'                  USS 5      nXŒR)                  U5      S:H     n[        U5      (       a  UR'                  UR%                  5       5      nU(       a  UR+                  5       nOU S   n[-        U 6 S   nXìR.                  :w  a  UR1                  U5      nU$ US:X  aw  U  Vs/ s H&  n[        U[        5      (       d  M  UR"                  PM(     nnU(       a  [!        U5      n	OSn	S U  5       n[        [        R2                  " U[5        U5      S
9U	S9$ [7        SU< S35      es  snf s  snf s  sn
f s  snf )a-  
Return the union of indexes.

The behavior of sort and names is not consistent.

Parameters
----------
indexes : list of Index or list objects
sort : bool, default True
    Whether the result index should come out sorted or not. NoDefault
    used for deprecation of GH#57335.

Returns
-------
Index
r   z#Must have at least 1 Index to unionr2   ÚspecialNz0Cannot join tz-naive with tz-aware DatetimeIndexTF)Úcopyr3   Úarrayé   éÿÿÿÿÚlistc              3  óp   #   • U  H,  n[        U[        5      (       a  UR                  5       OUv •  M.     g 7f©N)r?   r   Útolist)Ú.0Úidxs     r'   Ú	<genexpr>Ú union_indexes.<locals>.<genexpr>  s)   é € ÐXÒPWÈ¤Z°´U×%;Ñ%;�S—Z‘Z”\ÀÔDÒPWùs   ‚46)r=   zkind=z& must be 'special', 'array' or 'list'.)r4   ÚAssertionErrorr?   rK   r   r6   r   ÚsortedÚ_sanitize_and_checkr   ÚtzrC   ÚastypeÚobjectÚunionr   r	   r=   Úuniquer,   Úget_indexer_forÚsort_valuesr   r<   ÚrenameÚfast_unique_multiple_list_genÚboolÚ
ValueError)r7   r    ÚresultÚkindÚnum_dtisÚnum_dti_tzsrP   Úxr9   r=   ÚindÚindsr8   Údiffr<   ÚdtypesÚ	all_listss                    r'   r   r   ¹   sú  € ô" ˆ7ƒ|�qÓÜÐBÓCÐCÜ
ˆ7ƒ|�qÓØ˜‘ˆÜ�fœd×#Ñ#Þ˜4¤3§>¡>Ò1Ü˜v›�ð ˆô œv f›~Ó.�Øˆä'¨Ó0�M€GàˆyÓØ˜‘ˆàˆØˆÛˆCÜ˜#œ}×-Ó-Ø˜A‘�Ø—6‘6Ó%Ø 1Ñ$’Kñ	 ð
 ˜q (˜mÓ+ô
 ÐNÓOÐOà”s˜7“|Ó#Ø”s—~‘~Ò%Ø�Ø˜Q‘Z‰Fà˜‹\ð ˆDñ >EÓEºW¸—x‘x¤¨U�xÓ3¹WˆGÐEØ˜Q‘ZˆFà˜Q˜R“[ˆEØ—\‘\ %µd©dÀ�\ÐFŠFñ !àˆà	�ŒÜ ×(Ñ(Ü$¹7Ó%Cº7°C§i¤i¹7Ñ%CÓDˆEÙ=DÓEºW°c—J‘J˜u¨5�JÓ1¹WˆDÐEØ˜‘G—N‘NÓ$ˆEØ˜‘G—N‘N 4¨¨ 8Ó,ˆEØ×.Ñ.¨uÓ5¸Ñ;Ñ<ˆDÜ�4�y‰yØŸ™ T§[¡[£]Ó3�ÞØ×)Ñ)Ó+�øà˜A‘JˆEä" GÐ,¨QÑ/ˆØ—:‘:ÓØ—L‘L Ó&ˆEØˆØ	�‹Ù'.ÓI¢w ´*¸SÄ%×2H“)�#—)”)¡wˆÐIÞÜ$ VÓ,‰EàˆEÙXÑPWÓXˆ	ÜÜ×-Ò-¨i¼dÀ4»jÑIØñ
ð 	
ô
 ˜E˜D™7Ð"HÐIÓJÐJùòK Fùò &DùÚEùò  Js   ÄL
Æ	LÆ)LÊLÊ$Lc                óT  • U  Vs1 s H  n[        U5      iM     nn[        U;   aY  [        U5      S:”  aF  U  Vs/ s H.  n[        U[        5      (       d  [	        [        U5      5      OUPM0     n nU[        1-  nOU S4$ [        U5      S:”  d
  [        U;  a  U S4$ U S4$ s  snf s  snf )a  
Verify the type of indexes and convert lists to Index.

Cases:

- [list, list, ...]: Return ([list, list, ...], 'list')
- [list, Index, ...]: Return _sanitize_and_check([Index, Index, ...])
    Lists are sorted and converted to Index.
- [Index, Index, ...]: Return ([Index, Index, ...], TYPE)
    TYPE = 'special' if at least one special type, 'array' otherwise.

Parameters
----------
indexes : list of Index or list objects

Returns
-------
sanitized_indexes : list of Index or list objects
type : {'list', 'array', 'special'}
r2   rK   rF   rH   )ÚtyperK   r4   r?   r   )r7   r8   Úkindsre   s       r'   rU   rU     s¬   € ñ* '.Ó.¢g˜UŒT�%Ž[¡g€EÐ.äˆuƒ}Üˆu‹:˜‹>áKRóÚKRÀa¤j°´E×&:Ñ&:””d˜1“g”ÀÒAÉ7ð ð ð ”d�V‰O‰Eà˜F�?Ð"ä
ˆ5ƒz�Aƒ~œ eÓ+Ø˜	Ð!Ð!à˜ÐÐùò /ùòs
   …B ¹5B%c                óZ   ^• [        U 5      n[        U5      m[        U4S jU 5       5      $ )zÊ
Determine if all indexes contain the same elements.

Parameters
----------
indexes : iterable of Index objects

Returns
-------
bool
    True if all indexes contain the same elements, False otherwise.
c              3  óF   >#   • U  H  nTR                  U5      v •  M     g 7frM   )Úequals)rO   r8   Úfirsts     €r'   rQ   Ú#all_indexes_same.<locals>.<genexpr>Q  s   øé € Ð4² uˆu�|‰|˜E×"Ð"²ùs   ƒ!)ÚiterÚnextÚall)r7   Úitrrq   s     @r'   r   r   B  s(   ø€ ô ˆw‹-€CÜ�‹I€EÜÔ4±Ó4Ó4Ð4r0   c                óB   • [        U 5      n[        R                  " US S9$ )N)r<   )Úranger   Ú_simple_new)ÚnÚrngs     r'   r   r   T  s   € Ü
�‹(€CÜ×!Ò! #¨DÑ1Ð1r0   )Fr   T)r   r_   r$   r   r    úbool | lib.NoDefaultÚreturnr   )r#   úlist[Index]r}   r~   )FF)r7   r~   r   r_   r    r|   r}   r   )r8   r   r}   r   )T)r    r|   r}   r   )r}   r_   )rz   Úintr}   r   )0Ú
__future__r   Útypingr   r   Únumpyr@   Úpandas._libsr   r   Úpandas.errorsr   Úpandas.core.dtypes.castr	   Úpandas.core.algorithmsr
   Úpandas.core.indexes.baser   r   r   r   r   r   Úpandas.core.indexes.categoryr   Úpandas.core.indexes.datetimesr   Úpandas.core.indexes.intervalr   Úpandas.core.indexes.multir   Úpandas.core.indexes.periodr   Úpandas.core.indexes.ranger   Úpandas.core.indexes.timedeltasr   Úpandas._typingr   Ú__all__r   r/   r"   r   r   rU   r   r   © r0   r'   Ú<module>r’      sá   ðÝ "÷ó
 ÷õ ,å 4å ,÷÷ õ :Ý 7Ý 6Ý 0Ý 2Ý 0Ý 9æÝ#ò€ð4 ØØ!%ð	JàðJð ðJð ð	Jð
 õJô@ð  Ø!&ð'Øð'àð'ð ð'ð õ	'ôTöD`KòF# ôL5õ$2r0   