Ë
    ª2Úi^F  ã                  óŒ  — d Z ddlmZ ddlZddlmZmZ ddlmZm	Z	m
Z
mZmZmZ ddlZddlmZ ddlZddlZddlmZmZmZmZmZmZ ddl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&m'Z'm(Z( ddl)m*Z* ddl+m,Z, erddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5 d„ Z6d„ Z7dAd„Z8d„ Z9d„ Z:dBd„Z;dBd„Z<dBd„Z=dBd„Z>dCd„Z?e	 dD	 	 	 	 	 dEd„«       Z@edDdFd„«       Z@dGdFd„Z@	 dG	 	 	 	 	 dHd„ZAd„ ZBdId„ZCdBd „ZDdBd!„ZEdJd"„ZFdKd#„ZGd$„ ZHd%„ ZId&„ ZJedLd'„«       ZKe	 	 	 	 dMd(„«       ZKdGdNd)„ZK ed*«      ZLe	 	 	 	 	 	 	 	 	 	 dOd+„«       ZMe	 	 	 	 	 	 	 	 	 	 dPd,„«       ZM	 	 	 	 	 	 	 	 	 	 dQd-„ZMd.„ ZN	 	 	 	 dRd/„ZOej                   dSdTd0„«       ZQdUd1„ZRi ej¦                  d2“ej¨                  d3“ejª                  d4“ej¬                  d5“ej®                  d6“ej¦                  d2“ej°                  d2“ej²                  d7“ej´                  d7“ej¶                  d8“ej¸                  d8“ejº                  d9“ej¼                  d9“ej¾                  d:“ejÀ                  d:“ejÂ                  d;“ejÄ                  d;“ej¨                  d3ejÆ                  d3ejª                  d4ejÈ                  d4ejÊ                  d<ejÌ                  d<ejÎ                  d=ejÐ                  d=i¥ZidVd>„ZjdWd?„Zkd@„ Zly)Xzh
Misc tools for implementing data structures

Note: pandas.core.common is *not* part of the public API.
é    )ÚannotationsN)ÚabcÚdefaultdict)ÚCallableÚ
CollectionÚ	GeneratorÚHashableÚIterableÚSequence)Úpartial)ÚTYPE_CHECKINGÚAnyÚConcatenateÚTypeVarÚcastÚoverload)Úlib)Ú'construct_1d_object_array_from_listlike)Úis_bool_dtypeÚ
is_integer)ÚABCExtensionArrayÚABCIndexÚABCMultiIndexÚABCNumpyExtensionArrayÚ	ABCSeries)Úiterable_not_string)Ú
Expression)ÚAnyArrayLikeÚ	ArrayLikeÚNpDtypeÚPÚRandomStateÚT)ÚIndexc              #  ód   K  — | D ]%  }t        |«      rt        |«      E d{  –—†  Œ"|–— Œ' y7 Œ­w)a  
    Flatten an arbitrarily nested sequence.

    Parameters
    ----------
    line : sequence
        The non string sequence to flatten

    Notes
    -----
    This doesn't consider strings sequences.

    Returns
    -------
    flattened : generator
    N)r   Úflatten)ÚlineÚelements     úI/var/www/html/acx/venv/lib/python3.12/site-packages/pandas/core/common.pyr&   r&   D   s5   è ø€ ð" ò ˆÜ˜wÔ'Ü˜wÓ'×'Ñ'à‹Mñ	à'ús   ‚0¡.¢0c                óˆ   — | d   j                   }| dd  D ]  }	 |j                   |k7  rd } |S Œ |S # t        $ r d }Y  |S w xY w)Nr   é   )ÚnameÚ
ValueError)Úobjsr,   Úobjs      r)   Úconsensus_name_attrr0   \   sn   € Ø�‰7�<‰<€DØ�A�Bˆxò ˆð	Ø�x‰x˜4ÒØ�Øð €Kð  ðð €Køô ò 	ØˆDÙØ€Kð	ús   ™1±AÁ Ac                ó(  — t        | t        t        j                  t        t
        t        f«      r”t        | t        «      s„| j                  t        j                  k(  rPt        j                  | «      }t        j                  |«      s%d}t        j                  |d¬«      rt        |«      ‚yyt        | j                  «      ryyt        | t        «      r?t!        | «      dkD  r1t#        | «      t        urt        | «      } t        j$                  | «      S y)aË  
    Check whether `key` is a valid boolean indexer.

    Parameters
    ----------
    key : Any
        Only list-likes may be considered boolean indexers.
        All other types are not considered a boolean indexer.
        For array-like input, boolean ndarrays or ExtensionArrays
        with ``_is_boolean`` set are considered boolean indexers.

    Returns
    -------
    bool
        Whether `key` is a valid boolean indexer.

    Raises
    ------
    ValueError
        When the array is an object-dtype ndarray or ExtensionArray
        and contains missing values.

    See Also
    --------
    check_array_indexer : Check that `key` is a valid array to index,
        and convert to an ndarray.
    z=Cannot mask with non-boolean array containing NA / NaN valuesT)ÚskipnaFr   )Ú
isinstancer   ÚnpÚndarrayr   r   r   r   ÚdtypeÚobject_Úasarrayr   Úis_bool_arrayr-   r   ÚlistÚlenÚtypeÚis_bool_list)ÚkeyÚ	key_arrayÚna_msgs      r)   Úis_bool_indexerrA   i   sÖ   € ô8 ØÜ	”B—J‘J¤Ô*;Ô=SÐTôô ˜œmÔ,Ø�9‰9œŸ
™
Ò"ÜŸ
™
 3›ˆIä×$Ñ$ YÔ/ØX�Ü×$Ñ$ Y°tÕ<ô % VÓ,Ð,ØØÜ˜3Ÿ9™9Ô%Øð ô 
�CœÔ	äˆs‹8�aŠ<Ü�C‹y¤Ñ$ä˜3“i�Ü×#Ñ# CÓ(Ð(àó    c                óf   — t        j                  | «      r| j                  «       rt        d«      ‚| S )z®
    Disallow indexing with a float key, even if that key is a round number.

    Parameters
    ----------
    val : scalar

    Returns
    -------
    outval : scalar
    zYIndexing with a float is no longer supported. Manually convert to an integer key instead.)r   Úis_floatr   Ú
IndexError)Úvals    r)   Úcast_scalar_indexerrG   ¡   s2   € ô ‡|�|�CÔ˜SŸ^™^Ô-Üð)ó
ð 	
ð
 €JrB   c                 ó   — d„ | D «       S )zL
    Returns a generator consisting of the arguments that are not None.
    c              3  ó&   K  — | ]	  }|€Œ|–— Œ y ­w©N© ©Ú.0Úargs     r)   ú	<genexpr>znot_none.<locals>.<genexpr>»   s   è ø€ Ò3�C 3¡?ŒCÑ3ùs   ‚ŠrK   ©Úargss    r)   Únot_nonerR   ·   s   € ñ 4˜4Ô3Ð3rB   c                 ó&   — t        d„ | D «       «      S )z?
    Returns a boolean indicating if any argument is None.
    c              3  ó$   K  — | ]  }|d u –— Œ
 y ­wrJ   rK   rL   s     r)   rO   zany_none.<locals>.<genexpr>Â   ó   è ø€ Ò+˜sˆs�dŒ{Ñ+ùó   ‚©ÚanyrP   s    r)   Úany_nonerY   ¾   ó   € ô Ñ+ dÔ+Ó+Ð+rB   c                 ó&   — t        d„ | D «       «      S )zA
    Returns a boolean indicating if all arguments are None.
    c              3  ó$   K  — | ]  }|d u –— Œ
 y ­wrJ   rK   rL   s     r)   rO   zall_none.<locals>.<genexpr>É   rU   rV   ©ÚallrP   s    r)   Úall_noner_   Å   rZ   rB   c                 ó&   — t        d„ | D «       «      S )zC
    Returns a boolean indicating if any argument is not None.
    c              3  ó$   K  — | ]  }|d u–— Œ
 y ­wrJ   rK   rL   s     r)   rO   zany_not_none.<locals>.<genexpr>Ð   ó   è ø€ Ò/ 3ˆs˜$ŒÑ/ùrV   rW   rP   s    r)   Úany_not_nonerc   Ì   ó   € ô Ñ/¨$Ô/Ó/Ð/rB   c                 ó&   — t        d„ | D «       «      S )zE
    Returns a boolean indicating if all arguments are not None.
    c              3  ó$   K  — | ]  }|d u–— Œ
 y ­wrJ   rK   rL   s     r)   rO   zall_not_none.<locals>.<genexpr>×   rb   rV   r]   rP   s    r)   Úall_not_nonerg   Ó   rd   rB   c                 ó&   — t        d„ | D «       «      S )z;
    Returns the count of arguments that are not None.
    c              3  ó$   K  — | ]  }|d u–— Œ
 y ­wrJ   rK   )rM   Úxs     r)   rO   z!count_not_none.<locals>.<genexpr>Þ   s   è ø€ Ò+ ˆq˜Œ}Ñ+ùrV   )ÚsumrP   s    r)   Úcount_not_nonerl   Ú   rZ   rB   c                 ó   — y rJ   rK   ©Úvaluesr6   s     r)   Úasarray_tuplesaferp   á   s   € ð rB   c                 ó   — y rJ   rK   rn   s     r)   rp   rp   ë   s   € ØSVrB   c                óˆ  — t        | t        t        f«      st        | d«      st        | «      } n8t        | t        «      r| j
                  S t        | t        «      r| j
                  S t        | t        «      r#|t        j                  t        fv rt        | «      S 	 t        j                  | |¬«      }t        |j                  j                  t         «      rt        j                  | t        ¬«      }|j"                  dk(  r#| D �cg c]  }t        |«      ‘Œ } }t        | «      }|S # t        $ r t        | «      cY S w xY wc c}w )NÚ	__array__©r6   é   )r3   r:   ÚtupleÚhasattrr   Ú_valuesr   r4   r7   Úobjectr   r8   r-   Ú
issubclassr6   r<   ÚstrÚndim)ro   r6   Úresultrj   s       r)   rp   rp   ï   sþ   € Ü�v¤¤e˜}Ô-´¸ÀÔ1MÜ�f“‰Ü	�FœHÔ	%Ø�~‰~ÐÜ	�FœIÔ	&Ø�~‰~Ðä�&œ$Ô E¬b¯j©j¼&Ð-AÑ$AÜ6°vÓ>Ð>ð?Ü—‘˜F¨%Ô0ˆô �&—,‘,×#Ñ#¤SÔ)Ü—‘˜F¬&Ô1ˆà‡{�{�aÒà$*Ö+˜q”%˜•(Ð+ˆÐ+Ü8¸Ó@ˆà€Møô ò ?ô
 7°vÓ>Ò>ð?üò ,s   ÂD% ÄD?Ä%D<Ä;D<c                óÎ   — t        | t        t        f«      r| g} t        | t        t        j
                  f«      s	 t        | «      } t        | |¬«      }|S # t        $ r | g} Y Œw xY w)zë
    Transform label or iterable of labels to array, for use in Index.

    Parameters
    ----------
    dtype : dtype
        If specified, use as dtype of the resulting array, otherwise infer.

    Returns
    -------
    array
    rt   )r3   r{   rv   r:   r4   r5   Ú	TypeErrorrp   )Úlabelsr6   Úrlabelss      r)   Úindex_labels_to_arrayr‚     se   € ô �&œ3¤˜,Ô'Ø�ˆä�fœt¤R§Z¡ZÐ0Ô1ð	Ü˜&“\ˆFô   ¨eÔ4€Gà€Nøô ò 	Ø�XŠFð	ús   »A ÁA$Á#A$c                ó<   — | �t        | t        t        f«      s| gS | S rJ   )r3   rv   r:   ©r/   s    r)   Úmaybe_make_listr…   +  s    € Ø
€œz¨#´´t¨}Ô=ØˆuˆØ€JrB   c                ó¤   — t        | t        j                  «      r%t        | t        j                  «      st	        | «      S t        t        | «      } | S )zB
    If obj is Iterable but not list-like, consume into list.
    )r3   r   r
   ÚSizedr:   r   r   r„   s    r)   Úmaybe_iterable_to_listrˆ   1  s:   € ô �#”s—|‘|Ô$¬Z¸¼S¿Y¹YÔ-GÜ�C‹yÐÜ
Œz˜3Ó
€CØ€JrB   c                ó‚   — t        | t        «      xr. | j                  du xr | j                  du xr | j                  du S )z
    We have a null slice.
    N©r3   ÚsliceÚstartÚstopÚstepr„   s    r)   Úis_null_slicer�   ;  sH   € ô
 	�3œÓò 	Ø�I‰I˜Ðò	à�H‰H˜Ðò	ð �H‰H˜Ðð	rB   c                ó˜   — t        | t        «      xr9 | j                  duxr) | j                  duxr | j                  | j                  k(  S )z>
    We have an empty slice, e.g. no values are selected.
    N)r3   r‹   rŒ   r�   r„   s    r)   Úis_empty_slicer‘   G  sL   € ô
 	�3œÓò 	"Ø�I‰I˜TÐ!ò	"à�H‰H˜DÐ ò	"ð �I‰I˜Ÿ™Ñ!ð	rB   c              #  óZ   K  — | D ]"  }t        |t        «      xr t        |«       –— Œ$ y­w)z;
    Find non-trivial slices in "line": yields a bool.
    N)r3   r‹   r�   )r'   Úks     r)   Úis_true_slicesr”   S  s1   è ø€ ð ò <ˆÜ˜œEÓ"Ò;¬=¸Ó+;Ð';Ó;ñ<ùs   ‚)+c                ó†   — t        | t        «      xr0 | j                  dk(  xr | j                  |k(  xr | j                  du S )z&
    We have a full length slice.
    r   NrŠ   )r/   r'   s     r)   Úis_full_slicer–   \  sG   € ô
 	�3œÓò 	Ø�I‰I˜‰Nò	à�H‰H˜Ñò	ð �H‰H˜Ðð	rB   c                ó¾   — t        | d«      r| j                  S t        | t        «      rt	        | j
                  «      S t        | «      rt        | «      j                  S y )NÚ__name__)rw   r˜   r3   r   Úget_callable_nameÚfuncÚcallabler<   r„   s    r)   r™   r™   h  sK   € äˆs�JÔØ�|‰|Ðä�#”wÔÜ  §¡Ó*Ð*ä�„}Ü�C‹y×!Ñ!Ð!ð
 rB   c                ót   — t        | t        «      r | j                  |fi |¤ŽS t        | «      r	 | |fi |¤ŽS | S )zØ
    Evaluate possibly callable input using obj and kwargs if it is callable,
    otherwise return as it is.

    Parameters
    ----------
    maybe_callable : possibly a callable
    obj : NDFrame
    **kwargs
    )r3   r   Ú_eval_expressionr›   )Úmaybe_callabler/   Úkwargss      r)   Úapply_if_callabler    y  sD   € ô �.¤*Ô-Ø.ˆ~×.Ñ.¨sÑ=°fÑ=Ð=Ü	�.Ô	!Ù˜cÑ, VÑ,Ð,àÐrB   c                ó  — t        j                  | «      s5t        | t        «      rt	        t        | j
                  «      S t        | «      } t        | t        j                  «      st        d| › �«      ‚| t        k(  rt        d«      ‚| S )a  
    Helper function to standardize a supplied mapping.

    Parameters
    ----------
    into : instance or subclass of collections.abc.Mapping
        Must be a class, an initialized collections.defaultdict,
        or an instance of a collections.abc.Mapping subclass.

    Returns
    -------
    mapping : a collections.abc.Mapping subclass or other constructor
        a callable object that can accept an iterator to create
        the desired Mapping.

    See Also
    --------
    DataFrame.to_dict
    Series.to_dict
    zunsupported type: z/to_dict() only accepts initialized defaultdicts)ÚinspectÚisclassr3   r   r   Údefault_factoryr<   rz   r   ÚMappingr   )Úintos    r)   Ústandardize_mappingr§   Œ  sp   € ô* �?‰?˜4Ô Ü�dœKÔ(Üœ;¨×(<Ñ(<Ó=Ð=Ü�D‹zˆÜ�dœCŸK™KÔ(ÜÐ,¨T¨FÐ3Ó4Ð4ØŒ{ÒÜÐIÓJÐJØ€KrB   c                 ó   — y rJ   rK   ©Ústates    r)   Úrandom_stater«   ¬  s   € ØEHrB   c                 ó   — y rJ   rK   r©   s    r)   r«   r«   °  s   € ð  rB   c                ó�  — t        | «      s4t        | t        j                  t        j                  j
                  f«      rt        j                  j                  | «      S t        | t        j                  j                  «      r| S t        | t        j                  j                  «      r| S | €t        j                  S t        d«      ‚)aq  
    Helper function for processing random_state arguments.

    Parameters
    ----------
    state : int, array-like, BitGenerator, Generator, np.random.RandomState, None.
        If receives an int, array-like, or BitGenerator, passes to
        np.random.RandomState() as seed.
        If receives an np.random RandomState or Generator, just returns that unchanged.
        If receives `None`, returns np.random.
        If receives anything else, raises an informative ValueError.

        Default None.

    Returns
    -------
    np.random.RandomState or np.random.Generator. If state is None, returns np.random

    zdrandom_state must be an integer, array-like, a BitGenerator, Generator, a numpy RandomState, or None)	r   r3   r4   r5   ÚrandomÚBitGeneratorr"   r   r-   r©   s    r)   r«   r«   ¶  s�   € ô( �%ÔœJ u¬r¯z©z¼2¿9¹9×;QÑ;QÐ.RÔSÜ�y‰y×$Ñ$ UÓ+Ð+Ü	�Eœ2Ÿ9™9×0Ñ0Ô	1ØˆÜ	�Eœ2Ÿ9™9×.Ñ.Ô	/ØˆØ	ˆÜ�y‰yÐäð+ó
ð 	
rB   Ú_Tc                 ó   — y rJ   rK   ©r/   rš   rQ   rŸ   s       r)   Úpiper³   Ü  ó   € ð 	rB   c                 ó   — y rJ   rK   r²   s       r)   r³   r³   å  r´   rB   c                ó†   — t        |t        «      r&|\  }}||v r|› d�}t        |«      ‚| ||<    ||i |¤ŽS  || g|¢­i |¤ŽS )as  
    Apply a function ``func`` to object ``obj`` either by passing obj as the
    first argument to the function or, in the case that the func is a tuple,
    interpret the first element of the tuple as a function and pass the obj to
    that function as a keyword argument whose key is the value of the second
    element of the tuple.

    Parameters
    ----------
    func : callable or tuple of (callable, str)
        Function to apply to this object or, alternatively, a
        ``(callable, data_keyword)`` tuple where ``data_keyword`` is a
        string indicating the keyword of ``callable`` that expects the
        object.
    *args : iterable, optional
        Positional arguments passed into ``func``.
    **kwargs : dict, optional
        A dictionary of keyword arguments passed into ``func``.

    Returns
    -------
    object : the return type of ``func``.
    z/ is both the pipe target and a keyword argument)r3   rv   r-   )r/   rš   rQ   rŸ   Úfunc_ÚtargetÚmsgs          r)   r³   r³   î  sd   € ô: �$œÔà‰ˆˆvØ�VÑØ�HÐKÐLˆCÜ˜S“/Ð!Øˆˆv‰Ù�dÐ%˜fÑ%Ð%á�CÐ)˜$Ò) &Ñ)Ð)rB   c                óV   ‡ — ˆ fd„}t        ‰ t        j                  t        f«      r|S ‰ S )zv
    Returns a function that will map names/labels, dependent if mapper
    is a dict, Series or just a function.
    c                ó   •— | ‰v r‰|    S | S rJ   rK   )rj   Úmappers    €r)   Úfzget_rename_function.<locals>.f  s   ø€ Ø�‰;Ø˜!‘9ÐàˆHrB   )r3   r   r¥   r   )r¼   r½   s   ` r)   Úget_rename_functionr¾     s'   ø€ ôô ˜6¤C§K¡K´Ð#;Ô<ˆ1ÐHÀ&ÐHrB   c                óÔ   — t        | t        t        j                  t        t
        t        f«      r| S t        | t        j                  «      rt        | t        «      st        | «      S | gS )z¤
    Convert list-like or scalar input to list-like. List, numpy and pandas array-like
    inputs are returned unmodified whereas others are converted to list.
    )
r3   r:   r4   r5   r   r   r   r   r
   r{   )ro   s    r)   Úconvert_to_list_likerÀ   &  sK   € ô �&œ4¤§¡¬X´yÔBSÐTÔUØˆÜ	�FœCŸL™LÔ	)´*¸VÄSÔ2IÜ�F‹|Ðàˆ8€OrB   c              #  ó–   K  — |rt        | |«      }t        | ||«       	 | –— |rt        | |«       yy# |rt        | |«       w w xY w­w)aØ  
    Temporarily set attribute on an object.

    Parameters
    ----------
    obj : object
        Object whose attribute will be modified.
    attr : str
        Attribute to modify.
    value : Any
        Value to temporarily set attribute to.
    condition : bool, default True
        Whether to set the attribute. Provided in order to not have to
        conditionally use this context manager.

    Yields
    ------
    object : obj with modified attribute.
    N)ÚgetattrÚsetattr)r/   ÚattrÚvalueÚ	conditionÚ	old_values        r)   Útemp_setattrrÈ   5  sU   è ø€ ñ* Ü˜C Ó&ˆ	Ü��T˜5Ô!ð*ØŠ	áÜ�C˜˜yÕ)ð ø‰9Ü�C˜˜yÕ)ð üs   ‚A	Ÿ4 £A	´AÁA	c                óz   — t        | «      t        |«      k7  r$t        dt        | «      › dt        |«      › d�«      ‚y)zC
    Check the length of data matches the length of the index.
    zLength of values (z") does not match length of index (ú)N)r;   r-   )ÚdataÚindexs     r)   Úrequire_length_matchrÍ   T  sI   € ô ˆ4ƒy”C˜“JÒÜðÜ�D“	ˆ{ð ä�E“
ˆ|˜1ðó
ð 	
ð rB   rk   ÚmaxÚminr^   rX   ÚmeanÚprodÚstdÚvarÚmedianÚcumprodÚcumsumc                ó,   — t         j                  | «      S )zH
    if we define an internal function for this argument, return it
    )Ú_cython_tableÚget)rN   s    r)   Úget_cython_funcrÚ   ~  s   € ô ×Ñ˜SÓ!Ð!rB   c                óX   — t        | «      D ��cg c]  \  }}|€d|› �n|‘Œ c}}S c c}}w )a  
    If a name is missing then replace it by level_n, where n is the count

    Parameters
    ----------
    names : list-like
        list of column names or None values.

    Returns
    -------
    list
        list of column names with the None values replaced.
    Úlevel_)Ú	enumerate)ÚnamesÚir,   s      r)   Úfill_missing_namesrà   …  s2   € ô CLÈEÓBR×S±w°q¸$˜D˜Lˆf�Q�C‰L¨dÑ2ÓSÐSùÓSs   �&c                óx   — t        j                  d«      }|j                  j                  «       D ]  }|| u sŒ y y)a…  
    Helper function used in detecting chained assignment.

    If the pandas object (DataFrame/Series) is a local variable
    in the caller's frame, it should not be a case of chained
    assignment or method call.

    For example:

    def test():
        df = pd.DataFrame(...)
        df["a"] = 1  # not chained assignment

    Inside ``df.__setitem__``, we call this function to check whether `df`
    (`self`) is a local variable in `test` frame (the frame calling setitem). If
    so, we know it is not a case of chained assignment (even when the refcount
    of `df` is below the threshold due to optimization of local variables).
    ru   TF)ÚsysÚ	_getframeÚf_localsro   )r/   ÚframeÚvs      r)   Úis_local_in_caller_framerç   –  s=   € ô& �M‰M˜!Ó€EØ�^‰^×"Ñ"Ó$ò ˆØ�Š8Ùðð rB   )r>   r   ÚreturnÚbool)rè   ré   )rè   Úint).)ro   zArrayLike | list | tuple | zipr6   úNpDtype | Nonerè   ú
np.ndarray)ro   r
   r6   rë   rè   r   rJ   )r€   znp.ndarray | Iterabler6   rë   rè   rì   )r/   zIterable[T] | Trè   zCollection[T] | T)r'   zabc.Iterablerè   zabc.Generator[bool, None, None])r'   rê   rè   ré   )rª   únp.random.Generatorrè   rí   )rª   zHint | np.ndarray | np.random.BitGenerator | np.random.RandomState | Nonerè   znp.random.RandomState)rª   zRandomState | None)
r/   r°   rš   zCallable[Concatenate[_T, P], T]rQ   zP.argsrŸ   zP.kwargsrè   r#   )
r/   r   rš   ztuple[Callable[..., T], str]rQ   r   rŸ   r   rè   r#   )
r/   r°   rš   z>Callable[Concatenate[_T, P], T] | tuple[Callable[..., T], str]rQ   r   rŸ   r   rè   r#   )ro   z"Hashable | Iterable | AnyArrayLikerè   zlist | AnyArrayLike)T)rÄ   r{   rÆ   ré   rè   zGenerator[None])rÌ   r$   rè   ÚNone)rN   r   rè   z
str | None)rÞ   zSequence[Hashable | None]rè   zlist[Hashable])mÚ__doc__Ú
__future__r   ÚbuiltinsÚcollectionsr   r   Úcollections.abcr   r   r   r	   r
   r   Ú
contextlibÚ	functoolsr   r¢   râ   Útypingr   r   r   r   r   r   Únumpyr4   Úpandas._libsr   Úpandas.core.dtypes.castr   Úpandas.core.dtypes.commonr   r   Úpandas.core.dtypes.genericr   r   r   r   r   Úpandas.core.dtypes.inferencer   Úpandas.core.colr   Úpandas._typingr   r   r    r!   r"   r#   Úpandasr$   r&   r0   rA   rG   rR   rY   r_   rc   rg   rl   rp   r‚   r…   rˆ   r�   r‘   r”   r–   r™   r    r§   r«   r°   r³   r¾   rÀ   ÚcontextmanagerrÈ   rÍ   rk   rÎ   rÏ   r^   rX   ÚnansumrÐ   ÚnanmeanrÑ   ÚnanprodrÒ   ÚnanstdrÓ   ÚnanvarrÔ   Ú	nanmedianÚnanmaxÚnanminrÕ   Ú
nancumprodrÖ   Ú	nancumsumrØ   rÚ   rà   rç   rK   rB   r)   ú<module>r     sß  ðñõ #ã ÷÷÷ ó Ý Û Û 
÷÷ ó å å K÷÷õ õ =å &á÷÷ õ òò0
ó5òpò,4ó,ó,ó0ó0ó,ð 
àDGðØ*ðØ3Aðàòó 
ðð 
Û Vó 
Ø Vôð@ <@ðØ!ðØ*8ðàóò:óó	ó	ó<ó	òò"ò&ð@ 
Ú Hó 
Ø Hð 
ð ØSð àò ó 
ð ô
 
ñF ˆTƒ]€ð 
ðØ	ðà
)ðð ðð ð	ð
 òó 
ðð 
ðØ	ðà
&ðð ðð ð	ð
 òó 
ðð&*Ø	ð&*à
Hð&*ð ð&*ð ð	&*ð
 ó&*òRIðØ.ðàóð ×Ñó*ó ð*ó<

ðØ‡L�L�%ðà‡L�L�%ðð ‡L�L�%ðð ‡F�FˆEð	ð
 ‡F�FˆEðð ‡F�FˆEðð ‡I�Iˆuðð ‡G�GˆVðð ‡J�J�ðð ‡G�GˆVðð ‡J�J�ðð ‡F�FˆEðð ‡I�Iˆuðð ‡F�FˆEðð ‡I�Iˆuðð  ‡I�Iˆxð!ð" ‡L�L�(ð#ð$ ‡F�FˆEØ‡I�IˆuØ‡F�FˆEØ‡I�IˆuØ‡J�J�	Ø‡M�M�9Ø‡I�IˆxØ‡L�L�(ñ3€ó:"óTó"rB   