o
    Ù­j=a  ã                   @   s|  U d Z ddlZddlZddlZddlmZmZ ddlmZ	 ddl
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlZddlmZmZm Z m!Z!m"Z"m#Z# ddl$m%Z%m&Z&m'Z' eriddl(Z)ddl*Z+G d	d
„ d
eƒZ,G dd„ deƒZ-edee.e/f e0ed eee.df  ee.df edde,f dœƒZ1edee.e/f e0ed eee.df  ee.df edde,f e.dœƒZ2ede1e1dœƒZ3ede2e2dœƒZ4de de/fdd„Z5de-de2fdd„Z6de-de7fdd„Z8drde1d e/de#fd!d"„Z9d#Z:d$eee.f d%ee.df d&eej; d'e/de1f
d(d)„Z<deded* fd+d,„Z=G d-d.„ d.eƒZ>dedee> fd/d0„Z?e	deeeej; f fd1d2„ƒZ@ed3e.d4e0d5e.d6dde1f
d7d8„ƒZAed3e.d4e0d5e.d6e.de2f
d9d8„ƒZAd3e.d4e0d5e.d6ee. dee1e2f f
d:d8„ZAd;d<dee3ef fd=d>„ZBd?d@de1fdAdB„ZCd;d<dCee,e-dDf dee3e1ef fdEdF„ZDde d&ee" deejEee" f fdGdH„ZFd?e#de/fdIdJ„ZGdejEde1fdKdL„ZHd;e>dCdMdeee3e1f e1ef fdNdO„ZIdejEde7fdPdQ„ZJde-dRe0ddfdSdT„ZKG dUdV„ dVejLƒZMG dWdX„ dXejLƒZNdYejOfdZejOfd[ejOfd\ejOfd]ejOfd^e PejQ¡fd_e Pe PeN¡¡fd`e PeN¡fdaejQfdbejQfg
eN_RG dcdd„ ddejLƒZSejTjUZUejVeU_WejXgeU_YejTjZZZejQeZ_WejXejVgeZ_Ydee.ddfdfdg„Z[d;e>dCdMdeee2e4f e1ef fdhdi„Z\G djdk„ dkƒZ]dleee!e]f  deee! ee] f fdmdn„Z^eeee1e2f eee1e2e3e4f ee1e2f f f  Z_ee`do< G dpdq„ dqeƒZadS )sz+Helpers for interfacing array like objects.é    N)ÚABCÚabstractmethod)Úcache)ÚTYPE_CHECKINGÚAnyÚCallableÚDictÚListÚLiteralÚOptionalÚProtocolÚTupleÚTypeÚ	TypeAliasÚ	TypedDictÚ	TypeGuardÚUnionÚcastÚoverloadé   )ÚArrowCatListÚCNumericPtrÚDataTypeÚFeatureTypesÚ
NumpyDTypeÚNumpyOrCupy)Úimport_cupyÚimport_pyarrowÚlazy_isinstancec                   @   ó   e Zd Zeddd„ƒZdS )Ú_ArrayLikeArgÚreturnÚArrayInfc                 C   ó   d S ©N© ©Úselfr%   r%   úP/var/www/html/CropPilot/venv/lib/python3.10/site-packages/xgboost/_data_utils.pyÚ__array_interface__.   ó   z!_ArrayLikeArg.__array_interface__N)r!   r"   )Ú__name__Ú
__module__Ú__qualname__Úpropertyr)   r%   r%   r%   r(   r    -   ó    r    c                   @   r   )Ú_CudaArrayLikeArgr!   ÚCudaArrayInfc                 C   r#   r$   r%   r&   r%   r%   r(   Ú__cuda_array_interface__3   r*   z*_CudaArrayLikeArg.__cuda_array_interface__N)r!   r1   )r+   r,   r-   r.   r2   r%   r%   r%   r(   r0   2   r/   r0   r"   é   .©ÚdataÚtypestrÚversionÚstridesÚshapeÚmaskr1   ©r5   r6   r7   r8   r9   r:   ÚstreamÚStringArray©ÚoffsetsÚvaluesÚCudaStringArrayr5   r!   c                 C   s   t | dƒot | jdƒo| jjS )z)Whether the numpy array has object dtype.ÚdtypeÚ	hasobject)ÚhasattrrB   rC   ©r5   r%   r%   r(   Úarray_hasobjectV   s
   

ÿýrF   c                 C   s0   t | ƒrtdƒ‚| j}d|v r|d j|d< |S )z6Returns a dictionary storing the CUDA array interface.ú<Input data contains `object` dtype.  Expecting numeric data.r:   )rF   Ú
ValueErrorr2   ©r5   Úainfr%   r%   r(   Úcuda_array_interface_dict_   s   rK   c                 C   ó   t | ƒ}tt |¡dƒ}|S )zMake cuda array interface str.úutf-8)rK   ÚbytesÚjsonÚdumps©r5   Ú	interfaceÚinterface_strr%   r%   r(   Úcuda_array_interfacei   ó   rT   FrR   Ú	zero_copyc                 C   sž   G dd„ dƒ}|ƒ }d| v r0| |_ tƒ }|jdkr&|j|jt | d ¡d�S |j|| d�}|S | |_|jdkrEtj|jt | d ¡d�S tj|| d�}|S )z.Convert array interface to numpy or cupy arrayc                   @   s¬   e Zd ZU dZdZee ed< edee fdd„ƒZ	e	j
deddfdd„ƒZ	edee fd	d
„ƒZej
deddfdd
„ƒZedeedf fdd„ƒZedejfdd„ƒZdS )z#from_array_interface.<locals>.Arrayz3Wrapper type for communicating with numpy and cupy.NÚ
_interfacer!   c                 S   ó   | j S r$   )rW   r&   r%   r%   r(   r)   x   ó   z7from_array_interface.<locals>.Array.__array_interface__rR   c                 S   sn   t   |¡| _t| jd ƒ| jd< | jd d | jd d f| jd< | j dd ¡}|d ur5t|ƒ| jd< d S d S )Nr9   r5   r   r   r8   )ÚcopyrW   ÚtupleÚget)r'   rR   r8   r%   r%   r(   r)   |   s   
þÿc                 S   rX   r$   ©r)   r&   r%   r%   r(   r2   ‰   rY   z<from_array_interface.<locals>.Array.__cuda_array_interface__c                 S   s
   || _ d S r$   r]   )r'   rR   r%   r%   r(   r2   �   s   
.c                 S   s   | j }|dus	J ‚|d S )zShape of the input array.Nr9   r]   )r'   Úaifr%   r%   r(   r9   ‘   s   z)from_array_interface.<locals>.Array.shapec                 S   s   t  | j¡S )zTotal size of the input array.)ÚnpÚprodr9   r&   r%   r%   r(   Úsize˜   s   z(from_array_interface.<locals>.Array.size)r+   r,   r-   Ú__doc__rW   r   r"   Ú__annotations__r.   r)   Úsetterr2   r   Úintr9   r_   Úsignedintegerra   r%   r%   r%   r(   ÚArrays   s   
 rg   r<   r   r6   ©r9   rB   ©rZ   )	r2   r   ra   Úemptyr9   r_   rB   Úarrayr)   )rR   rV   rg   ÚarrÚcpÚoutr%   r%   r(   Úfrom_array_interfacep   s   *
û
ro   é   Úptrr9   rB   Úis_cudac                 C   s²   |rt ƒ jd|d�}|j}n
tjd|d�}|j}t| tƒs&t | tj	¡j
}n| }tt |¡ƒ}|dus9|dks9J ‚|du r?|S |df|d< |rOd|vrOt|d< ||d< d|d	< |S )
z2Make an __(cuda)_array_interface__ from a pointer.)r   rh   Nr   Tr5   r<   r9   r8   )r   rj   r2   r_   r)   Ú
isinstancere   Úctypesr   Úc_void_pÚvaluer`   ÚSTREAM_PER_THREAD)rq   r9   rB   rr   rj   rk   ÚaddrÚlengthr%   r%   r(   Úmake_array_interface·   s$   
rz   zpa.DictionaryArrayc                 C   s   t | ddƒS )z"Is this an arrow dictionary array?zpyarrow.libÚDictionaryArray)r   rE   r%   r%   r(   Úis_arrow_dictÙ   ó   r|   c                   @   sŽ   e Zd ZdZe		ddd„ƒZeddd„ƒZedejfd	d
„ƒZedej	fdd„ƒZ
ded fdd„Zedefdd„ƒZedefdd„ƒZdS )ÚDfCatAccessorz!Protocol for pandas cat accessor.r!   úpd.Indexc                 C   r#   r$   r%   r&   r%   r%   r(   Ú
categoriesá   ó   zDfCatAccessor.categoriesú	pd.Seriesc                 C   r#   r$   r%   r&   r%   r%   r(   Úcodesæ   r*   zDfCatAccessor.codesc                 C   r#   r$   r%   r&   r%   r%   r(   rB   é   r*   zDfCatAccessor.dtypec                 C   r#   r$   r%   r&   r%   r%   r(   r@   ì   r*   zDfCatAccessor.values)úpa.StringArrayúpa.IntegerArrayc                 C   r#   r$   r%   r&   r%   r%   r(   Úto_arrowï   s   zDfCatAccessor.to_arrowc                 C   r#   r$   r%   r&   r%   r%   r(   r2   ó   r*   z&DfCatAccessor.__cuda_array_interface__c                 C   r#   r$   r%   r&   r%   r%   r(   Ú_columnö   r*   zDfCatAccessor._columnN)r!   r   )r!   r‚   )r+   r,   r-   rb   r.   r€   rƒ   r_   rB   Úndarrayr@   r   r†   r1   r2   r   r‡   r%   r%   r%   r(   r~   Þ   s&    þ
þr~   c                 C   s   t | dƒo	t | dƒS )Nr€   rƒ   )rD   rE   r%   r%   r(   Ú
_is_df_catú   s   r‰   c                  C   s~   dd l } |  ¡ tj|  ¡ tj|  ¡ tj|  ¡ tj|  ¡ tj|  ¡ tj|  ¡ tj|  	¡ tj	|  
¡ tj
|  ¡ tj|  ¡ tji}|S )Nr   )ÚpyarrowÚint8r_   Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64Úfloat16Úfloat32Úfloat64)ÚpaÚmappingr%   r%   r(   Ú_arrow_npdtypeÿ   s   










õr˜   Úaddressr6   ra   r<   c                 C   r#   r$   r%   ©r™   r6   ra   r<   r%   r%   r(   Ú_arrow_buf_inf  r*   r›   c                 C   r#   r$   r%   rš   r%   r%   r(   r›     r�   c                 C   sB   |d ur| df|dd |fd |dœ}|S | df|dd |fd dœ}|S )NTr3   r;   r4   r%   )r™   r6   ra   r<   ÚjcuaifÚjaifr%   r%   r(   r›     s$   ù	úÚcatsr„   c                    s  t stƒ }| jdksJ ‚|  ¡ }|\}}}|jsJ ‚t| ƒd ‰ dtdtf‡ fdd„}|j|t	j
ƒkrUt| |jƒsGd}t|dt| ƒ› d	� ƒ‚|  | ¡ ¡}| ¡ \}}}|j|t	jƒkratd
ƒ‚t|jdˆ d ƒ}	t|jd|jd ƒ}
|d u sxJ ‚|	|
dœ}||||ffS )Nr   r   Útypr!   c                    s   ˆ t  | ¡jd  S )Né   )r_   ÚiinfoÚbits)rŸ   ©Úoff_lenr%   r(   Úget_n_bytesE  s   z)_arrow_cat_names_inf.<locals>.get_n_byteszExpecting a `pyarrow.Array`.z Got: Ú.z?Arrow dictionary type offsets is required to be 32-bit integer.ú<i4ú|i1r>   )r   r   ÚoffsetÚbuffersÚis_cpuÚlenr   re   ra   r_   rŽ   rs   ÚLargeStringArrayÚ	TypeErrorÚtyper   Ústringr�   r›   r™   )rž   r–   rª   r:   r©   r5   r¥   Úarrow_str_errorÚi32catsÚjoffsetÚjdataÚjnamesr%   r£   r(   Ú_arrow_cat_names_inf8  s.   

ÿ
r¶   rk   zpa.Arrayc                 C   sž   t stƒ }t| |jƒstdt| ƒ› �ƒ‚|  ¡ \}}t|jt	| ƒft
ƒ | j |j d�}|durG|jdfdddt	| ƒfddœ}|jsFt|d< nd}||d	< |S )
z&Helper for handling categorical codes.zInvalid input type: )r9   rB   rr   NTz<t1r3   r4   r<   r:   )r   r   rs   rg   r®   r¯   rª   rz   r™   r¬   r˜   r«   rw   )rk   r–   r:   r5   r´   Újmaskr%   r%   r(   Ú_arrow_array_inf_  s2   
üú€r¸   rƒ   r…   c                 C   s"   t | ƒ\}}t|ƒ}|||dffS )zHGet the array interface representation of a string-based category array.N)r¶   r¸   )rž   rƒ   rµ   Úcats_tmpÚjcodesr%   r%   r(   Úarrow_cat_inf‚  s   r»   c                 C   sL   t | ƒs| jtjtjfv rtj}| j|dd�} | jjs"tj	| dd�} | |fS )z7Ensure the np array has correct type and is contiguous.Fri   ÚA)Úrequirements)
rF   rB   r_   r“   Úbool_r”   ÚastypeÚflagsÚalignedÚrequire)r5   rB   r%   r%   r(   Ú_ensure_np_dtype�  s   rÃ   c                 C   s   t | jƒdkp| jd dkS )Nr   )r¬   r9   )rk   r%   r%   r(   Ú_is_flatten™  s   rÄ   c                 C   s6   t | ƒrtdƒ‚| j}d|v r|d j|d< tt|ƒS )z*Returns an array interface from the input.rG   r:   )rF   rH   r)   r   r"   rI   r%   r%   r(   Úarray_interface_dict�  s   
rÅ   r‚   c                    s  |  dtj¡}dtf‡ fdd„}|ƒ r(ˆ j}t|ƒ}|j}t|ƒ}||||ffS dtdttjt	f fdd„}|ˆ jƒ\}}	t
|tjƒ\}}
t|ƒ}|	 d¡}tj t |¡¡j}|d	us^J ‚|d
fdt|	ƒfd	dd	dœ}||dœ}|j}t|ƒ}||	||f}|||fS )zCGet the array interface representation of pandas category accessor.éÿÿÿÿr!   c                     s:   ˆ j } zt | tj¡pt | tj¡W S  ty   Y dS w )NF)rB   r_   Ú
issubdtypeÚfloatingÚintegerr®   ©rB   ©rž   r%   r(   Úis_prim®  s   ÿzpd_cat_inf.<locals>.is_primÚstrarrc                 S   sº   t | tjƒst| dƒr| jtd�} ntj| td�} t t¡}t 	t 
tjdgtjd�|| ƒg¡¡}| jjdkrAdd„ |  ¡ D ƒ}n	dd„ |  ¡ D ƒ}d |¡}d	|vsUJ ‚| tj¡|fS )
z5Convert a string-like array to an arrow string array.Úto_numpyrÊ   r   ÚSc                 S   s   g | ]}|  d ¡‘qS )rM   )Údecode©Ú.0Úsr%   r%   r(   Ú
<listcomp>Ê  s    z=pd_cat_inf.<locals>.npstr_to_arrow_strarr.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS r%   )ÚstrrÑ   r%   r%   r(   rÔ   Ì  s    Ú ú )rs   r_   rˆ   rD   rÎ   ÚobjectÚasarrayÚ	vectorizer¬   ÚcumsumÚconcatenaterk   rŽ   rB   ÚkindÚtolistÚjoinr¿   r�   )rÍ   Úlenarrr?   Ústr_listr@   r%   r%   r(   Únpstr_to_arrow_strarr½  s   

ÿ
z)pd_cat_inf.<locals>.npstr_to_arrow_strarrrM   NTr¨   r3   )r5   r6   r9   r8   r7   r:   r>   )Úreplacer_   ÚnanÚboolr@   rÅ   r   r   rˆ   rÕ   rÃ   r�   Úencodert   ru   Úfrom_bufferÚc_char_prv   r¬   )rž   rƒ   rÌ   Úname_values_numÚjarr_valuesÚcode_valuesÚ
jarr_codesrâ   Úname_offsetsÚname_valuesÚ_ÚjoffsetsÚbvaluesrq   Újvaluesrµ   rº   Úbufr%   rË   r(   Ú
pd_cat_inf§  s>   
ú
ü
rô   c                 C   rL   )zMake array interface str.rM   )rÅ   rN   rO   rP   rQ   r%   r%   r(   Úarray_interfaceð  rU   rõ   Úfieldc                 C   s.   d| j v r| j d durtd|› �ƒ‚dS dS )z(Make sure no missing value in meta data.r:   Nz"Missing value is not allowed for: )r2   rH   )r5   rö   r%   r%   r(   Úcheck_cudf_meta÷  s
   
ýr÷   c                
   @   sb   e Zd ZdZdejfdejfdejfdejfdejfde ej¡fdejfd	ejfd
ejfg	Z	dS )ÚArrowSchemaz#The Schema type from arrow C array.ÚformatÚnameÚmetadatarÀ   Ú
n_childrenÚchildrenÚ
dictionaryÚreleaseÚprivate_dataN)
r+   r,   r-   rb   rt   rè   Úc_int64ÚPOINTERru   Ú_fields_r%   r%   r%   r(   rø      s    ÷rø   c                   @   s   e Zd ZdZdS )Ú
ArrowArrayz"The Array type from arrow C array.N)r+   r,   r-   rb   r%   r%   r%   r(   r    s    r  ry   Ú
null_countr©   Ú	n_buffersrü   rª   rý   rþ   rÿ   r   c                   @   s>   e Zd ZdZdefdejfdejfdejfdejd fgZ	dS )	ÚArrowDeviceArrayz)The Array type from arrow C device array.rk   Ú	device_idÚdevice_typeÚ
sync_eventÚreservedr3   N)
r+   r,   r-   rb   r  rt   r  Úc_int32ru   r  r%   r%   r%   r(   r  "  s    ûr  Ú	event_hdlc                 C   s\   ddl m} t | t tj¡¡}| t|jj	|j
¡\}||jjkr,| |¡\}}t|ƒ‚dS )z&Wait for CUDA event exported by arrow.r   )ÚruntimeN)Úcuda.bindingsr  rt   r   r  r  ÚcudaStreamWaitEventrw   Úcontentsrv   ÚcudaEventWaitDefaultÚcudaError_tÚcudaSuccessÚcudaGetErrorStringrH   )r  ÚcudartÚeventÚstatusrï   Úmsgr%   r%   r(   Ú
wait_event8  s   ýþr  c                 C   s�  t ƒ }| | j|j¡p| | j|j¡}|r$t| ƒ}t|ƒ}||| |ffS | jjdd�}| ¡ \}}t	|t
|ƒƒ}	t	|t
|ƒƒ}
t |	t t¡¡j}t|jƒ |jdksUJ ‚|j}|jd |jd |jd }}}|du soJ ‚|jdksvJ ‚|jdks}J ‚|jdks„J ‚t |
t t¡¡j}|jdv s•J ‚|jd	v r¥t|d
|jd tƒ}n|jdkr®tdƒ‚tdƒ‚t|ddtƒ}||dœ}t|ƒ}|||ffS )z4Obtain the cuda array interface for cuDF categories.Úread)Úmoderp   r   r   Nr3   )ó   uó   Uó   vu)r  r  r§   r  z9Large string for category index (names) is not supported.zDUnexpected type for category index. It's neither numeric nor string.r¨   r>   )r   rÇ   rB   rÈ   rÉ   rK   r‡   Úto_pylibcudfÚ__arrow_c_device_array__ÚPyCapsule_GetPointerÚPyCapsule_GetNamert   r   r  r  r  r  r
  r	  rk   rª   rü   r  r©   rø   rù   r›   ry   rw   r®   )rž   rƒ   rm   Ú
is_num_idxÚ	cats_ainfÚ
codes_ainfÚ	arrow_colÚschemark   Ú	array_ptrÚ
schema_ptrÚarrow_device_arrayÚarrow_arrayr:   r©   r5   Úarrow_schemar³   r´   rµ   rº   r%   r%   r(   Úcudf_cat_infH  sZ   ÿ
ÿþ

ý
ÿ
ÿþr.  c                   @   sp   e Zd ZdZdeejeg df f dee	 ddfdd„Z
de	fdd	„Zdefd
d„Zdefdd„Zddd„ZdS )Ú
Categoriesa  An internal storage class for categories returned by the DMatrix and the
    Booster. This class is designed to be opaque. It is intended to be used exclusively
    by XGBoost as an intermediate storage for re-coding categorical data.

    The categories are saved along with the booster object. As a result, users don't
    need to preserve this class for re-coding. Use the booster model IO instead if you
    want to preserve the categories in a stable format.

    .. versionadded:: 3.1.0

    .. warning::

        This class is internal.

    .. code-block:: python

        Xy = xgboost.QuantileDMatrix(X, y, enable_categorical=True)
        booster = xgboost.train({}, Xy)

        categories = booster.get_categories() # Get categories

        # Use categories as a reference for re-coding
        Xy_new = xgboost.QuantileDMatrix(
            X_new, y_new, feature_types=categories, enable_categorical=True, ref=Xy
        )

        # Categories will be part of the `model.json`.
        booster.save_model("model.json")

    ÚhandleNÚarrow_arraysr!   c                 C   s   |\| _ | _|| _d S r$   )Ú_handleÚ_freeÚ_arrow_arrays)r'   r0  r1  r%   r%   r(   Ú__init__¨  s   

zCategories.__init__c                 C   s   | j du r	tdƒ‚| j S )ao  Get the categories in the dataset. The results are stored in a list of
        (feature name, arrow array) pairs, with one array for each categorical
        feature. If a feature is numerical, then the corresponding column in the list is
        None. A value error will be raised if this container was created without the
        `export_to_arrow` option.

        NzHThe `export_to_arrow` option of the `get_categories` method is required.)r4  rH   r&   r%   r%   r(   r†   µ  s
   
ÿzCategories.to_arrowc                 C   s   | j jdu S )z$Returns True if there's no category.N©r2  rv   r&   r%   r%   r(   rj   Ä  r}   zCategories.emptyc                 C   s   | j jsJ ‚| j jS )z*Internal method for retrieving the handle.r6  r&   r%   r%   r(   Ú
get_handleÈ  s   zCategories.get_handlec                 C   s   | j jd u rd S |  ¡  d S r$   )r2  rv   r3  r&   r%   r%   r(   Ú__del__Í  s   zCategories.__del__)r!   N)r+   r,   r-   rb   r   rt   ru   r   r   r   r5  r†   rå   rj   re   r7  r8  r%   r%   r%   r(   r/  ˆ  s    þý
ür/  Úfeature_typesc                 C   s&   t | tƒr| }d} | |fS d}| |fS )z¼Get the optional reference categories from the `feature_types`. This is used by
    various `DMatrix` where the `feature_types` is reused for specifying the reference
    categories.

    N)rs   r/  )r9  Úref_categoriesr%   r%   r(   Úget_ref_categoriesÓ  s   
ÿr;  ÚAifTypec                   @   s^   e Zd ZdZdee dedee ddfdd„Z	de
fd	d
„Zeedeeef fdd„ƒƒZdS )ÚTransformedDfzÛInternal class for storing transformed dataframe.

    Parameters
    ----------
    ref_categories :
        Optional reference categories used for re-coding.

    aitfs :
        Array interface for each column.

    r:  ÚaitfsÚtemporary_buffersr!   Nc                 C   s@   || _ |d ur| ¡ d ur| ¡ }|| _nd | _|| _|| _d S r$   )r:  r7  Úref_aifr>  r?  )r'   r:  r>  r?  r^   r%   r%   r(   r5  ÿ  s   
zTransformedDf.__init__c                 C   sB   | j dur| j| jdœ}tt |¡dƒ}|S tt | j¡dƒ}|S )z6Return a byte string for JSON encoded array interface.N)r:  ÚcolumnsrM   )r:  r@  r>  rN   rO   rP   )r'   Úref_infÚinfr%   r%   r(   rõ     s   
ÿzTransformedDf.array_interfacec                 C   s   dS )z"Return the shape of the dataframe.Nr%   r&   r%   r%   r(   r9     s    zTransformedDf.shape)r+   r,   r-   rb   r   r/  r<  r	   r   r5  rN   rõ   r.   r   re   r9   r%   r%   r%   r(   r=  ò  s    þýü
û	r=  )F)brb   rZ   rt   rO   Úabcr   r   Ú	functoolsr   ÚfcacheÚtypingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Únumpyr_   Ú_typingr   r   r   r   r   r   Úcompatr   r   r   ÚpandasÚpdrŠ   r–   r    r0   re   rå   rÕ   r"   r1   r=   rA   rF   rK   rN   rT   ro   rw   Únumberrz   r|   r~   r‰   r˜   r›   r¶   r¸   r»   rˆ   rÃ   rÄ   rÅ   rô   rõ   r÷   Ú	Structurerø   r  r  r  ru   r  r  Ú	pythonapir#  rè   ÚrestypeÚ	py_objectÚargtypesr"  r  r.  r/  r;  r<  rc   r=  r%   r%   r%   r(   Ú<module>   sF   H 

úþ

ùþ
ÿ	
B
ÿ
þýü
û" ÿÿÿÿþÿÿÿÿ

þ'ÿ
þ#ÿþ
ýÿÿ
þ
ÿÿ
þI	ö
ÿÿ
þ@Kÿ
þ

ÿþþþÿ