
    0Fie-                    f   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d eD             ddhdhz
  z  Zi Zded<   	 d3d4d$Zd5d&Zd6d*Zd7d.Zd8d0Z G d1 d2e          ZdS )9z- utilities for package version introspection     )annotationsN)CallableIterable)chain)
ModuleType)Any)Requirementzbokeh>=2.4.2,!=3.0.*daskc                    | j         S N__version__ps    4lib/python3.11/site-packages/distributed/versions.py<lambda>r      s    q}     distributedc                    | j         S r   r   r   s    r   r   r          am r   msgpackc                J    d                     d | j        D                       S )N.c                ,    g | ]}t          |          S  )str).0vs     r   
<listcomp>z<lambda>.<locals>.<listcomp>   s    #>#>#>qCFF#>#>#>r   )joinversionr   s    r   r   r      s#    #((#>#>AI#>#>#>?? r   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    am r   c                    h | ]\  }}|S r   r   )r   pkg_s      r   	<setcomp>r2   $   s    CCCvsAsCCCr   pythonzdict[str, str]notes_mismatch_packagepackagesEIterable[str | tuple[str, Callable[[ModuleType], str | None]]] | Nonereturndict[str, dict[str, Any]]c                t    t                      t          t          t          t          | pg                     dS )zfReturn basic information on our software installation, and our installed versions
    of packages
    )hostr5   )get_system_infoget_package_infor   required_packagesoptional_packages)r5   s    r   get_versionsr?   .   s>      !!$#%6BGG
 
  r   dict[str, Any]c                 8   t          j                    } dt          j        z  t	          j        d          dz  | j        | j        | j        | j	        t          j
        t          j                            dd          t          j                            dd          d	S )Nz%d.%d.%d.%s.%sP   LC_ALLNoneLANG)	r3   zpython-bitsOSz
OS-releasemachine	processor	byteorderrD   rF   )platformunamesysversion_infostructcalcsizesystemreleaserH   rI   rJ   osenvironget)rL   s    r   r;   r;   =   sz    NE"S%55s++a/lm=_]*..622
vv..
 
 
r   r0   r   
str | Nonec                   ddl m}  |t                    5  | j        cddd           S # 1 swxY w Y    |t                    5  t	          | j                  cddd           S # 1 swxY w Y    |t                    5  d                    t          t          | j                            cddd           S # 1 swxY w Y   dS )z<Try a variety of common ways to get the version of a packager   )suppressNr   )	
contextlibrX   AttributeErrorr   r   r!   r    maprN   )r0   rX   s     r   version_of_packager\   L   s   ######	.	!	!                 	.	!	!    3;                               	.	!	! 4 4xxC!122334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 44s0   +//A''A+.A+-B<<C C pkgsEIterable[str | tuple[str, Callable[[ModuleType], str | None] | None]]dict[str, str | None]c                P   dd                     t          t          t          j                            i}| D ]n}t          |t          t          f          r|\  }}|t          }n	|}t          }	 t          j
        |          } ||          ||<   Z# t          $ r d||<   Y kw xY w|S )z@get package versions for the passed required & optional packagesr3   r   N)r    r[   r   rM   rN   
isinstancetuplelistr\   	importlibimport_module	Exception)r]   	pversionsr0   modnamever_fmods         r   r<   r<   Y   s    
 )1#((3sCDT;U;U2V2V'WI & &cE4=)) 	' NGU}*G&E	&)'22C!&sIg 	& 	& 	&!%Ig	& s   ."BB#"B#Clientc                   ddl m} |r|                    d          nd}| r|                     d          nd} d                                 D             t	                      }|                    |           |                    |            D ]*}|                                        |                     +g }g }t          |          D ]^t	                      }	t          | t                    r|                     d          n| }
t          v r|	
                    |
           t          |t                    r|                    d          n|}|	
                    |           fdD             }|	|z  }	t          |	          dk    rt          |          dk    rt          |          d         }nt          |          dk    rd }|                    ||
|f           t                                          v r&|                    d	 d
t                               `ddd}|rR |d|ddg|          }d| }|r+|d                    d                    |                    z  }|dxx         |z  cc<   |S )Nr   )
asciitabler5   UNKNOWNc                H    i | ]\  }}||r|                     d           nd S )r5   rn   )rU   )r   kr   s      r   
<dictcomp>z!error_message.<locals>.<dictcomp>v   s4    TTTDAqqq7!%%
###iTTTr   MISSINGc                    h | ]A}t          |         t                    r|                             d           n|         BS )rr   )ra   dictrU   )r   wr0   workerss     r   r2   z error_message.<locals>.<setcomp>   s\     
 
 
  '!*d++GAJNN3	***
 
 
r      z-  z:  )warningerrorPackage	SchedulerWorkerszMismatched versions found

z
Notes: 
{}
ry   )distributed.utilsrm   rU   itemssetupdatesortedra   rt   scheduler_relevant_packagesaddlenrc   appendr4   keysformatr    )	schedulerrv   sourcesource_namerm   r5   workererrsnotesversionsscheduler_versionsource_versionworker_versionsout	err_tableerr_msgr0   s    `              @r   error_messager   q   s   ,,,,,,'-<VZZ
###9F-6E	j)))IITTGMMOOTTTGuuHOOFOOI - -F++,,,,DEh E E55-7	4-H-HWIMM#y)))i 	 ---LL*+++ +5VT*B*BNFJJsI&&& 	 	^$$$
 
 
 
 
 	
 
 
 	O#x==A1$$"?33A6OO!!Q&&"OS.*;_MNNN(--////LLCsCC&<S&ACCDDD2
&
&C "J	;YOQUVV	=)== 	@--dii.>.>???GI'!Jr   c                      e Zd ZdZdS )VersionMismatchWarningz(Indicates version mismatch between nodesN)__name__
__module____qualname____doc__r   r   r   r   r      s        2222r   r   r   )r5   r6   r7   r8   )r7   r@   )r0   r   r7   rV   )r]   r^   r7   r_   )rk   ) r   
__future__r   rd   rS   rK   rO   rM   collections.abcr   r   	itertoolsr   typesr   typingr   packaging.requirementsr	   BOKEH_REQUIREMENTr=   r>   r   r4   __annotations__r?   r;   r\   r<   r   Warningr   r   r   r   <module>r      s.   3 3 3 " " " " " "     				   



 . . . . . . . .                   . . . . . .K 677  $$%++,??@++,##$%%&  %%&&&'
##$  DC1BCCC	G KG   *,  + + + +
        
 
 
 
   08 8 8 8v3 3 3 3 3W 3 3 3 3 3r   