ó
    uñ:i«0  ã                   óü  • S r SSKJrJr  SSKJrJrJrJrJ	r	J
r
JrJrJr  SSKrSSK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  SS
KJr  SSKJr  S\R@                  S\RB                  4S jr"\" SS5      r#\#" SSSSSS5      r$S\
\\RB                        S\
\RB                     4S jr%S\\RL                     S\\RL                  \'\(/S4   SS4S jr) " S S\5      r*S\RL                  S\4S  jr+S!\\'\	\RB                     4   S"\
\,   S#\\'\4   S$\
\   S%\\'\4   S\4S& jr-S\\RL                     S'\
\\'      S"\
\,   S(\(S)\\'\4   S*\(S+\(S\\\
\   4   4S, jr.  S1S-\S!\S.\
\   S/\(S\RB                  4
S0 jjr/g)2z*Utilities for processing spark partitions.é    )ÚdefaultdictÚ
namedtuple)	ÚAnyÚCallableÚDictÚIteratorÚListÚOptionalÚSequenceÚTupleÚUnionN)Ú
csr_matrixé   )Ú	ArrayLike©Úconcat)ÚDataIterÚDMatrixÚQuantileDMatrix)ÚXGBModelé   )Ú
get_loggerÚseriesÚreturnc                 óP   • U R                  SS9n[        R                  " U5      nU$ )zStack a series of arrays.F)Úcopy)Úto_numpyÚnpÚstack)r   Úarrays     ÚU/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/xgboost/spark/data.pyÚstack_seriesr"      s$   € à�O‰O ˆOÐ'€EÜ�HŠH�U‹O€EØ€Ló    ÚAlias)ÚdataÚlabelÚweightÚmarginÚvalidÚqidÚvaluesr&   r'   Ú
baseMarginÚvalidationIndicatorr*   Úseqc                 ó(   • U (       a  [        U 5      $ g)z&Concatenate the data if it's not None.Nr   )r.   s    r!   Úconcat_or_noner0      s   € æ
Ü�c‹{ÐØr#   ÚiteratorÚappendc                 ó¼  ^• S[         R                  S[        SS4U4S jjnSnU  H³  nUc  [        R                  UR
                  ;   nUSL a   [        R                  UR
                  ;   d   eU(       aJ  UR                  U[        R                     ) SS24   nUR                  U[        R                     SS24   nOUSpeU" US5        Uc  Mª  U" US5        Mµ     g)zjExtract partitions from pyspark iterator. `append` is a user defined function for
accepting new partition.ÚpartÚis_validr   Nc                 óö   >• T" U [         R                  U5        T" U [         R                  U5        T" U [         R                  U5        T" U [         R                  U5        T" U [         R
                  U5        g )N)Úaliasr%   r&   r'   r(   r*   )r4   r5   r2   s     €r!   Ú	make_blobÚ#cache_partitions.<locals>.make_blob+   sS   ø€ Ùˆt”U—Z‘Z Ô*Ùˆt”U—[‘[ (Ô+Ùˆt”U—\‘\ 8Ô,Ùˆt”U—\‘\ 8Ô,Ùˆt”U—Y‘Y Õ)r#   TF)ÚpdÚ	DataFrameÚboolr7   r)   ÚcolumnsÚloc)r1   r2   r8   Úhas_validationr4   Útrainr)   s    `     r!   Úcache_partitionsrA   %   sÇ   ø€ ð*œŸ™ð *´ð *¸÷ *ð &*€NãˆØÑ!Ü"Ÿ[™[¨D¯L©LÑ8ˆNØ˜TÒ!Ü—;‘; $§,¡,Ó.Ð.Ð.æØ—H‘H˜d¤5§;¡;Ñ/Ð/²Ð2Ñ3ˆEØ—H‘H˜T¤%§+¡+Ñ.²Ð1Ñ2‰Eà �5á�%˜ÔØÓÙ�e˜TÖ"ò r#   c                   ó¸   ^ • \ rS rSrSrS\\\4   S\\	   S\
SS4U 4S jjrS\\\R                        S\\R                     4S	 jrS
\S\4S jrSS jrSrU =r$ )ÚPartIteréE   z7Iterator for creating Quantile DMatrix from partitions.r%   Ú	device_idÚkwargsr   Nc                 óR   >• SU l         X l        Xl        X0l        [        TU ]  SS9  g )Nr   T)Úrelease_data)Ú_iterÚ
_device_idÚ_dataÚ_kwargsÚsuperÚ__init__)Úselfr%   rE   rF   Ú	__class__s       €r!   rN   ÚPartIter.__init__H   s+   ø€ ð ˆŒ
Ø#ŒØŒ
ØŒä‰Ñ dÐÒ+r#   c                 óð   • U(       d  g U R                   bT  SS KnSS KnUR                  R                  R                  U R                   5        UR                  XR                     5      $ XR                     $ ©Nr   )rJ   ÚcudfÚcupyÚcudaÚruntimeÚ	setDevicer;   rI   )rO   r%   rT   Úcps       r!   Ú_fetchÚPartIter._fetchR   sW   € ÞØà�?‰?Ñ&ÛÛð �G‰G�O‰O×%Ñ% d§o¡oÔ6Ø—>‘> $§z¡zÑ"2Ó3Ð3à—J‘JÑÐr#   Ú
input_datac                 óÔ  • U R                   [        U R                  [        R                     5      :X  a  gU" SU R                  U R                  [        R                     5      U R                  U R                  R                  [        R                  S 5      5      U R                  U R                  R                  [        R                  S 5      5      U R                  U R                  R                  [        R                  S 5      5      U R                  U R                  R                  [        R                  S 5      5      S.U R                  D6  U =R                   S-  sl         g)NF©r%   r&   r'   Úbase_marginr*   r   T© )rI   ÚlenrK   r7   r%   rZ   Úgetr&   r'   r(   r*   rL   )rO   r\   s     r!   ÚnextÚPartIter.nexta   så   € Ø�:‰:œ˜TŸZ™Z¬¯
©
Ñ3Ó4Ó4ØÙð 	
Ø—‘˜TŸZ™Z¬¯
©
Ñ3Ó4Ø—+‘+˜dŸj™jŸn™n¬U¯[©[¸$Ó?Ó@Ø—;‘;˜tŸz™zŸ~™~¬e¯l©l¸DÓAÓBØŸ™ D§J¡J§N¡N´5·<±<ÀÓ$FÓGØ—‘˜DŸJ™JŸN™N¬5¯9©9°dÓ;Ó<ñ	
ð �l‰lò	
ð 	�
Š
�a‰�
Ør#   c                 ó   • SU l         g rS   )rI   )rO   s    r!   ÚresetÚPartIter.reseto   s	   € Øˆ�
r#   )rK   rJ   rI   rL   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ústrr	   r
   Úintr   rN   r   r:   r;   rZ   r   r<   rc   rf   Ú__static_attributes__Ú__classcell__)rP   s   @r!   rC   rC   E   s~   ø† ÙAð,Ø˜˜d˜‘Oð,Ø08¸±ð,ØILð,à	÷,ð ˜8 H¨R¯\©\Ñ$:Ñ;ð  ÀÈÏÉÑ@Vô  ð˜xð ¨Dô ÷ò r#   rC   r4   c                 ór  • / S// p2nSn[        U R                  U R                  U R                  U R                  5       H�  u  pVpxUS:X  a  [        U5      n	Un
UnO0[        U5      n	[        R                  " U	[        R                  S9n
UnUS:X  a  U	nXI:X  d   eUR                  U
5        UR                  US   [        U
5      -   5        UR                  U5        MŸ     [        R                  " U5      n[        R                  " U5      n[        R                  " U5      n[        XíU4[        U 5      U4S9$ )Nr   )Údtypeéÿÿÿÿ)Úshape)ÚzipÚfeatureVectorTypeÚfeatureVectorSizeÚfeatureVectorIndicesÚfeatureVectorValuesrn   ra   r   ÚarangeÚint32r2   r    Úconcatenater   )r4   Úcsr_indices_listÚcsr_indptr_listÚcsr_values_listÚ
n_featuresÚvec_typeÚ	vec_size_Úvec_indicesÚ
vec_valuesÚvec_sizeÚcsr_indicesÚ
csr_valuesÚcsr_indptr_arrÚcsr_indices_arrÚcsr_values_arrs                  r!   Ú)_read_csr_matrix_from_unwrapped_spark_vecr‹   s   s+  € à9;¸a¸SÀ" Ðà€Jä8;Ø×ÑØ×ÑØ×!Ñ!Ø× Ñ ö	9Ñ4ˆ˜[ð �q‹=ä˜9“~ˆHØ%ˆKØ#‰Jô ˜:“ˆHÜŸ)š) H´B·H±HÑ=ˆKØ#ˆJà˜‹?Ø!ˆJØÓ%Ð%Ð%à×Ñ Ô,Ø×Ñ˜¨rÑ2´S¸Ó5EÑEÔFØ×Ñ˜zÖ*ñ59ô8 —X’X˜oÓ.€NÜ—n’nÐ%5Ó6€OÜ—^’^ OÓ4€NäØ	¨.Ð9Ä#ÀdÃ)ÈZÐAXñð r#   r%   Údev_ordinalÚmetaÚrefÚparamsc                 óˆ   • U (       d  [        [        R                  " S5      US9$ [        X40 UD6n[        U40 UDSU0D6nU$ )z+Handle empty partition for QuantileDMatrix.©r   r   )rŽ   rŽ   )r   r   ÚemptyrC   )r%   rŒ   r�   rŽ   r�   ÚitÚms          r!   Úmake_qdmr•   ž   sE   € ö ÜœrŸxšx¨Ó/°SÑ9Ð9Ü	�$Ñ	, tÑ	,€BÜ˜Ñ.˜fÑ.¨#Ò.€AØ€Hr#   Úfeature_colsÚuse_qdmrF   Úenable_sparse_data_optimÚhas_validation_colc           	      óø  ^^^^^• [        [        5      m[        [        5      mSmS[        R                  S[        S[
        SS4UUUU4S jjnS[        R                  S[        S[
        SS4UUU4S jjnS	[        [        [        [        R                     4   S
[        [        [        4   S[        4S jn	U(       a  Un
ST;   a	  TS   S:X  d   eOUn
S[        [        [        [        4   [        [        [        [        [        [
        4   4   4   4U4S jjnU" 5       u  pÍTb!  U(       a  [!        X
5        [#        TX,SU5      nOWTb  U(       d  [!        X
5        U	" TT5      nO8Tc!  U(       a  [!        X
5        [#        TX,SU5      nO[!        X
5        U	" TT5      nU(       a(  U(       a  [#        TX,Xí5      nOU(       a	  U	" TT5      OSnOSnUb$  UR%                  5       UR%                  5       :X  d   eXï4$ )a.  Create DMatrix from spark data partitions.

Parameters
----------
iterator :
    Pyspark partition iterator.
feature_cols:
    A sequence of feature names, used only when rapids plugin is enabled.
dev_ordinal:
    Device ordinal, used when GPU is enabled.
use_qdm :
    Whether QuantileDMatrix should be used instead of DMatrix.
kwargs :
    Metainfo for DMatrix.
enable_sparse_data_optim :
    Whether sparse data should be unwrapped
has_validation:
    Whether there's validation data.

Returns
-------
Training DMatrix and an optional validation DMatrix.
r   r4   Únamer5   r   Nc                 ó  >• U[         R                  :X  d  XR                  ;   aä  U[         R                  :X  a  Tb  U T   R                  S   S:”  a  U T   nO;X   R                  S   S:”  a$  X   nU[         R                  :X  a  [	        U5      nOS nU[         R                  :X  a-  Ub*  TS:X  a  UR                  S   mTUR                  S   :X  d   eUc  g U(       a  TU   R                  U5        g TU   R                  U5        g g ©Nr   r   )r7   r%   r=   rt   r"   r2   )r4   r›   r5   r    r–   r€   Ú
train_dataÚ
valid_datas       €€€€r!   Úappend_mÚ0create_dmatrix_from_partitions.<locals>.append_mÔ   sõ   ø€ à”5—:‘:Ó ¯©Ó!5àœŸ
™
Ó"Ø Ñ,Ø˜Ñ&×,Ñ,¨QÑ/°!Ó3à.2°<Ñ.@‘Ø‘×!Ñ! !Ñ$ qÓ(Ø™
�Øœ5Ÿ:™:Ó%ä(¨Ó/�Eøà�à”u—z‘zÓ! eÑ&7Ø “?Ø!&§¡¨Q¡�JØ! U§[¡[°¡^Ó3Ð3Ð3à‰}ØæØ˜4Ñ ×'Ñ'¨Õ.à˜4Ñ ×'Ñ'¨Õ.ð5 "6r#   c                 óJ  >• U[         R                  :X  d  XR                  ;   a  U[         R                  :X  a6  [        U 5      nTS:X  a  UR                  S   mTUR                  S   :X  d   eOX   nU(       a  TU   R                  U5        g TU   R                  U5        g g r�   )r7   r%   r=   r‹   rt   r2   )r4   r›   r5   r    r€   rž   rŸ   s       €€€r!   Úappend_m_sparseÚ7create_dmatrix_from_partitions.<locals>.append_m_sparseò   s�   ø€ ð ”5—:‘:Ó ¯©Ó!5Ø”u—z‘zÓ!ÜAÀ$ÓG�Ø “?Ø!&§¡¨Q¡�JØ! U§[¡[°¡^Ó3Ð3Ñ3à™
�æØ˜4Ñ ×'Ñ'¨Õ.à˜4Ñ ×'Ñ'¨Õ.ð "6r#   r+   rF   c           	      ó4  • [        U 5      S:X  a;  [        S5      R                  S5        [        SS[        R
                  " S5      0UD6$ [        U [        R                     5      n[        U R                  [        R                  S 5      5      n[        U R                  [        R                  S 5      5      n[        U R                  [        R                  S 5      5      n[        U R                  [        R                  S 5      5      n[        SX#XEUS.UD6$ )Nr   ÚXGBoostPySparkz_Detected an empty partition in the training data. Consider to enable repartition_random_shuffler%   r‘   r^   r`   )ra   r   Úwarningr   r   r’   r0   r7   r%   rb   r&   r'   r(   r*   )r+   rF   r%   r&   r'   r(   r*   s          r!   ÚmakeÚ,create_dmatrix_from_partitions.<locals>.make  sÝ   € Üˆv‹;˜!ÓÜÐ'Ó(×0Ñ0ð.ôô
 Ñ;¤§¢¨Ó 0Ð;°FÑ;Ð;ä˜f¤U§Z¡ZÑ0Ó1ˆÜ˜vŸz™z¬%¯+©+°tÓ<Ó=ˆÜ §
¡
¬5¯<©<¸Ó >Ó?ˆÜ §
¡
¬5¯<©<¸Ó >Ó?ˆÜ˜VŸZ™Z¬¯	©	°4Ó8Ó9ˆÜð 
Ø¨6È3ñ
ØRXñ
ð 	
r#   Úmissingg        c                  óf   >• Sn 0 n0 nTR                  5        H  u  p4X0;   a  XAU'   M  XBU'   M     X!4$ )N)Úmax_binrª   ÚsilentÚnthreadÚenable_categorical)Úitems)Únon_data_keysÚnon_data_paramsr�   ÚkÚvrF   s        €r!   Úsplit_paramsÚ4create_dmatrix_from_partitions.<locals>.split_params  sH   ø€ ð

ˆð ˆØˆØ—L‘L–N‰DˆAØÓ!Ø%& Ó"à�Q“ñ	 #ð
 Ð$Ð$r#   )r   Úlistr:   r;   rm   r<   r   r	   r   Úndarrayr   r   r   r   rn   ÚfloatrA   r•   Únum_col)r1   r–   rŒ   r—   rF   r˜   r™   r    r£   r¨   Ú	append_fnrµ   r�   r�   ÚdtrainÚdvalidr€   rž   rŸ   s    `  `           @@@r!   Úcreate_dmatrix_from_partitionsr¾   ­   sÞ  ü€ ôD /:¼$Ó.?€JÜ.9¼$Ó.?€Jà€Jð/”r—|‘|ð /¬3ð /¼$ð /À4÷ /ò /ð</œbŸl™lð /´#ð /Äð /È$÷ /ñ /ð"
”Tœ#œt¤B§J¡JÑ/Ð/Ñ0ð 
¼$¼sÄC¸x¹.ð 
ÌWô 
ö$  Ø#ˆ	Ø˜FÓ" v¨iÑ'8¸CÓ'?Ð?Ð?Ð'?àˆ	ð%œ%¤¤S¬# X¡´´S¼%ÄÄUÌDÐ@PÑ:QÐ5QÑ0RÐ RÑS÷ %ñ*  “>�L€DàÑ¦GÜ˜Ô-Ü" :¨{À$ÈÓO‰Ø	Ñ	!®'Ü˜Ô-Ù�j &Ó)‰Ø	Ñ	¦'Ü˜Ô-Ü˜* k¸¸vÓF‰ä˜Ô-Ù�j &Ó)ˆö ÞÜ(0Ø˜K¨vó)‰Fö 2D‘T˜* fÔ-È‰FàˆàÑØ�~‰~Ó 6§>¡>Ó#3Ó3Ð3Ð3àˆ>Ðr#   Úmodelr_   Ústrict_shapec           
      óè   • U R                  S5      n[        UUU R                  U R                  U R                  U R
                  U R                  S9nU R                  5       R                  USSUUS9$ )z4Predict contributions with data with the full model.N)r_   rª   r®   Úfeature_typesÚfeature_weightsr¯   TF)Úpred_contribsÚvalidate_featuresÚiteration_rangerÀ   )	Ú_get_iteration_ranger   rª   Ún_jobsrÂ   rÃ   r¯   Úget_boosterÚpredict)r¿   r%   r_   rÀ   rÆ   Údata_dmatrixs         r!   rÄ   rÄ   U  s   € ð ×0Ñ0°Ó6€OÜØØØ—‘Ø—‘Ø×)Ñ)Ø×-Ñ-Ø ×3Ñ3ñ€Lð ×ÑÓ×&Ñ&ØØØØ'Ø!ð 'ð ð r#   )NF)0rl   Úcollectionsr   r   Útypingr   r   r   r   r	   r
   r   r   r   Únumpyr   Úpandasr:   Úscipy.sparser   Ú_typingr   Úcompatr   Úcorer   r   r   Úsklearnr   Úutilsr   ÚSeriesr¸   r"   r$   r7   r0   r;   rm   r<   rA   rC   r‹   rn   r•   r¾   rÄ   r`   r#   r!   Ú<module>r×      s2  ðá 0ß /ß X× XÕ Xã Û Ý #å Ý ß 5Ñ 5Ý Ý ð˜Ÿ™ð  r§z¡zô ñ 	�7ÐQÓR€Ùˆh˜ ¨<Ð9NÐPUÓV€ð˜ ¨"¯*©*Ñ!5Ñ6ð ¸8ÀBÇJÁJÑ;Oô ð#Ø�r—|‘|Ñ$ð#Ø.6¸¿¹ÀcÈ4Ð7PÐRVÐ7VÑ.Wð#à	ô#ô@+ˆxô +ð\(°B·L±Lð (ÀZô (ðVØ
ˆs�D˜Ÿ™Ñ$Ð$Ñ
%ðà˜#‘ðð ˆs�Cˆx‰.ðð 
�'Ñ	ð	ð
 ��c�‰Nðð ôðeà�r—|‘|Ñ$ðeð ˜8 C™=Ñ)ðeð ˜#‘ð	eð
 ðeð ��c�‰Nðeð #ðeð ðeð ˆ7�H˜WÑ%Ð%Ñ&ôeðV (,Øñ	Øðà
ðð ˜)Ñ$ðð ð	ð
 ‡Z�Zör#   