σ
    Lpj9  γ                  σ    S SK Jr  S SKJrJrJr  S SKJrJr  \(       a  S SK	J
r
  S SKJr  \" SSS9r " S	 S
\\   5      rg)ι    )Ϊannotations)ΪTYPE_CHECKINGΪGenericΪTypeVar)ΪExprKindΪExprNode)ΪExpr)ΪNonNestedLiteralΪExprTr	   )Ϊboundc                  σ    \ rS rSrSS jrSS jrSS.SS jjrSS jrSS jrSS	 jr	SS
 jr
SS jrSS jrSS jrSSS.SS jjrSrg)ΪExprListNamespaceι   c                σ    Xl         g )N©Ϊ_expr)ΪselfΪexprs     ΪN/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/narwhals/expr_list.pyΪ__init__ΪExprListNamespace.__init__   s    Ψ
σ    c                σh    U R                   R                  [        [        R                  S5      5      $ )u1  Return the number of elements in each list.

Null values count towards the total.

Examples:
    >>> import polars as pl
    >>> import narwhals as nw
    >>> df_native = pl.DataFrame({"a": [[1, 2], [3, 4, None], None, []]})
    >>> df = nw.from_native(df_native)
    >>> df.with_columns(a_len=nw.col("a").list.len())
    ββββββββββββββββββββββββββ
    |   Narwhals DataFrame   |
    |------------------------|
    |shape: (4, 2)           |
    |ββββββββββββββββ¬ββββββββ|
    |β a            β a_len β|
    |β ---          β ---   β|
    |β list[i64]    β u32   β|
    |ββββββββββββββββͺββββββββ‘|
    |β [1, 2]       β 2     β|
    |β [3, 4, null] β 3     β|
    |β null         β null  β|
    |β []           β 0     β|
    |ββββββββββββββββ΄ββββββββ|
    ββββββββββββββββββββββββββ
zlist.len©r   Ϊ_append_noder   r   ΪELEMENTWISE©r   s    r   ΪlenΪExprListNamespace.len   s&    π6 zzΧ&Ρ&€x΄Χ0DΡ0DΐjΣ'QΣRΠRr   F©Ϊmaintain_orderc               σf    U R                   R                  [        [        R                  SUS95      $ )uΈ  Get the unique/distinct values in the list.

Null values are included in the result.

Arguments:
    maintain_order: Keep the same order as the input data.

Notes:
    `maintain_order=True` is not supported by all backends: backends whose
    native distinct operation does not preserve order (e.g. DuckDB, Ibis)
    raise `NotImplementedError`.

Examples:
    >>> import polars as pl
    >>> import narwhals as nw
    >>> df_native = pl.DataFrame({"a": [[1, 1, 2], [3, 3, None], None, []]})
    >>> df = nw.from_native(df_native)
    >>> df.with_columns(a_unique=nw.col("a").list.unique())  # doctest: +SKIP
    ββββββββββββββββββββββββββββββ
    |     Narwhals DataFrame     |
    |----------------------------|
    |shape: (4, 2)               |
    |ββββββββββββββββ¬ββββββββββββ|
    |β a            β a_unique  β|
    |β ---          β ---       β|
    |β list[i64]    β list[i64] β|
    |ββββββββββββββββͺββββββββββββ‘|
    |β [1, 1, 2]    β [1, 2]    β|
    |β [3, 3, null] β [null, 3] β|
    |β null         β null      β|
    |β []           β []        β|
    |ββββββββββββββββ΄ββββββββββββ|
    ββββββββββββββββββββββββββββββ
zlist.uniquer    r   )r   r!   s     r   ΪuniqueΪExprListNamespace.unique/   s.    πF zzΧ&Ρ&άXΧ)Ρ)¨=ΘΡXσ
π 	
r   c                σf    U R                   R                  [        [        R                  SUS95      $ )u  Check if sublists contain the given item.

Arguments:
    item: Item that will be checked for membership.

Examples:
    >>> import polars as pl
    >>> import narwhals as nw
    >>> df_native = pl.DataFrame({"a": [[1, 2], None, []]})
    >>> df = nw.from_native(df_native)
    >>> df.with_columns(a_contains_1=nw.col("a").list.contains(1))
    ββββββββββββββββββββββββββββββ
    |     Narwhals DataFrame     |
    |----------------------------|
    |shape: (3, 2)               |
    |βββββββββββββ¬βββββββββββββββ|
    |β a         β a_contains_1 β|
    |β ---       β ---          β|
    |β list[i64] β bool         β|
    |βββββββββββββͺβββββββββββββββ‘|
    |β [1, 2]    β true         β|
    |β null      β null         β|
    |β []        β false        β|
    |βββββββββββββ΄βββββββββββββββ|
    ββββββββββββββββββββββββββββββ
zlist.contains)Ϊitemr   )r   r&   s     r   ΪcontainsΪExprListNamespace.containsV   s-    π6 zzΧ&Ρ&άXΧ)Ρ)¨?ΐΡFσ
π 	
r   c                σ   [        U[        5      (       d$  S[        U5      R                   S3n[	        U5      eUS:  a  SU S3n[        U5      eU R                  R                  [        [        R                  SUS95      $ )u:  Return the value by index in each list.

Negative indices are not accepted.

Examples:
    >>> import polars as pl
    >>> import narwhals as nw
    >>> df_native = pl.DataFrame({"a": [[1, 2], [3, 4, None], [None, 5]]})
    >>> df = nw.from_native(df_native)
    >>> df.with_columns(a_first=nw.col("a").list.get(0))
    ββββββββββββββββββββββββββββ
    |    Narwhals DataFrame    |
    |--------------------------|
    |shape: (3, 2)             |
    |ββββββββββββββββ¬ββββββββββ|
    |β a            β a_first β|
    |β ---          β ---     β|
    |β list[i64]    β i64     β|
    |ββββββββββββββββͺββββββββββ‘|
    |β [1, 2]       β 1       β|
    |β [3, 4, null] β 3       β|
    |β [null, 5]    β null    β|
    |ββββββββββββββββ΄ββββββββββ|
    ββββββββββββββββββββββββββββ
z'Index must be of type 'int'. Got type 'z
' instead.r   zIndex z8 is out of bounds: should be greater than or equal to 0.zlist.get)Ϊindex)Ϊ
isinstanceΪintΪtypeΪ__name__Ϊ	TypeErrorΪ
ValueErrorr   r   r   r   r   )r   r*   Ϊmsgs      r   ΪgetΪExprListNamespace.getu   s    τ4 %€Χ%Ρ%ΰ9Ό$Έu»+Χ:NΡ:NΠ9OΘzΠZπ τ C.Π ΰ19Ψ5'Π!YΠZCάS/Π!ΰzzΧ&Ρ&άXΧ)Ρ)¨:ΈUΡCσ
π 	
r   c                σh    U R                   R                  [        [        R                  S5      5      $ )u  Compute the min value of the lists in the array.

Examples:
    >>> import duckdb
    >>> import narwhals as nw
    >>> df_native = duckdb.sql("SELECT * FROM VALUES ([1]), ([3, 4, NULL]) df(a)")
    >>> df = nw.from_native(df_native)
    >>> df.with_columns(a_min=nw.col("a").list.min())
    ββββββββββββββββββββββββββ
    |   Narwhals LazyFrame   |
    |------------------------|
    |ββββββββββββββββ¬ββββββββ|
    |β      a       β a_min β|
    |β   int32[]    β int32 β|
    |ββββββββββββββββΌββββββββ€|
    |β [1]          β     1 β|
    |β [3, 4, NULL] β     3 β|
    |ββββββββββββββββ΄ββββββββ|
    ββββββββββββββββββββββββββ
zlist.minr   r   s    r   ΪminΪExprListNamespace.min   s&    π* zzΧ&Ρ&€x΄Χ0DΡ0DΐjΣ'QΣRΠRr   c                σh    U R                   R                  [        [        R                  S5      5      $ )uΉ  Compute the max value of the lists in the array.

Examples:
    >>> import polars as pl
    >>> import narwhals as nw
    >>> df_native = pl.DataFrame({"a": [[1], [3, 4, None]]})
    >>> df = nw.from_native(df_native)
    >>> df.with_columns(a_max=nw.col("a").list.max())
    ββββββββββββββββββββββββββ
    |   Narwhals DataFrame   |
    |------------------------|
    |shape: (2, 2)           |
    |ββββββββββββββββ¬ββββββββ|
    |β a            β a_max β|
    |β ---          β ---   β|
    |β list[i64]    β i64   β|
    |ββββββββββββββββͺββββββββ‘|
    |β [1]          β 1     β|
    |β [3, 4, null] β 4     β|
    |ββββββββββββββββ΄ββββββββ|
    ββββββββββββββββββββββββββ
zlist.maxr   r   s    r   ΪmaxΪExprListNamespace.max΄   σ&    π. zzΧ&Ρ&€x΄Χ0DΡ0DΐjΣ'QΣRΠRr   c                σh    U R                   R                  [        [        R                  S5      5      $ )u―  Compute the mean value of the lists in the array.

Examples:
    >>> import pyarrow as pa
    >>> import narwhals as nw
    >>> df_native = pa.table({"a": [[1], [3, 4, None]]})
    >>> df = nw.from_native(df_native)
    >>> df.with_columns(a_mean=nw.col("a").list.mean())
    ββββββββββββββββββββββββ
    |  Narwhals DataFrame  |
    |----------------------|
    |pyarrow.Table         |
    |a: list<item: int64>  |
    |  child 0, item: int64|
    |a_mean: double        |
    |----                  |
    |a: [[[1],[3,4,null]]] |
    |a_mean: [[1,3.5]]     |
    ββββββββββββββββββββββββ
z	list.meanr   r   s    r   ΪmeanΪExprListNamespace.meanΝ   s&    π* zzΧ&Ρ&€x΄Χ0DΡ0DΐkΣ'RΣSΠSr   c                σh    U R                   R                  [        [        R                  S5      5      $ )uΝ  Compute the median value of the lists in the array.

Examples:
    >>> import duckdb
    >>> import narwhals as nw
    >>> df_native = duckdb.sql("SELECT * FROM VALUES ([1]), ([3, 4, NULL]) df(a)")
    >>> df = nw.from_native(df_native)
    >>> df.with_columns(a_median=nw.col("a").list.median())
    βββββββββββββββββββββββββββββ
    |    Narwhals LazyFrame     |
    |---------------------------|
    |ββββββββββββββββ¬βββββββββββ|
    |β      a       β a_median β|
    |β   int32[]    β  double  β|
    |ββββββββββββββββΌβββββββββββ€|
    |β [1]          β      1.0 β|
    |β [3, 4, NULL] β      3.5 β|
    |ββββββββββββββββ΄βββββββββββ|
    βββββββββββββββββββββββββββββ
zlist.medianr   r   s    r   ΪmedianΪExprListNamespace.medianδ   s&    π* zzΧ&Ρ&€x΄Χ0DΡ0DΐmΣ'TΣUΠUr   c                σh    U R                   R                  [        [        R                  S5      5      $ )uΉ  Compute the sum value of the lists in the array.

Examples:
    >>> import polars as pl
    >>> import narwhals as nw
    >>> df_native = pl.DataFrame({"a": [[1], [3, 4, None]]})
    >>> df = nw.from_native(df_native)
    >>> df.with_columns(a_sum=nw.col("a").list.sum())
    ββββββββββββββββββββββββββ
    |   Narwhals DataFrame   |
    |------------------------|
    |shape: (2, 2)           |
    |ββββββββββββββββ¬ββββββββ|
    |β a            β a_sum β|
    |β ---          β ---   β|
    |β list[i64]    β i64   β|
    |ββββββββββββββββͺββββββββ‘|
    |β [1]          β 1     β|
    |β [3, 4, null] β 7     β|
    |ββββββββββββββββ΄ββββββββ|
    ββββββββββββββββββββββββββ
zlist.sumr   r   s    r   ΪsumΪExprListNamespace.sumϋ   r:   r   ©Ϊ
descendingΪ
nulls_lastc          	     σh    U R                   R                  [        [        R                  SUUS95      $ )u³  Sort the lists of the expression.

Arguments:
    descending: Sort in descending order.
    nulls_last: Place null values last.

Examples:
    >>> import duckdb
    >>> import narwhals as nw
    >>> df_native = duckdb.sql(
    ...     "SELECT * FROM VALUES ([2, -1, 1]), ([3, -4, NULL]) df(a)"
    ... )
    >>> df = nw.from_native(df_native)
    >>> df.with_columns(a_sorted=nw.col("a").list.sort())
    βββββββββββββββββββββββββββββββββββ
    |       Narwhals LazyFrame        |
    |---------------------------------|
    |βββββββββββββββββ¬ββββββββββββββββ|
    |β       a       β   a_sorted    β|
    |β    int32[]    β    int32[]    β|
    |βββββββββββββββββΌββββββββββββββββ€|
    |β [2, -1, 1]    β [-1, 1, 2]    β|
    |β [3, -4, NULL] β [NULL, -4, 3] β|
    |βββββββββββββββββ΄ββββββββββββββββ|
    βββββββββββββββββββββββββββββββββββ
z	list.sortrD   r   )r   rE   rF   s      r   ΪsortΪExprListNamespace.sort  s5    π6 zzΧ&Ρ&άάΧ$Ρ$ΨΨ%Ψ%ρ	σ
π 	
r   r   N)r   r   ΪreturnΪNone)rJ   r   )r!   ΪboolrJ   r   )r&   r
   rJ   r   )r*   r,   rJ   r   )rE   rL   rF   rL   rJ   r   )r.   Ϊ
__module__Ϊ__qualname__Ϊ__firstlineno__r   r   r#   r'   r2   r5   r8   r<   r?   rB   rH   Ϊ__static_attributes__© r   r   r   r      sR    ττSπ: 05χ %
τN
τ>&
τPSτ.Sτ2Tτ.Vτ.Sπ2 */ΐ5χ "
ς "
r   r   N)Ϊ
__future__r   Ϊtypingr   r   r   Ϊnarwhals._expression_parsingr   r   Ϊnarwhals.exprr	   Ϊnarwhals.typingr
   r   r   rQ   r   r   Ϊ<module>rW      s8   πέ "η 2Ρ 2η ;ζέ"έ0αvΡ&τh
 υ h
r   