o
    Ti                     @   s2   d Z ddlZddlZG dd deZdddZdS )	zC
Functionality of swapping tensors to/from (NVMe) storage devices.
    Nc                   @   sF   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dS )JobNc                 C   s   || _ || _|| _d | _d S N)cmd_lineoutput_filework_dir	output_fd)selfr   r   r    r	   M/home/ubuntu/.local/lib/python3.10/site-packages/deepspeed/nvme/ds_aio_job.py__init__   s   
zJob.__init__c                 C      | j S r   )r   r   r	   r	   r
   cmd      zJob.cmdc                 C   r   r   r   r   r	   r	   r
   
get_stdout   r   zJob.get_stdoutc                 C   r   r   r   r   r	   r	   r
   
get_stderr   r   zJob.get_stderrc                 C   r   r   )r   r   r	   r	   r
   get_cwd   r   zJob.get_cwdc                 C   s    | j d urt| j d| _d S d S )Nw)r   openr   r   r	   r	   r
   open_output_file    s   
zJob.open_output_filec                 C   s"   | j d ur| j   d | _ d S d S r   )r   closer   r	   r	   r
   close_output_file$   s   


zJob.close_output_file)NN)
__name__
__module____qualname__r   r   r   r   r   r   r   r	   r	   r	   r
   r      s    
r   Fc                 C   st   t d|  }|rtd|  |   tj||  | 	 | 
 d}|   |jdks8J d|   d S )N zargs = )argsstdoutstderrcwdr   zThis command failed: )shlexsplitjoinr   printr   
subprocessrunr   r   r   r   
returncode)jobverboser   procr	   r	   r
   run_job*   s   r+   )F)__doc__r%   r!   objectr   r+   r	   r	   r	   r
   <module>   s
   