o
    iH                     @   s2   d dl mZ d dlmZ d dlZG dd dZdS )    )Path)UnionNc                   @   sb   e Zd ZdZdeeef fddZdd Zdedd fd	d
Z	dedefddZ
dd Zdd ZdS )DatadirWritera}  Writer class to create kaldi like data directory.

    Examples:
        >>> with DatadirWriter("output") as writer:
        ...     # output/sub.txt is created here
        ...     subwriter = writer["sub.txt"]
        ...     # Write "uttidA some/where/a.wav"
        ...     subwriter["uttidA"] = "some/where/a.wav"
        ...     subwriter["uttidB"] = "some/where/b.wav"

    pc                 C   s(   t || _i | _d | _d| _t | _d S )NF)r   path	chilidrenfdhas_childrensetkeys)selfr    r   O/home/ubuntu/.local/lib/python3.10/site-packages/funasr/utils/datadir_writer.py__init__   s
   
zDatadirWriter.__init__c                 C   s   | S Nr   )r   r   r   r   	__enter__   s   zDatadirWriter.__enter__keyreturnc                 C   sH   | j d ur	td|| jvrt| j| }|| j|< d| _| j| }|S )NzThis writer points out a fileT)r   RuntimeErrorr   r   r   r	   )r   r   wretvalr   r   r   __getitem__   s   



zDatadirWriter.__getitem__valuec                 C   s   | j rtd|| jv rtd|  | jd u r+| jjjddd | jj	ddd| _| j
| | j| d| d	 | j  d S )
Nz"This writer points out a directoryzDuplicated: T)parentsexist_okr   zutf-8)encoding 
)r	   r   r   warningswarnr   r   parentmkdiropenaddwriteflush)r   r   r   r   r   r   __setitem__)   s   

zDatadirWriter.__setitem__c                 C   s   |    d S r   )close)r   exc_typeexc_valexc_tbr   r   r   __exit__7   s   zDatadirWriter.__exit__c                 C   st   | j r,d }| j D ]}|  |d ur'|j|jkr'td|j d|j  |}q
d S | jd ur8| j  d S d S )NzIds are mismatching between z and )	r	   r   valuesr'   r   r   r   r   r   )r   
prev_childchildr   r   r   r'   :   s   
zDatadirWriter.closeN)__name__
__module____qualname____doc__r   r   strr   r   r   r&   r+   r'   r   r   r   r   r      s    r   )pathlibr   typingr   r   r   r   r   r   r   <module>   s    