
    }i                    N   d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZ erd dlmZ d dlmZ 	 d d	lZn# e$ rZd
Z ee          ed	Z[ww xY w ej                    Z ee                    d                    Z G d de	ej                           ZddZdgZd	S )    )annotations)TYPE_CHECKINGLiteral)DeferredTimeZonenarwhals_to_native_dtype)	LazyFrame)from_native)Version)CompliantLazyFrameAny)
IntoSchemaNzY`narwhals.sql` requires DuckDB to be installed.

Hint: run `pip install -U narwhals[sql]`z;select value from duckdb_settings() where name = 'TimeZone'c                  2     e Zd ZdZd fdZd	d
ddZ xZS )SQLTablez/A LazyFrame with an additional `to_sql` method.dfr   level&Literal['full', 'interchange', 'lazy']returnNonec                N    t                                          ||           d S )Nr   )super__init__)selfr   r   	__class__s      @/home/jrussi/.local/lib/python3.11/site-packages/narwhals/sql.pyr   zSQLTable.__init__    s(     	5)))))    F)prettyr   boolstrc                   |                                                                  }|s|S 	 ddl}n$# t          $ r}d}t	          |          |d}~ww xY w|                    |dd          S )a4  Convert to SQL query.

        Arguments:
            pretty: Whether to pretty-print SQL query. If `True`, requires `sqlparse`
                to be installed.

        Examples:
            >>> import narwhals as nw
            >>> from narwhals.sql import table
            >>> schema = {"date": nw.Date, "price": nw.Int64, "symbol": nw.String}
            >>> assets = table("assets", schema)
            >>> result = assets.filter(nw.col("price") > 100)
            >>> print(result.to_sql())
            SELECT * FROM main.assets WHERE (price > 100)
        r   Nzr`SQLTable.to_sql` with `pretty=True`requires `sqlparse` to be installed.

Hint: run `pip install -U narwhals[sql]`Tupper)reindentkeyword_case)	to_native	sql_querysqlparseImportErrorModuleNotFoundErrorformat)r   r   r$   r%   _excmsgs         r   to_sqlzSQLTable.to_sql%   s      NN$$..00	 		5OOOO 	5 	5 	5; 
 &c**4	5 y4gNNNs   1 
AAA)r   r   r   r   r   r   )r   r   r   r   )__name__
__module____qualname____doc__r   r+   __classcell__)r   s   @r   r   r      sp        99* * * * * *
 (- O O O O O O O O O Or   r   namer   schemar   r   c                f   d |                                 D             }d                    d |                                 D                       }t                              d|  d| d           t	          t                              |                     }t          |j        |j                  S )u  Generate standalone LazyFrame which you can use to generate SQL.

    Note that this requires DuckDB to be installed.

    Parameters:
        name: Table name.
        schema: Table schema.

    Examples:
        >>> import narwhals as nw
        >>> from narwhals.sql import table
        >>> schema = {"date": nw.Date, "price": nw.List(nw.Int64), "symbol": nw.String}
        >>> table("t", schema)
        ┌────────────────────────────┐
        |     Narwhals LazyFrame     |
        |----------------------------|
        |┌──────┬─────────┬─────────┐|
        |│ date │  price  │ symbol  │|
        |│ date │ int64[] │ varchar │|
        |└──────┴─────────┴─────────┘|
        |           0 rows           |
        └────────────────────────────┘
    c                V    i | ]&\  }}|t          |t          j        t                    'S  )r   r
   MAINTZ.0coldtypes      r   
<dictcomp>ztable.<locals>.<dictcomp>\   s=       C 	%eW\2>>  r   z, c              3  ,   K   | ]\  }}d | d| V  dS )"z" Nr5   r8   s      r   	<genexpr>ztable.<locals>.<genexpr>`   s7      SSjc5)3))%))SSSSSSr   z
        CREATE TABLE "z"
        (z);
        r   )	itemsjoinCONNsqlr	   tabler   _compliant_frame_level)r1   r2   column_mappingdtypeslfs        r   rD   rD   D   s    0  ,,..  N YYSSN<P<P<R<RSSSSSFHH  
      
TZZ%%	&	&BB'ry9999r   rD   )r1   r   r2   r   r   r   )
__future__r   typingr   r   narwhals._duckdb.utilsr   r   narwhals.dataframer   narwhals.translater	   narwhals.utilsr
   narwhals._compliant.typingr   narwhals.typingr   duckdbr&   r)   r*   r'   connectrB   rC   r7   DuckDBPyRelationr   rD   __all__r5   r   r   <module>rV      s   " " " " " " ) ) ) ) ) ) ) ) M M M M M M M M ( ( ( ( ( ( * * * * * * " " " " " " +@@@@@@******-MMMM - - -	3  
c
"
",- v~HHJKK 
$O $O $O $O $Oy01 $O $O $ON": ": ": ":J )s   = AAA