a
    mJh                     @   sV  d dl mZ d dlmZmZmZ ddlmZmZm	Z	m
Z
 eee dddZeedd	d
Zdd Zdd Zdd ZedddZdd Zdd Zdd Zdd Zdd Zdd Zd d! ZG d"d# d#eZejeejeejeejeejeejeejeejeejeejeejeiZeee ee ed$d%d&Zeee e	ee eeef d'd(d)Zd*S )+    )Enum)ListOptionalUnion   )CleanKey	CleanPathNameMappingreplace_ellipsis)sreturnc                 C   s
   |  dS )N_)split)r    r   J/var/www/shaz/venv/lib/python3.9/site-packages/dataclass_factory/naming.pysplit_by_underscore   s    r   )namer   c                 C   s   |   | kS N)lower)r   r   r   r   is_snake_case   s    r   c                 C   s   | S r   r   
snake_namer   r   r   snake   s    r   c                 C   s   |   S r   upperr   r   r   r   upper_snake   s    r   c                 C   s   d t| S )N-joinr   r   r   r   r   kebab   s    r   r   c                 C   s   |  dd S Nr    )replacer   r   r   r   r   r      s    r   c                 C   s   |  dd S r    )r"   r   r   r   r   r   r      s    r   c                 C   s4   t | }|d   ddd |dd  D  S )Nr   r!   c                 s   s   | ]}|  V  qd S r   title.0xr   r   r   	<genexpr>%       zcamel_lower.<locals>.<genexpr>r   )r   r   r   )r   namesr   r   r   camel_lower#   s    r+   c                 C   s   d dd t| D S )Nr!   c                 s   s   | ]}|  V  qd S r   r#   r%   r   r   r   r(   )   r)   zcamel.<locals>.<genexpr>r   r   r   r   r   camel(   s    r,   c                 C   s   d dd t| D S )Nr   c                 s   s   | ]}|  V  qd S r   r#   r%   r   r   r   r(   -   r)   zcamel_snake.<locals>.<genexpr>r   r   r   r   r   camel_snake,   s    r-   c                 C   s   d t|  S )N.)r   r   r   r   r   r   r   dot0   s    r/   c                 C   s   d dd t| D S )Nr.   c                 s   s   | ]}|  V  qd S r   r#   r%   r   r   r   r(   5   r)   zcamel_dot.<locals>.<genexpr>r   r   r   r   r   	camel_dot4   s    r0   c                 C   s   d dd t| D S )Nr.   c                 s   s   | ]}|  V  qd S r   r   r%   r   r   r   r(   9   r)   zupper_dot.<locals>.<genexpr>r   r   r   r   r   	upper_dot8   s    r1   c                   @   s@   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdS )	NameStylezn
    Enumeration to describe which styles do field names fit
    in plain (serialized/unparsed) structure
    ignoreZ
snake_casez
kebab-caseZcamelCaseLowerZ	CamelCaseZ	lowercaseZ	UPPERCASEZUPPER_SNAKE_CASEZCamel_Snakezdot.casez	Camel.Dotz	UPPER.DOTN)__name__
__module____qualname____doc__r3   r   r   r+   r,   r   r   r   r-   r/   r0   r1   r   r   r   r   r2   <   s   r2   )r   
name_styletrim_trailing_underscorer   c                 C   sF   |d u rt j}|r| d} |t jurBt| s6tdt| | } | S )Nr   z5cannot convert python name that not follow snake_case)r2   r3   rstripr   
ValueErrorCONVERTING_FUNC)r   r8   r9   r   r   r   convert_name_simple^   s    

r=   )r   r8   name_mappingr9   r   c                 C   sH   |r<| |v rt | ||  S t|v r<t| ||}t ||t S t| ||S r   )r
   Ellipsisr=   )r   r8   r>   r9   new_namer   r   r   convert_namen   s    rA   N)enumr   typingr   r   r   Z
path_utilsr   r   r	   r
   strr   boolr   r   r   r   r   r   r+   r,   r-   r/   r0   r1   r2   r<   r=   rA   r   r   r   r   <module>   sN   
