o
    SDiH                     @   s<   d dl mZ d dlmZmZ ddlmZ G dd deZdS )    )Any)MetaData
SchemaItem   )TableFromQueryBasec                
       sb   e Zd ZdZdededededdf
 fdd	Zdededededdf
d
dZ	defddZ
  ZS )SnowflakeTablea"  
    A class representing a table in Snowflake with configurable options and settings.

    While it does not support reflection at this time, it provides a flexible
    interface for creating tables and management.

    For further information on this clause, please refer to: https://docs.snowflake.com/en/sql-reference/sql/create-table
    Example usage:

    SnowflakeTable(
        table_name,
        metadata,
        Column("id", Integer, primary_key=True),
        Column("name", String),
        cluster_by = ["id", text("name > 5")]
    )

    Example using explict options:

        SnowflakeTable(
        table_name,
        metadata,
        Column("id", Integer, primary_key=True),
        Column("name", String),
        cluster_by = ClusterByOption("id", text("name > 5"))
    )

    namemetadataargskwreturnNc                    s0   | ddrd S t j||g|R i | d S )N_no_initT)getsuper__init__selfr   r	   r
   r   	__class__ o/var/www/Datamplify/venv/lib/python3.10/site-packages/snowflake/sqlalchemy/sql/custom_schema/snowflake_table.pyr   *   s    zSnowflakeTable.__init__c                 O   s"   | j ||g|R ddi| d S )Nr   F)r   r   r   r   r   _init5   s   "zSnowflakeTable._initc                    s\   dd t jgt jg dd  jD  t jg t jg  fdddD   S )NzSnowflakeTable(%s)z, c                 S   s   g | ]}t |qS r   )repr).0xr   r   r   
<listcomp>B   s    z+SnowflakeTable.__repr__.<locals>.<listcomp>c                    s$   g | ]}| d t t | qS )=)r   getattr)r   kr   r   r   r   E   s   $ )schema)joinr   r   r	   columns
cluster_byas_queryr   r   r   r   __repr__>   s   



zSnowflakeTable.__repr__)__name__
__module____qualname____doc__strr   r   r   r   r   r%   __classcell__r   r   r   r   r      s2    
	r   N)typingr   sqlalchemy.sql.schemar   r   table_from_queryr   r   r   r   r   r   <module>   s   