
    ԋgY                       U d Z ddlmZ ddlZddl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 ddlmZ ddlmZ  ed	      Zd
d fdd fdd fdd fdd fdd fgZdd fdd fdd fgZeD  ch c]  \  } }| 	 c}} ddhdhz
  z  Zi Zded<   	 d&	 	 	 d'dZd(d Zd)d!Z	 	 	 	 d*d"Zd+d#Z G d$ d%e      Zyc c}} w ),z- utilities for package version introspection     )annotationsN)CallableIterable)chain)
ModuleType)Any)Requirementzbokeh>=3.1.0daskc                    | j                   S N__version__ps    4lib/python3.12/site-packages/distributed/versions.py<lambda>r      s    q}}    distributedc                    | j                   S r   r   r   s    r   r   r          ammr   msgpackc                p    dj                  | j                  D cg c]  }t        |       c}      S c c}w )N.)joinversionstr)r   vs     r   r   r      s'    #((AII#>IqCFI#>?#>s   3cloudpicklec                    | j                   S r   r   r   s    r   r   r      r   r   tornadoc                    | j                   S r   )r   r   s    r   r   r      s    !))r   toolzc                    | j                   S r   r   r   s    r   r   r          r   numpyc                    | j                   S r   r   r   s    r   r   r      r$   r   pandasc                    | j                   S r   r   r   s    r   r   r      s    r   lz4c                    | j                   S r   r   r   s    r   r   r      s    ammr   pythonzdict[str, str]notes_mismatch_packagec           	     \    t               t        t        t        t        | xs g             dS )zfReturn basic information on our software installation, and our installed versions
    of packages
    )hostpackages)get_system_infoget_package_infor   required_packagesoptional_packages)r/   s    r   get_versionsr4   .   s.      !$#%6BG
 r   c                 t   t        j                         } dt        j                  z  t	        j
                  d      dz  | j                  | j                  | j                  | j                  t        j                  t        j                  j                  dd      t        j                  j                  dd      d	S )Nz%d.%d.%d.%s.%sP   LC_ALLNoneLANG)	r+   zpython-bitsOSz
OS-releasemachine	processor	byteorderr8   r:   )platformunamesysversion_infostructcalcsizesystemreleaser<   r=   r>   osenvironget)r@   s    r   r0   r0   >   s~    NNE"S%5%55s+a/llmm==__]]**..62

vv.
 
r   c                n   ddl m}  |t              5  | j                  cddd       S # 1 sw Y   nxY w |t              5  t	        | j
                        cddd       S # 1 sw Y   nxY w |t              5  dj                  t        t        | j                              cddd       S # 1 sw Y   yxY w)z<Try a variety of common ways to get the version of a packager   )suppressNr   )	
contextlibrK   AttributeErrorr   r   r   r   maprB   )pkgrK   s     r   version_of_packagerP   M   sp    #	.	! 
"	!	!	.	!3;; 
"	!	!	.	!xxC!1!123 
"	!	!s    )2A  A)8)B++B4c                4   ddj                  t        t        t        j                              i}| D ]O  }t        |t        t        f      r|\  }}|t        }n|}t        }	 t        j                  |      } ||      ||<   Q |S # t        $ r d||<   Y dw xY w)z@get package versions for the passed required & optional packagesr+   r   N)r   rN   r   rA   rB   
isinstancetuplelistrP   	importlibimport_module	Exception)pkgs	pversionsrO   modnamever_fmods         r   r1   r1   Z   s    
 )1#((3sCDTDT;U2V'WIcE4=) NGU}*G&E	&))'2C!&sIg    	&!%Ig	&s   " BBBc                   ddl m} |r|j                  d      nd}| r| j                  d      nd} |j                         D ci c]  \  }}||r|j                  d      nd }}}t	               }|j                  |       |j                  |        |D ]"  }|j                  |j                  |             $ g }	g }
t        |      D ]E  }t	               }t        | t              r| j                  |d      n| }|t        v r|j                  |       t        |t              r|j                  |d      n|}|j                  |       |D ch c]/  }t        ||   t              r||   j                  |d      n||   1 }}||z  }t        |      dk  rt        |      dk(  rt        |      d   }nt        |      dk(  rd }|	j                  ||||f       |t        j                         v s(|
j                  d| dt        |           H d	d	d
}|	rD |d|ddg|	      }d| }|
r#|dj!                  dj#                  |
            z  }|dxx   |z  cc<   |S c c}}w c c}w )Nr   )
asciitabler/   UNKNOWNMISSING   z-  z:  )warningerrorPackage	SchedulerWorkerszMismatched versions found

z
Notes: 
{}
rc   )distributed.utilsr^   rI   itemssetupdatesortedrR   dictscheduler_relevant_packagesaddlenrT   appendr,   keysformatr   )	schedulerworkerssourcesource_namer^   kr   r/   workererrsnotesrO   versionsscheduler_versionsource_versionwworker_versionsout	err_tableerr_msgs                       r   error_messager   r   sr   ,'-VZZ
#9F-6	j)IIDKMMOTODAqqq!%%
#i7OGTuHOOFOOIF+,  DEh5-7	4-HIMM#y)i 	 --LL*+ +5VT*BFJJsI& 	 	^$ 
  gaj$/ 
sI.QZ   	 
 	O#x=A1$"?3A6O!Q&"OS.*;_MN(--//LL3se2&<S&A%BCDA  D 2
&C	;YOQUV	1)=--dii.>??GI'!Jk U.
s    I4I%c                      e Zd ZdZy)VersionMismatchWarningz(Indicates version mismatch between nodesN)__name__
__module____qualname____doc__ r   r   r   r      s    2r   r   r   )r/   zEIterable[str | tuple[str, Callable[[ModuleType], str | None]]] | Nonereturnzdict[str, dict[str, Any]])r   zdict[str, Any])rO   r   r   z
str | None)rX   zEIterable[str | tuple[str, Callable[[ModuleType], str | None] | None]]r   zdict[str, str | None])Client) r   
__future__r   rU   rG   r?   rC   rA   collections.abcr   r   	itertoolsr   typesr   typingr   packaging.requirementsr	   BOKEH_REQUIREMENTr2   r3   ro   r,   __annotations__r4   r0   rP   r1   r   Warningr   )rO   _s   00r   <module>r      s6   3 "  	   
 .    ./  $%+,?@+,#$%&  %&&'
#$  2CC1BvsAs1BC	G KG   *,  + 	M 	 

O0:z3W 3W Ds   3B<