o
    篪g                     @  sr   d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ er0d dlZd dlm	Z	 d dl
mZ G d	d
 d
ZdS )    )annotations)TYPE_CHECKING)NoReturn)ConstantExpressionFunctionExpressionN)Self)
DuckDBExprc                   @  s   e Zd Zd/ddZd0ddZd1ddZd2ddZd3ddZd4ddZd4ddZ	d4ddZ
d5d"d#Zd6d%d&Zd7d)d*Zd8d,d-Zd.S )9DuckDBExprStringNamespaceselfr   exprr	   returnNonec                 C  s
   || _ d S )N)_compliant_expr)r   r    r   U/var/www/html/chatdoc2/venv/lib/python3.10/site-packages/narwhals/_duckdb/expr_str.py__init__   s   
z"DuckDBExprStringNamespace.__init__prefixstrc                      | j j fddd| j jdS )Nc                      t d| t S )Nstarts_withr   r   _inputr   r   r   <lambda>       
z7DuckDBExprStringNamespace.starts_with.<locals>.<lambda>r   	expr_kindr   
_from_call
_expr_kind)r   r   r   r   r   r      
   
z%DuckDBExprStringNamespace.starts_withsuffixc                   r   )Nc                   r   )N	ends_withr   r   r$   r   r   r      r   z5DuckDBExprStringNamespace.ends_with.<locals>.<lambda>r%   r   r    )r   r$   r   r&   r   r%      r#   z#DuckDBExprStringNamespace.ends_withpatternliteralboolc                  &   d fdd}| j j|d| j jdS )	Nr   duckdb.Expressionr   c                   s$    r
t d| tS t d| tS )Ncontainsregexp_matchesr   r   r(   r'   r   r   func'   s
   
z0DuckDBExprStringNamespace.contains.<locals>.funcr,   r   r   r+   r   r+   r    )r   r'   r(   r/   r   r.   r   r,   &   s   
z"DuckDBExprStringNamespace.containsoffsetintlengthc                   r*   )	Nr   r+   r   c                   sL   t d| dkrtd nt d|  d  d u rt d| S t  S )Narray_slicer      r3   r   r   r3   r1   r   r   r/   3   s   
z-DuckDBExprStringNamespace.slice.<locals>.funcslicer   r0   r    )r   r1   r3   r/   r   r6   r   r7   2   s   
zDuckDBExprStringNamespace.slicec                 C     | j jdd d| j jdS )Nc                 S  
   t d| S )Nr3   r   r   r   r   r   r   E      
 z5DuckDBExprStringNamespace.len_chars.<locals>.<lambda>	len_charsr   r    r   r   r   r   r;   C   
   z#DuckDBExprStringNamespace.len_charsc                 C  r8   )Nc                 S  r9   )Nlowerr   r   r   r   r   r   L   r:   z8DuckDBExprStringNamespace.to_lowercase.<locals>.<lambda>to_lowercaser   r    r<   r   r   r   r?   J   r=   z&DuckDBExprStringNamespace.to_lowercasec                 C  r8   )Nc                 S  r9   )Nupperr   r   r   r   r   r   S   r:   z8DuckDBExprStringNamespace.to_uppercase.<locals>.<lambda>to_uppercaser   r    r<   r   r   r   rA   Q   r=   z&DuckDBExprStringNamespace.to_uppercase
characters
str | Nonec                   s(   dd l | jj fddd| jjdS )Nr   c                   s"   t d| t d u rjS  S )Ntrim)r   r   
whitespacer   rB   stringr   r   r   \   s    z7DuckDBExprStringNamespace.strip_chars.<locals>.<lambda>strip_charsr   )rG   r   r!   r"   )r   rB   r   rF   r   rH   X   s   z%DuckDBExprStringNamespace.strip_charsvaluec                  sD   |s| j j fddd| j jdS | j j fddd| j jdS )Nc                   s   t d| t ttdS )Nregexp_replacegr   r   r'   rI   r   r   r   j   s    z7DuckDBExprStringNamespace.replace_all.<locals>.<lambda>replace_allr   c                   s   t d| t tS )Nreplacer   r   rL   r   r   r   u   s    r    )r   r'   rI   r(   r   rL   r   rM   g   s   z%DuckDBExprStringNamespace.replace_allnr   c                C  s   d}t |)Nz/`replace` is currently not supported for DuckDB)NotImplementedError)r   r'   rI   r(   rO   msgr   r   r   rN   |   s   z!DuckDBExprStringNamespace.replaceformatc                   s2    d u r
d}t || jj fddd| jjdS )Nz'Cannot infer format with DuckDB backendc                   r   )Nstrptimer   r   rR   r   r   r      r   z7DuckDBExprStringNamespace.to_datetime.<locals>.<lambda>to_datetimer   )rP   r   r!   r"   )r   rR   rQ   r   rT   r   rU      s   
z%DuckDBExprStringNamespace.to_datetimeN)r   r   r   r	   r   r   )r   r   r   r   r   r	   )r   r   r$   r   r   r	   )r   r   r'   r   r(   r)   r   r	   )r   r   r1   r2   r3   r2   r   r	   )r   r   r   r	   )r   r   rB   rC   r   r	   )
r   r   r'   r   rI   r   r(   r)   r   r	   )r   r   r'   r   rI   r   r(   r)   rO   r2   r   r   )r   r   rR   rC   r   r	   )__name__
__module____qualname__r   r   r%   r,   r7   r;   r?   rA   rH   rM   rN   rU   r   r   r   r   r
      s    


	
	






r
   )
__future__r   typingr   r   duckdbr   r   typing_extensionsr   narwhals._duckdb.exprr	   r
   r   r   r   r   <module>   s    