
     i                        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
 dedee         fdZdedefd	Zd
 Zd Zd ZdefdZd Zd Zd Zd Zd Zd Zd Z G 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dedee         dee         defdZdedee         de	dee         deeef         f
dZdS )    )Enum)ListOptionalUnion   )CleanKey	CleanPathNameMappingreplace_ellipsissreturnc                 ,    |                      d          S )N_)split)r   s    `/root/.openclaw/workspace/.venvs/songid/lib/python3.11/site-packages/dataclass_factory/naming.pysplit_by_underscorer      s    773<<    namec                 2    |                                  | k    S N)lower)r   s    r   is_snake_caser      s    ::<<4r   c                     | S r    
snake_names    r   snaker      s    r   c                 *    |                                  S r   upperr   s    r   upper_snaker!      s    r   c                 F    d                     t          |                     S )N-joinr   r   s    r   kebabr&      s    88'
33444r   r   c                 R    |                      dd                                          S Nr    )replacer   r   s    r   r   r      $    c2&&,,...r   c                 R    |                      dd                                          S r(   )r*   r    r   s    r   r    r       r+   r   c                     t          |           }|d                                          d                    d |dd          D                        S )Nr   r)   c              3   >   K   | ]}|                                 V  d S r   title.0xs     r   	<genexpr>zcamel_lower.<locals>.<genexpr>%   s*      'E'Ea		'E'E'E'E'E'Er   r   )r   r   r%   )r   namess     r   camel_lowerr6   #   sQ    
++EAhnnG'E'E59'E'E'E E EGGGr   c                 Z    d                     d t          |           D                       S )Nr)   c              3   >   K   | ]}|                                 V  d S r   r/   r1   s     r   r4   zcamel.<locals>.<genexpr>)   s*      FF17799FFFFFFr   r$   r   s    r   camelr9   (   s,    77FF&9*&E&EFFFFFFr   c                 Z    d                     d t          |           D                       S )Nr   c              3   >   K   | ]}|                                 V  d S r   r/   r1   s     r   r4   zcamel_snake.<locals>.<genexpr>-   *      GG!AGGIIGGGGGGr   r$   r   s    r   camel_snaker=   ,   ,    88GG'::'F'FGGGGGGr   c                 j    d                     t          |                                                     S )N.)r%   r   r   r   s    r   dotrA   0   s)    88'
3344::<<<r   c                 Z    d                     d t          |           D                       S )Nr@   c              3   >   K   | ]}|                                 V  d S r   r/   r1   s     r   r4   zcamel_dot.<locals>.<genexpr>5   r<   r   r$   r   s    r   	camel_dotrD   4   r>   r   c                 Z    d                     d t          |           D                       S )Nr@   c              3   >   K   | ]}|                                 V  d S r   r   r1   s     r   r4   zupper_dot.<locals>.<genexpr>9   r<   r   r$   r   s    r   	upper_dotrG   8   r>   r   c                   B    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
    ignore
snake_casez
kebab-casecamelCaseLower	CamelCase	lowercase	UPPERCASEUPPER_SNAKE_CASECamel_Snakezdot.casez	Camel.Dotz	UPPER.DOTN)__name__
__module____qualname____doc__rJ   r   r&   r6   r9   r   r    r!   r=   rA   rD   rG   r   r   r   rI   rI   <   sV          FEE"KEEE$KK
CIIIIr   rI   
name_styletrim_trailing_underscorec                     |t           j        }|r|                     d          } |t           j        ur3t          |           st	          d          t          |         |           } | S )Nr   z5cannot convert python name that not follow snake_case)rI   rJ   rstripr   
ValueErrorCONVERTING_FUNC)r   rV   rW   s      r   convert_name_simpler\   ^   sp    
 %
  {{3)))T"" 	VTUUUz*400Kr   name_mappingc                     |rO| |v rt          | ||                    S t          |v r,t          | ||          }t          ||t                             S t          | ||          S r   )r   Ellipsisr\   )r   rV   r]   rW   new_names        r   convert_namera   n   sr      F<#D,t*<===|##*4=UVVH#Hl8.DEEEtZ1IJJJr   N)enumr   typingr   r   r   
path_utilsr   r	   r
   r   strr   boolr   r   r!   r&   r   r    r6   r9   r=   rA   rD   rG   rI   r[   r\   ra   r   r   r   <module>rg      s         ( ( ( ( ( ( ( ( ( ( J J J J J J J J J J J J3 49                   5 5 5/c / / / // / /H H H
G G GH H H= = =H H HH H H       ( OUOU;OUOUOU;;M3Y' #+4. 		    KKY'K "K #+4.	K
 8YK K K K K Kr   