o
    iiU                     @   s   d dl mZ d dlmZmZmZmZmZmZmZ ej	ddddZ
ej	eedfddZej	d	dd
ddZej	d	dddZej	d	eedfddZdddZddlZddlZG dd dZdS )   )util)
ADJECTIVESNOUNSVERBSNAMESIPSUMALL_CATEGORIES	AVAILABLE-sepc                    s      fdd|p
dD S )z8Generate words from a sequence of word class/categories.c                 3   s(    | ]}t t |d  V  qdS ) N)r   chooseget_groups_listreplace).0xr    M/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/randomname/core.py	<genexpr>	   s
    
zgenerate.<locals>.<genexpr>)zadj/zn/)join)r   groupsr   r   r   generate   s   r   c                 C   s   t td| td||dS )EGet a random adjective-noun using the categories in `adj` and `noun`.anr   )r   r   prefix)adjnounr   r   r   r   get_name   s   r   
   )r   r   c                 G   s"   t j|rtnt| g|R d|iS )r   r   )r   sample_uniquer   r   )r   r   r   r   r   r   sample   s   "r"   )r   c                 G   s   t jt || S )z"Get a random sample of a category.)r   randomr"   r   )r   r   r   r   r   sample_words      r$   c                 C   s   t jt| |||dS )zGSample random adjective-nouns using the categories in `adj` and `noun`.r   )r   r!   r   )r   r   r   r   r   r   r   sample_names    r%   r&   Nc                 C   s   | r	t t|  S t S )z+Show available categories for a word class.)r	   r   doalias)kr   r   r   	available&   s   r)       c                       s   e Zd ZejdZd% fdd	Zdd	 Zd
d Z	dd Z
dd Zdd Zedd Zdd Zdd Zd&ddZdd Zdd Zd'dd Zd'd!d"Zd'd#d$Z  ZS )(	SavedListz~/.randomnamedefaultNd   Fc                    sr   t    || _tj| j|| _tjtj	| jdd t
|p"g | _g | _|r.|   |   | | d S )NT)exist_ok)super__init__nameospathr   ROOT_DIRfilemakedirsdirnamer   as_multipler   wordsremovereadatlen)selfr1   r   r   	overwrite	__class__r   r   r0   /   s   
zSavedList.__init__c                 C   s   d | jd| jpdS )Nz({} ::: {})z | z--)formatr1   r   r9   r=   r   r   r   __str__;   s   zSavedList.__str__c                 C   
   t | jS N)lenr9   rB   r   r   r   __len__>      
zSavedList.__len__c                 C   rD   rE   )iterr9   rB   r   r   r   __iter__A   rH   zSavedList.__iter__c                 C   s
   | j | S rE   )r9   r=   indexr   r   r   __getitem__D   rH   zSavedList.__getitem__c                 C   s   | | S rE   r   rK   r   r   r   getG   s   zSavedList.getc                 C   s   t j| jS rE   )r2   r3   isfiler5   rB   r   r   r   existsJ   s   zSavedList.existsc                 C   sN   | j r%t| jd}| jt| W d    dS 1 sw   Y  dS dS )NrTF)rP   openr5   __dict__updatejsonloadr=   fr   r   r   r;   N   s   
zSavedList.readc                 C   sH   t | jd}t| j| jd| W d    | S 1 sw   Y  | S )Nw)r9   r   )rR   r5   rU   dumpr9   r   rW   r   r   r   saveU   s   
zSavedList.saveTc                 C   s&   d |rdd t| jD S | jS )N
c                 s   s     | ]}d  tt|V  qdS )	N)r   mapstr)r   rY   r   r   r   r   \   s    z!SavedList.dump.<locals>.<genexpr>)r   	enumerater9   rK   r   r   r   rZ   Z   s   zSavedList.dumpc                 C   s   | j   |   | S rE   )r9   clearr[   rB   r   r   r   ra   _   s   
zSavedList.clearc                 C   s    | j   | jrt| j | S rE   )r9   ra   rP   r2   r:   r5   rB   r   r   r   r:   d   s   
zSavedList.removec                 K   s   | j   | j|fi |S rE   )r9   ra   morer=   r   kwr   r   r   r"   j   s   
zSavedList.samplec                 K   s(   | j t| jd|i| |   | S )Nr   )r9   extendr"   r   r[   rc   r   r   r   rb   n   s   zSavedList.morec                 K   s@   |d ur| j td|t|  fi | | jd | | _d S d S )Nr*   )rb   maxrF   r9   rc   r   r   r   r<   s   s    zSavedList.atlen)r,   Nr-   F)T)r-   )__name__
__module____qualname__r2   r3   
expanduserr4   r0   rC   rG   rJ   rM   rN   propertyrP   r;   r[   rZ   ra   r:   r"   rb   r<   __classcell__r   r   r?   r   r+   -   s$    



r+   rE   ) r   r   r   r   r   r   r   r	   run_with_set_random_seedr   r   r"   r$   r&   r)   r2   rU   r+   r   r   r   r   <module>   s     $
