ó
    uñ:iÈ  ã            	       óŽ  • S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r	J
r
JrJrJrJrJr  SSKrSSK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#  SSK$J%r%  S\S\&4S jr'S\
S\\&   S\\&\	4   4S jr( " S S\5      rS3S\&S\)S\)S\4S jjr*S\S\)S\4S jr+S\S\&4S jr,S\4S jr-S4S \&S!\\\&\)4      S\R\                  4S" jjr/S \&S\\)   4S# jr0S$\S\)4S% jr1S$\S\24S& jr3S\S\24S' jr4S(\S\)4S) jr5S\&4S* jr6S+\&S,\
/ \#4   S\#4S- jr7S.\!S\&4S/ jr8S+\&S\!4S0 jr9S1\\&   S\24S2 jr:g)5z;Xgboost pyspark integration submodule for helper functions.é    N)ÚThread)ÚAnyÚCallableÚDictÚOptionalÚSetÚTypeÚUnion)ÚBarrierTaskContextÚ	SparkConfÚSparkContextÚ
SparkFilesÚTaskContext)ÚSparkSessioné   )ÚCommunicatorContext)ÚConfig)Ú_Args)Ú_ArgVals)ÚBooster)ÚXGBModel)ÚRabitTrackerÚclsÚreturnc                 ó8   • U R                    SU R                   3$ )zReturn the class name.Ú.)Ú
__module__Ú__name__)r   s    ÚV/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/xgboost/spark/utils.pyÚget_class_namer       s   € à�n‰nÐ˜Q˜sŸ|™|˜nÐ-Ð-ó    ÚfuncÚunsupported_setc                 ó  • [         R                  " U 5      n0 nUR                  R                  5        HH  nUR                  UR
                  Ld  M  UR                  U;  d  M0  UR                  X4R                  '   MJ     U$ )zˆReturns a dictionary of parameters and their default value of function fn.  Only
the parameters with a default value will be included.

)ÚinspectÚ	signatureÚ
parametersÚvaluesÚdefaultÚemptyÚname)r"   r#   ÚsigÚfiltered_params_dictÚ	parameters        r   Ú_get_default_params_from_funcr/      sl   € ô ×
Ò
˜DÓ
!€CØÐØ—^‘^×*Ñ*Ö,ˆ	ð ×Ñ Y§_¡_Ô4Ø—‘ oÕ5à3<×3DÑ3DÐ §¡Ó0ñ -ð  Ðr!   c                   ó<   ^ • \ rS rSrSrS\S\SS4U 4S jjrSrU =r	$ )	r   é2   z&Context with PySpark specific task ID.ÚcontextÚargsr   Nc                 ó^   >• [        UR                  5       5      US'   [        TU ]  " S0 UD6  g )NÚdmlc_task_id© )ÚstrÚpartitionIdÚsuperÚ__init__)Úselfr2   r3   Ú	__class__s      €r   r:   ÚCommunicatorContext.__init__5   s+   ø€ Ü" 7×#6Ñ#6Ó#8Ó9ˆˆ^ÑÜ‰ÒÑ ˜4Ó r!   r6   )
r   r   Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚCollArgsValsr:   Ú__static_attributes__Ú__classcell__)r<   s   @r   r   r   2   s&   ø† Ù0ð!Ð 2ð !¸Lð !ÈT÷ !õ !r!   r   ÚhostÚ	n_workersÚportc                 óÖ   • SU0n[        XSUS9nUR                  5         [        UR                  S9nSUl        UR                  5         UR                  UR                  5       5        U$ )z"Start Rabit tracker with n_workersrE   Útask)rE   Úhost_ipÚsortbyrF   )ÚtargetT)r   Ústartr   Úwait_forÚdaemonÚupdateÚworker_args)rD   rE   rF   r3   ÚtrackerÚthreads         r   Ú_start_trackerrS   :   s^   € à! 9Ð-€DÜ YÀVÐRVÑW€GØ‡M�M„OÜ˜7×+Ñ+Ñ,€FØ€F„MØ
‡L�L„NØ‡K�K�×#Ñ#Ó%Ô&Ø€Kr!   Úconfc                 ó†   • U R                   c   eU R                  c  SOU R                  n[        U R                   X5      nU$ )z3Get rabit context arguments to send to each worker.r   )Útracker_host_ipÚtracker_portrS   )rT   rE   rF   Úenvs       r   Ú_get_rabit_argsrY   F   sC   € à×ÑÑ+Ð+Ð+Ø×!Ñ!Ñ)‰1¨t×/@Ñ/@€DÜ
˜×-Ñ-¨yÓ
?€CØ€Jr!   r2   c                 óŒ   • U R                  5        Vs/ s H   oR                  R                  S5      S   PM"     nnUS   $ s  snf )zLGets the hostIP for Spark. This essentially gets the IP of the first worker.Ú:r   )ÚgetTaskInfosÚaddressÚsplit)r2   ÚinfoÚtask_ip_lists      r   Ú_get_host_ipra   N   sC   € à;B×;OÑ;OÔ;QÓRÒ;Q°4—L‘L×&Ñ& sÓ+¨AÔ.Ñ;Q€LÐRØ˜‰?Ðùò Ss   “'Ac                  ó’   • [         R                  R                  5       b  [        S5      e[        R
                  R                  5       $ )zXGet or create spark session. Note: This function can only be invoked from driver
side.

z<_get_spark_session should not be invoked from executor side.)Úpysparkr   ÚgetÚRuntimeErrorr   ÚbuilderÚgetOrCreater6   r!   r   Ú_get_spark_sessionrh   T   s@   € ô
 ×Ñ×ÑÓ Ñ,äØJó
ð 	
ô ×Ñ×+Ñ+Ó-Ð-r!   r+   Úlevelc                 óø  • [         R                  " U 5      nUb  UR                  U5        O=UR                  [         R                  :X  a  UR                  [         R
                  5        UR                  (       d€  [         R                  " 5       R                  (       d\  [         R                  " [        R                  5      n[         R                  " S5      nUR                  U5        UR                  U5        U$ )zGGets a logger by name, or creates and configures it for the first time.z<%(asctime)s %(levelname)s %(name)s: %(funcName)s %(message)s)ÚloggingÚ	getLoggerÚsetLevelri   ÚNOTSETÚINFOÚhandlersÚStreamHandlerÚsysÚstderrÚ	FormatterÚsetFormatterÚ
addHandler)r+   ri   ÚloggerÚhandlerÚ	formatters        r   Ú
get_loggerrz   a   s¨   € ä×Ò˜tÓ$€FØÑØ�‰˜Õð �<‰<œ7Ÿ>™>Ó)Ø�O‰OœGŸL™LÔ)à�?�?¤7×#4Ò#4Ó#6×#?×#?Ü×'Ò'¬¯
©
Ó3ˆÜ×%Ò%ØJó
ˆ	ð 	×Ñ˜YÔ'Ø×Ñ˜'Ô"Ø€Mr!   c                 ó†   • [         R                  " U 5      nUR                  [         R                  :X  a  S$ UR                  $ )z+Get the logger level for the given log nameN)rk   rl   ri   rn   )r+   rw   s     r   Úget_logger_levelr|   u   s0   € ä×Ò˜tÓ$€FØ—<‘<¤7§>¡>Ó1ˆ4ÐC°v·|±|ÐCr!   Úspark_contextc                 óf  • U R                   R                  5       R                  5       S:¼  a^  U R                   R                  5       R                  U R                   R                  5       R	                  5       R                  S5      5      $ U R                   R                  5       R                  5       $ )z0Gets the current max number of concurrent tasks.z3.1r   )Ú_jscÚscÚversionÚmaxNumConcurrentTasksÚresourceProfileManagerÚresourceProfileFromId©r}   s    r   Ú_get_max_num_concurrent_tasksr†   {   s�   € ð ×Ñ×ÑÓ×&Ñ&Ó(¨EÓ1Ø×!Ñ!×$Ñ$Ó&×<Ñ<Ø×Ñ×!Ñ!Ó#×:Ñ:Ó<×RÑRÐSTÓUó
ð 	
ð ×Ñ× Ñ Ó"×8Ñ8Ó:Ð:r!   c                 óR   • U R                   R                  5       R                  5       $ )zWhether it is Spark local mode)r   r€   ÚisLocalr…   s    r   Ú	_is_localr‰   †   s"   € ð ×Ñ× Ñ Ó"×*Ñ*Ó,Ð,r!   c                 óŒ   • U R                  S5      nUS L=(       a)    UR                  S5      =(       d    UR                  S5      $ )Nzspark.masterzspark://zlocal-cluster)rd   Ú
startswith)rT   Úmasters     r   Ú_is_standalone_or_localclusterr�   Œ   s@   € Ø�X‰X�nÓ%€FØ˜Ð÷ Ø×Ñ˜*Ó%×K¨×):Ñ):¸?Ó)Kðr!   Útask_contextc                 ó²   • U c  [        S5      eU R                  5       nSU;  a  [        S5      e[        US   R                  S   R	                  5       5      $ )z&Get the gpu id from the task resourcesz3_get_gpu_id should not be invoked from driver side.ÚgpuzDCouldn't get the gpu id, Please check the GPU resource configurationr   )re   Ú	resourcesÚintÚ	addressesÚstrip)rŽ   r‘   s     r   Ú_get_gpu_idr•   “   s`   € àÑäÐPÓQÐQØ×&Ñ&Ó(€IØ�IÓÜØRó
ð 	
ô ˆy˜Ñ×)Ñ)¨!Ñ,×2Ñ2Ó4Ó5Ð5r!   c                  óä   • [         R                  " 5       n [        R                  R	                  U S5      n[        R                  R                  U5      (       d  [        R                  " U5        U$ )Nzxgboost-tmp)r   ÚgetRootDirectoryÚosÚpathÚjoinÚexistsÚmakedirs)Úroot_dirÚxgb_tmp_dirs     r   Ú_get_or_create_tmp_dirrŸ   ¡   sI   € Ü×*Ò*Ó,€HÜ—'‘'—,‘,˜x¨Ó7€KÜ�7‰7�>‰>˜+×&Ñ&Ü
�Š�KÔ ØÐr!   ÚmodelÚxgb_model_creatorc                 óf   • U" 5       nUR                  [        U R                  S5      5      5        U$ )z@
Deserialize an xgboost.XGBModel instance from the input model.
úutf-8)Ú
load_modelÚ	bytearrayÚencode)r    r¡   Ú	xgb_models      r   Údeserialize_xgb_modelr¨   ©   s.   € ñ "Ó#€IØ×Ñœ 5§<¡<°Ó#8Ó9Ô:ØÐr!   Úboosterc                 ó  • [         R                  R                  [        5       [        R
                  " 5        S35      nU R                  U5        [        USS9 nUR                  5       nSSS5        U$ ! , (       d  f       W$ = f)zo
Serialize the input booster to a string.

Parameters
----------
booster:
    an xgboost.core.Booster instance
ú.jsonr£   ©ÚencodingN)	r˜   r™   rš   rŸ   ÚuuidÚuuid4Ú
save_modelÚopenÚread)r©   Útmp_file_nameÚfÚser_model_strings       r   Úserialize_boosterr¶   ´   si   € ô —G‘G—L‘LÔ!7Ó!9¼d¿jºj»l¸^È5Ð;QÓR€MØ×Ñ�}Ô%Ü	ˆm gÒ	.°!ØŸ6™6›8Ð÷ 
/àÐ÷ 
/Ô	.àÐús   ÁA5Á5
Bc                 ó$  • [        5       n[        R                  R                  [	        5       [
        R                  " 5        S35      n[        USSS9 nUR                  U 5        SSS5        UR                  U5        U$ ! , (       d  f       N!= f)zF
Deserialize an xgboost.core.Booster from the input ser_model_string.
r«   Úwr£   r¬   N)
r   r˜   r™   rš   rŸ   r®   r¯   r±   Úwriter¤   )r    r©   r³   r´   s       r   Údeserialize_boosterrº   Å   sj   € ô ‹i€Gä—G‘G—L‘LÔ!7Ó!9¼d¿jºj»l¸^È5Ð;QÓR€MÜ	ˆm˜S¨7Ò	3°qØ	�‰�Œ÷ 
4à×Ñ�}Ô%Ø€N÷ 
4Õ	3ús   ÁBÂ
BÚdevicec                 ó   • U S;   $ )z&Whether xgboost is using CUDA workers.)Úcudar�   r6   )r»   s    r   Úuse_cudar¾   Ò   s   € à�_Ñ$Ð$r!   )r   )N);r@   r%   rk   r˜   rr   r®   Ú	threadingr   Útypingr   r   r   r   r   r	   r
   rc   r   r   r   r   r   Úpyspark.sql.sessionr   Ú
collectiver   ÚCCtxr   r   ÚCollArgsr   rA   Úcorer   Úsklearnr   rQ   r   r7   r    r/   r’   rS   rY   ra   rh   ÚLoggerrz   r|   r†   Úboolr‰   r�   r•   rŸ   r¨   r¶   rº   r¾   r6   r!   r   Ú<module>rÉ      sé  ðÙ Aó Û Û 	Û 
Û Ý ß B× BÑ Bã ß XÕ XÝ ,å 4Ý Ý *Ý 1Ý Ý Ý "ð.˜ð . ô .ð
 Ø
ð Ø%(¨¡Xð à	ˆ#ˆsˆ(�^ô ô&!˜$ô !ñ	˜ð 	¨ð 	°Cð 	Àõ 	ð˜&ð ¨Sð °Xô ðÐ,ð °ô ð
.˜Lô 
.ñ�Sð  ¨%°°S°©/Ñ!:ð ÀgÇnÁnõ ð(D˜3ð D 8¨C¡=ô Dð;°ð ;À#ô ;ð-˜\ð -¨dô -ð¨ð °tô ð6˜kð 6¨cô 6ð ô ðØðØ#+¨B°¨LÑ#9ðàôð˜wð ¨3ô ð"
˜sð 
 wô 
ð%�X˜c‘]ð % tõ %r!   