
    =f                     8    d dl Z d dlmZ  G d d          ZdZdS )    N)transliterate_wordc                   v    e Zd Zg ZdZd Zd Zd Zd Ze	d             Z
d Zd Zd	 Zd
 ZddZd Zd Zd ZdS )RussianNames)namename_reductionname_max_len
patronymicpatronymic_reductionpatronymic_max_lensurnamesurname_reductionsurname_max_lencountgendertransliterateoutput_typeseedrare	uppercase_basec           	      h   i ddddddddddd	dd
ddddddddddddddd dddd}|                     dd           }|t          j        |           |                                D ]*\  }}t	          | ||                    ||                     +|                                  d S )Nr   Tr   Fr   
   r	   r
   r   r   r   r   r   r         ?r   r   strr   r   r   )poprandomr   itemssetattrget
_fill_base)selfkwargsprop_defaultsr   propdefaults         E/var/www/html/env/lib/python3.11/site-packages/russian_names/names.py__init__zRussianNames.__init__   sH   
D
e
 B
 $	

 #E
 !"
 t
  
 r
 R
 c
 U
 5
 D
 E
  !
& zz&$''K*0022 	; 	;MD'D$

4 9 9::::    c                     d                     | j        j                  }| j        D ]A}|                    d          rt          | |          }|d                     ||          z  }B|S )Nz{} settings:
_z
	 {}: {}
 )format	__class____name__	__slots__
startswithgetattr)r!   infooptionvalues       r&   __str__zRussianNames.__str__/   st    &&t~'>??n 	9 	9F  %% D&))EN))&%888DDr(   c                     | j         S N)r   r!   s    r&   __len__zRussianNames.__len__8   s
    zr(   c              #   v   K   | j         r/|                                 V  | xj         dz  c_         | j         -d S d S )N   )r   
get_personr7   s    r&   __iter__zRussianNames.__iter__;   sU      j 	//#####JJ!OJJ j 	 	 	 	 	r(   c                     || _         d S r6   )_data)clsdatas     r&   	read_datazRussianNames.read_data@   s    			r(   c                     d}|                                 D ]-\  }}|                    d          rd}t          | ||           .|r|                                  d S d S )NF_lenT)r   endswithr   r    )r!   r"   refill_baser$   r3   s        r&   _set_optionszRussianNames._set_optionsD   sx    !<<>> 	' 	'KD%}}V$$ #"D$&&&& 	OO	 	r(   c                 j    t          t          fd|                    d                              S )Nc                 *    t          |           k    S r6   )len)xmax_lens    r&   <lambda>z(RussianNames._load_set.<locals>.<lambda>N   s    SVVw%6 r(    )listfiltersplit)r!   sectionrK   s     `r&   	_load_setzRussianNames._load_setM   s1    F6666c8J8JKKLLLr(   c                    i | _         | j        d         }| j        d         }| j        d         }| j        d         }| j        d         }| j        d         }| j        d         }| j        d         }| j        d	         }	| j        d
         }
| j        r||z  }||z  }||z  }|	|z  }	|                     || j                  |                     || j                  |                     || j                  d|                     || j                  |                     |	| j                  |                     |
| j                  dd| _         d S )Nr   r:                        	   r   r	   r   )manwoman)r   r>   r   rR   r   r   r   )r!   	names_m_rnames_mpatronymics_m_rpatronymics_m
surnames_m	names_w_rnames_wpatronymics_w_rpatronymics_w
surnames_ws              r&   r    zRussianNames._fill_baseP   sK   
JqM	*Q-*Q-
1Z]
JqM	*Q-*Q-
1Z]
9 	-y G_,My G_,M w0ABB"nn]D<STT>>*d6JKK  w0ABB"nn]D<STT>>*d6JKK 
 



r(   c                 t    t          j        dd          }d}d| j        cxk    rdk    r
n n| j        }||k     S )Nr   r:   r   )r   uniformr   )r!   dicer   s      r&   _select_gender_distributionz(RussianNames._select_gender_distributionq   sM    ~a##    q     [Ff}r(   Fc                     |rdnd}| j         |         |         }t          j        |          }|r|d         dz   }| j        rt	          |          }| j        r|                                }|S )Nr]   r^   r   .)r   r   choicer   r   r   upper)r!   r   	elem_type	reductionsubbaser   s          r&   _get_objectzRussianNames._get_objectx   sx    *ee7z#y)}T"" 	!7S=D 	,%d++D> 	 ::<<Dr(   c                 n   | j         dk    r|}n| j         dk    r"t          |                                          }ny| j         dk    r"t          |                                          }nL| j         dk    r2d                    d |                                D                       }nt          d          |S )NdictrN   tupler   rM   c                     g | ]	\  }}||
S r6    ).0kvs      r&   
<listcomp>z/RussianNames._format_person.<locals>.<listcomp>   s    MMMTQq}q}}}r(   zAOutput_type does not have value 'str', 'list, 'tuple' or 'dict'. )r   rN   valuesrx   joinr   
ValueError)r!   personresults      r&   _format_personzRussianNames._format_person   s    v%%FF''&--//**FF((6==??++FF&&XXMMV\\^^MMMNNFF`aaar(   c                 X    | j         di | |                                 }|                     |d| j                  }|                     |d| j                  }|                     |d| j                  }| j        r|nd | j        r|nd | j        r|nd d}| 	                    |          S )Nr   r	   r   r\   rz   )
rF   rl   ru   r   r
   r   r   r	   r   r   )r!   r"   r   r   r	   r   r   s          r&   r;   zRussianNames.get_person   s    ##F###11330CDD%%flD<UVV
""69d6LMM I/DD4(,A**T#'<9T
 

 ""6***r(   c                 ^    d}t          | j                  D ]} | j        di |}||fz  }|S )Nrz   )ranger   r;   )r!   r"   batchr*   fios        r&   	get_batchzRussianNames.get_batch   sJ    tz"" 	 	A!$/++F++CcWEEr(   N)F)r-   
__module____qualname__r>   r.   r'   r4   r8   r<   classmethodrA   rF   rR   r    rl   ru   r   r;   r   rz   r(   r&   r   r      s        EI  <      
   [  M M M
 
 
B  
 
 
 
  + + +    r(   r   )r   )r   russian_names.utilsr   r   __all__rz   r(   r&   <module>r      s\     2 2 2 2 2 2] ] ] ] ] ] ] ]@r(   