U
    4Af|                     @   s   d dl Zd dlZd dlZd dlmZ d dlZddlmZ	 ddl
mZmZmZmZmZmZ ddlmZ dd	 Zd
d ZG dd deZdS )    N)ArgumentParser   )__version__)is_accelerate_availableis_flax_availableis_safetensors_availableis_tf_availableis_torch_availableis_torch_npu_available   )BaseTransformersCLICommandc                 C   s   t  S N)EnvironmentCommand)_ r   =/tmp/pip-unpacked-wheel-zw5xktn0/transformers/commands/env.pyinfo_command_factory"   s    r   c                 C   s
   t | jS r   )r   accelerate_config_file)argsr   r   r   download_command_factory&   s    r   c                   @   s@   e Zd ZeedddZddddZdd	 Zed
d ZdS )r   )parserc                 C   s6   |  d}|jtd |jdd dd |jtd d S )Nenv)funcz--accelerate-config_filezQThe accelerate config file to use for the default values in the launching script.)defaulthelp)
add_parserset_defaultsr   add_argumentr   )r   Zdownload_parserr   r   r   register_subcommand+   s    
z&EnvironmentCommand.register_subcommandN)returnc                 G   s
   || _ d S r   )_accelerate_config_file)selfr   r   r   r   r   __init__6   s    zEnvironmentCommand.__init__c                 C   sN  d}t  rdd l}|j}n$tjdd k	r>dd l}|j d}d}d }}t rdd l}ddlm	}m
} |j}| jd k	stj|r|| j }t|trddd	 | D nd
| }d}	d}
t rdd l}|j}	|j }
t }d}d}t r>dd l}|j}z|j }W n& tk
r<   t|j d}Y nX d}d}d}d}t! rdd l"}dd l#}dd l$}|j}|j}|j}|j%j&' j(}t)t(( t(* t+j| | | |	 d|
 d| d| d| d| d| | dd}t r4|
rd|d< |j, |d< n(|r4d|d< |j-, |d< |j)j.|d< t/d t/| 0| |S )Nznot installedr   safetensorsz3 but is ignored because of PyTorch version too old.z	not found)default_config_fileload_config_from_file
c                 S   s    g | ]\}}d | d| qS )z	- : r   .0propvalr   r   r   
<listcomp>P   s     z*EnvironmentCommand.run.<locals>.<listcomp>	ZNAZGPUz ()z	<fill in>)z`transformers` versionPlatformzPython versionzHuggingface_hub versionzSafetensors versionzAccelerate versionzAccelerate configzPyTorch version (GPU?)zTensorflow version (GPU?)zFlax version (CPU?/GPU?/TPU?)zJax versionzJaxLib versionz/Using distributed or parallel set-up in script?zUsing GPU in script?zGPU typezUsing NPU in script?zNPU typezCANN versionzV
Copy-and-paste the text below in your GitHub issue and FILL OUT the two last points.
)1r   r#   r   	importlibutil	find_specr   
accelerateZaccelerate.commands.configr$   r%   r    ospathisfileZto_dict
isinstancedictjoinitemsr	   torchZcudaZis_availabler
   r   Z
tensorflowtestZis_gpu_availableAttributeErrorboolconfigZlist_physical_devicesr   flaxjaxjaxliblibZ
xla_bridgeget_backendplatformversionpython_versionhuggingface_hubZget_device_nameZnpuZcannprintformat_dict)r!   Zsafetensors_versionr#   Zaccelerate_versionZaccelerate_configZaccelerate_config_strr3   r$   r%   Z
pt_versionZpt_cuda_availabler;   Zpt_npu_availableZ
tf_versionZtf_cuda_availabletfZflax_versionZjax_versionZjaxlib_versionZjax_backendr@   rA   rB   infor   r   r   run9   s    
zEnvironmentCommand.runc                 C   s   d dd |  D d S )Nr&   c                 S   s    g | ]\}}d | d| qS )z- r'   r   r(   r   r   r   r,      s     z2EnvironmentCommand.format_dict.<locals>.<listcomp>)r9   r:   )dr   r   r   rJ      s    zEnvironmentCommand.format_dict)	__name__
__module____qualname__staticmethodr   r   r"   rM   rJ   r   r   r   r   r   *   s   
]r   )importlib.utilr0   r4   rE   argparser   rH    r   rF   utilsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   <module>   s    