B
    F.\                 @   s   d Z ddlmZmZ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
Z
ddlmZ ddd fd	d
d fddd fddd fddd fddd fgZddd fddd fddd fddd fddd fddd fgZd'dd Zd!d" Zd#d$ Zd%d& ZdS )(z- utilities for package version introspection     )print_functiondivisionabsolute_importN   )ignoringZdaskc             C   s   | j S )N)__version__)p r	   3lib/python3.7/site-packages/distributed/versions.py<lambda>   s    r   Zdistributedc             C   s   | j S )N)r   )r   r	   r	   r
   r      s    Zmsgpackc             C   s   d dd | jD S )N.c             S   s   g | ]}t |qS r	   )str).0vr	   r	   r
   
<listcomp>   s    z<lambda>.<locals>.<listcomp>)joinversion)r   r	   r	   r
   r      s    Zcloudpicklec             C   s   | j S )N)r   )r   r	   r	   r
   r      s    Ztornadoc             C   s   | j S )N)r   )r   r	   r	   r
   r      s    Ztoolzc             C   s   | j S )N)r   )r   r	   r	   r
   r      s    Znumpyc             C   s   | j S )N)r   )r   r	   r	   r
   r      s    Zpandasc             C   s   | j S )N)r   )r   r	   r	   r
   r      s    Zbokehc             C   s   | j S )N)r   )r   r	   r	   r
   r      s    Zlz4c             C   s   | j S )N)r   )r   r	   r	   r
   r      s    Zdask_mlc             C   s   | j S )N)r   )r   r	   r	   r
   r      s    Zbloscc             C   s   | j S )N)r   )r   r	   r	   r
   r      s    c             C   s2   | dkrg } t  ttttt|  dd}|S )zh
    Return basic information on our software installation, and out installed versions of packages.
    N)ZrequiredZoptional)hostpackages)get_system_infoget_package_inforequired_packagesoptional_packageslist)r   dr	   r	   r
   get_versions   s    r   c              C   s   t  \} }}}}}ddtjd d   fdtdd fdd|  fdd| fd	d| fd
d| fddtj fddtj	dd fddtj	dd fddt
  fg
}|S )NZpythonz%d.%d.%d.%s.%szpython-bitsP   ZOSz%sz
OS-releasemachine	processor	byteorderLC_ALLNoneZLANGLOCALEz%s.%s)platformunamesysversion_infostructZcalcsizer    osenvirongetlocaleZ	getlocale)sysnamenodenamereleaser   r   r   r   r	   r	   r
   r   ,   s    



r   c          	   C   sV   t t | jS Q R X t t t| jS Q R X t t dtt| jS Q R X dS )z> Try a variety of common ways to get the version of a package Nr   )r   AttributeErrorr   r   r   r   mapr'   )pkgr	   r	   r
   version_of_package>   s    


r3   c          	   C   s   g }x| D ]x}t |ttfr&|\}}n|}t}|dkr:t}y$t|}||}|||f W q
 tk
r   ||df Y q
X q
W |S )zB get package versions for the passed required & optional packages N)
isinstancetupler   r3   	importlibimport_moduleappend	Exception)ZpkgsZ	pversionsr2   modnameZver_fmodZverr	   r	   r
   r   I   s    


r   )N)__doc__Z
__future__r   r   r   r$   r(   r)   r&   r,   r6   Zutilsr   r   r   r   r   r3   r   r	   r	   r	   r
   <module>   s0   










