o
    Ýñhý  ã                   @  sf   d dl mZ d dlmZ d dlmZ d dlmZ er*d dlZd dlm	Z	 d dl
mZ G dd	„ d	ƒZdS )
é    )Úannotations)ÚTYPE_CHECKING©ÚFunctionExpression)ÚlitN)ÚNever)Ú
DuckDBExprc                   @  sŽ   e Zd Zd0dd„Zd1d	d
„Zd2dd„Zd3dd„Zd4dd„Zd5dd„Zd6dd„Z	d6dd„Z
d6dd „Zd7d#d$„Zd8d&d'„Zd9d*d+„Zd:d-d.„Zd/S );ÚDuckDBExprStringNamespaceÚexprr   ÚreturnÚNonec                 C  s
   || _ d S )N)Ú_compliant_expr)Úselfr
   © r   úM/var/www/vscode/kcb/lib/python3.10/site-packages/narwhals/_duckdb/expr_str.pyÚ__init__   s   
z"DuckDBExprStringNamespace.__init__ÚprefixÚstrc                   ó   | j  ‡ fdd„¡S )Nc                   ó   t d| tˆ ƒƒS )NÚstarts_with©r   r   ©Ú_input©r   r   r   Ú<lambda>   ó    z7DuckDBExprStringNamespace.starts_with.<locals>.<lambda>©r   Ú_with_callable)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   z#DuckDBExprStringNamespace.ends_withÚpatternÚliteralÚboolc                  ó   d‡ ‡fdd„}| j  |¡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>.func©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                   sX   t ˆƒ}td| ˆdkrt ˆd ƒn
td| ƒ| t dƒ ˆ d u r%td| ƒƒS t ˆ ƒ| ƒS )NÚarray_slicer   é   r/   )r   r   )r   Ú
offset_lit©r/   r-   r   r   r+   '   s   ÿÿú
øz-DuckDBExprStringNamespace.slice.<locals>.funcr,   r   )r   r-   r/   r+   r   r3   r   Úslice&   s   zDuckDBExprStringNamespace.sliceÚbyc                   r   )Nc                   r   )NÚ	str_splitr   r   ©r5   r   r   r   8   r   z1DuckDBExprStringNamespace.split.<locals>.<lambda>r   )r   r5   r   r7   r   Úsplit6   r   zDuckDBExprStringNamespace.splitc                 C  ó   | j  dd„ ¡S )Nc                 S  ó
   t d| ƒS )Nr/   r   r   r   r   r   r   =   ó   
 z5DuckDBExprStringNamespace.len_chars.<locals>.<lambda>r   ©r   r   r   r   Ú	len_chars;   ó   ÿz#DuckDBExprStringNamespace.len_charsc                 C  r9   )Nc                 S  r:   )NÚlowerr   r   r   r   r   r   B   r;   z8DuckDBExprStringNamespace.to_lowercase.<locals>.<lambda>r   r<   r   r   r   Úto_lowercase@   r>   z&DuckDBExprStringNamespace.to_lowercasec                 C  r9   )Nc                 S  r:   )NÚupperr   r   r   r   r   r   G   r;   z8DuckDBExprStringNamespace.to_uppercase.<locals>.<lambda>r   r<   r   r   r   Úto_uppercaseE   r>   z&DuckDBExprStringNamespace.to_uppercaseÚ
charactersú
str | Nonec                   s   dd l ‰| j ‡ ‡fdd„¡S )Nr   c                   s"   t d| tˆ d u rˆjƒƒS ˆ ƒƒS )NÚtrim)r   r   Ú
whitespacer   ©rC   Ústringr   r   r   N   s    ýýz7DuckDBExprStringNamespace.strip_chars.<locals>.<lambda>)rH   r   r   )r   rC   r   rG   r   Ústrip_charsJ   s   ÿz%DuckDBExprStringNamespace.strip_charsÚvaluec                  s0   |s| j  ‡ ‡fdd„¡S | j  ‡ ‡fdd„¡S )Nc                   s   t d| tˆ ƒtˆƒtdƒƒS )NÚregexp_replaceÚgr   r   ©r#   rJ   r   r   r   X   s    ÿz7DuckDBExprStringNamespace.replace_all.<locals>.<lambda>c                   s   t d| tˆ ƒtˆƒƒS )NÚreplacer   r   rM   r   r   r   ]   s    r   )r   r#   rJ   r$   r   rM   r   Úreplace_allU   s   ÿÿz%DuckDBExprStringNamespace.replace_allÚnr   c                C  s   d}t |ƒ‚)Nz/`replace` is currently not supported for DuckDB)ÚNotImplementedError)r   r#   rJ   r$   rP   Úmsgr   r   r   rN   `   s   z!DuckDBExprStringNamespace.replaceÚformatc                   s(   ˆ d u r
d}t |ƒ‚| j ‡ fdd„¡S )NzLCannot infer format with DuckDB backend, please specify `format` explicitly.c                   r   )NÚstrptimer   r   ©rS   r   r   r   j   r   z7DuckDBExprStringNamespace.to_datetime.<locals>.<lambda>)rQ   r   r   )r   rS   rR   r   rU   r   Úto_datetimed   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   )r5   r   r   r   )r   r   )rC   rD   r   r   )r#   r   rJ   r   r$   r%   r   r   )
r#   r   rJ   r   r$   r%   rP   r.   r   r   )rS   rD   r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   r!   r(   r4   r8   r=   r@   rB   rI   rO   rN   rV   r   r   r   r   r	      s    











r	   )Ú
__future__r   Útypingr   Úduckdbr   Únarwhals._duckdb.utilsr   Útyping_extensionsr   Únarwhals._duckdb.exprr   r	   r   r   r   r   Ú<module>   s    