o
    }oi                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlZd dlm	Z	 G dd de	e Z
G dd de	e Zd	d
 Zdeeef deeef deeef fddZG dd de	e ZG dd deZdS )    N)Path)Union)Artifactc                   @   s8   e Zd ZdedededefddZdedefdd	Zd
S )PathArtifactvalueabsolute_dirrelative_dirreturnc                 C   s   t |||}|S N)	copy_fileselfinstancer   r   r   	new_value r   S/home/ubuntu/.local/lib/python3.10/site-packages/nemo/lightning/io/artifact/file.pydump   s   zPathArtifact.dumppathc                 C      |S r
   r   r   r   r   r   r   load      zPathArtifact.loadN)__name__
__module____qualname__r   r   r   r   r   r   r   r      s    r   c                   @   8   e Zd ZdedededefddZdedefdd	Zd
S )FileArtifactr   r   r   r	   c                 C   s0   t | stjt|ddS t|||}t|S NT)attrskip)pathizeexistsfdlConfigr   r   strr   r   r   r   r   "   s   zFileArtifact.dumpr   c                 C   r   r
   r   r   r   r   r   r   )   r   zFileArtifact.loadNr   r   r   r$   r   r   r   r   r   r   r   r   !   s    r   c                 C   s   t | ts	t| S | S r
   )
isinstancer   )sr   r   r   r    -   s   
r    srcr   relative_dstc                 C   sH   t |t | j }t || }| rtdt| t| | |S )NzDst file already exists )r    namer!   FileExistsErrorr$   shutilcopy2)r(   r   r)   relative_pathoutputr   r   r   r   3   s   r   c                   @   r   )DirArtifactr   r   r   r	   c                 C   sf   t |}t |}t |}| s|S ||j }tjt|| dd | D ]}t||| q&t|S )NT)exist_ok)r    is_dirr*   osmakedirsr$   iterdirr   )r   r   r   r   r   filer   r   r   r   =   s   
zDirArtifact.dumpr   c                 C   r   r
   r   r   r   r   r   r   J   r   zDirArtifact.loadNr%   r   r   r   r   r0   <   s    r0   c                       s@   e Zd Zdedededef fddZdedefdd	Z  ZS )
DirOrStringArtifactr   r   r   r	   c                    s.   t | stjt|ddS t ||||S r   )r    r!   r"   r#   r7   superr   )r   r   r   r   r   	__class__r   r   r   O   s   zDirOrStringArtifact.dumpr   c                 C   r   r
   r   r   r   r   r   r   U   r   zDirOrStringArtifact.load)r   r   r   r$   r   r   r   __classcell__r   r   r9   r   r7   N   s    r7   )r3   r,   pathlibr   typingr   fiddler"   nemo.lightning.io.artifact.baser   r   r$   r   r    r   r0   r7   r   r   r   r   <module>   s   	.	