o
    9f                     @   sV   d dl Z d dlmZ d dlmZ d dlmZ ddlmZ G dd deZ	dd	d
Z
dS )    N)Column)DeclarativeMeta)declarative_base   )Tablec                   @   s"   e Zd ZdZedZdd ZdS )ClickHouseDeclarativeMetazq
    Generates __tablename__ automatically. Taken from flask-sqlalchemy.
    Also adds custom __table_cls__.
    z([A-Z]+)(?=[a-z0-9])c                 C   sv   | d}tdd | D }|s+| dd u r+|r+dd }| j||d|d< d|vr3t|d< t| |||S )	N__tablename__c                 s   s$    | ]\}}t |tr|jV  qd S N)
isinstancer   primary_key).0kv r   ^/var/www/Datamplify/venv/lib/python3.10/site-packages/clickhouse_sqlalchemy/ext/declarative.py	<genexpr>   s    
z4ClickHouseDeclarativeMeta.__new__.<locals>.<genexpr>	__table__c                 S   s<   |   }t|dkrd|d d |d f  S d|  S )N   z_%s_%s_)grouplenlower)matchwordr   r   r   _join   s   z0ClickHouseDeclarativeMeta.__new__.<locals>._joinr   __table_cls__)	getanyitems_camelcase_resublstripr   r   __new__)clsnamebasesd	tablenamehas_pksr   r   r   r   r#      s   
	z!ClickHouseDeclarativeMeta.__new__N)__name__
__module____qualname____doc__recompiler    r#   r   r   r   r   r   
   s    
r   c                 C   s   t | tdS )N)metadata	metaclass)r   r   )r0   r   r   r   get_declarative_base+   s   r2   r	   )r.   
sqlalchemyr   sqlalchemy.ext.declarativer   sqlalchemy.ormr   
sql.schemar   r   r2   r   r   r   r   <module>   s    !