ó
    - jã*  ã                  ó  • S SK Jr  S SKJrJrJr  S SKJrJr  S SK	J
r
  S SKJr  \(       a  S SKJr  S SKJr  S SKJr  S S	KJr   " S
 S\5      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 jr  S     SS jjr/ SQrg)é    )Úannotations)ÚTYPE_CHECKINGÚAnyÚNoReturn)ÚExprKindÚExprNode)Úflatten)ÚExpr)ÚIterable)Útimezone)ÚDType)ÚTimeUnitc                  óZ   • \ rS rS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	rg
)ÚSelectoré   c                ó&   • [        U R                  6 $ ©N)r
   Ú_nodes)Úselfs    Ú C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\narwhals/selectors.pyÚ_to_exprÚSelector._to_expr   s   € Ü�T—[‘[Ð!Ð!ó    c           	     ó¶   • [        U[        5      (       a  Sn[        U5      eU R                  5       R	                  [        [        R                  SU4SS95      $ )Nz=unsupported operand type(s) for op: ('Selector' + 'Selector')Ú__add__T©ÚexprsÚ
str_as_lit)Ú
isinstancer   Ú	TypeErrorr   Ú_append_noder   r   ÚELEMENTWISE)r   ÚotherÚmsgs      r   r   ÚSelector.__add__   sN   € Ü�eœX×&Ñ&ØQˆCÜ˜C“.Ð Ø�}‰}‹×+Ñ+Ü”X×)Ñ)¨9¸U¸HÐQUÑVó
ð 	
r   c           
     óò   • [        U[        5      (       a+  U R                  [        [        R
                  SU4SSS95      $ U R                  5       R                  [        [        R
                  SU4SS95      $ )NÚ__or__T©r   r   Úallow_multi_outputr   ©r   r   r!   r   r   r"   r   ©r   r#   s     r   r'   ÚSelector.__or__   ss   € Ü�eœX×&Ñ&Ø×$Ñ$ÜÜ×(Ñ(ØØ ˜(Ø#Ø'+ñóð ð �}‰}‹×+Ñ+Ü”X×)Ñ)¨8¸E¸8ÐPTÑUó
ð 	
r   c           
     óò   • [        U[        5      (       a+  U R                  [        [        R
                  SU4SSS95      $ U R                  5       R                  [        [        R
                  SU4SS95      $ )NÚ__and__Tr(   r   r*   r+   s     r   r.   ÚSelector.__and__,   ss   € Ü�eœX×&Ñ&Ø×$Ñ$ÜÜ×(Ñ(ØØ ˜(Ø#Ø'+ñóð ð �}‰}‹×+Ñ+Ü”X×)Ñ)¨9¸U¸HÐQUÑVó
ð 	
r   c                ó   • [         er   ©ÚNotImplementedErrorr+   s     r   Ú__rsub__ÚSelector.__rsub__;   ó   € Ü!Ð!r   c                ó   • [         er   r1   r+   s     r   Ú__rand__ÚSelector.__rand__>   r5   r   c                ó   • [         er   r1   r+   s     r   Ú__ror__ÚSelector.__ror__A   r5   r   © N)Úreturnr
   )r#   r   r=   r
   )r#   r   r=   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r'   r.   r3   r7   r:   Ú__static_attributes__r<   r   r   r   r      s%   † ô"ô
ô
ô
ô"ô"÷"r   r   c                 ó\   • [        U 5      n[        [        [        R                  SUS95      $ )a&  Select columns based on their dtype.

Arguments:
    dtypes: one or data types to select

Examples:
    >>> import pyarrow as pa
    >>> import narwhals as nw
    >>> import narwhals.selectors as ncs
    >>> df_native = pa.table({"a": [1, 2], "b": ["x", "y"], "c": [4.1, 2.3]})
    >>> df = nw.from_native(df_native)

    Let's select int64 and float64  dtypes and multiply each value by 2:

    >>> df.select(ncs.by_dtype(nw.Int64, nw.Float64) * 2).to_native()
    pyarrow.Table
    a: int64
    c: double
    ----
    a: [[2,4]]
    c: [[8.2,4.6]]
zselectors.by_dtype)Údtypes)r	   r   r   r   ÚSELECTOR)rD   Ú	flatteneds     r   Úby_dtyperG   E   s(   € ô. ˜“€IÜ”HœX×.Ñ.Ð0DÈYÑWÓXÐXr   c                óF   • [        [        [        R                  SU S95      $ )a7  Select all columns that match the given regex pattern.

Arguments:
    pattern: A valid regular expression pattern.

Examples:
    >>> import pandas as pd
    >>> import narwhals as nw
    >>> import narwhals.selectors as ncs
    >>> df_native = pd.DataFrame(
    ...     {"bar": [123, 456], "baz": [2.0, 5.5], "zap": [0, 1]}
    ... )
    >>> df = nw.from_native(df_native)

    Let's select column names containing an 'a', preceded by a character that is not 'z':

    >>> df.select(ncs.matches("[^z]a")).to_native()
       bar  baz
    0  123  2.0
    1  456  5.5
zselectors.matches©Úpattern©r   r   r   rE   rI   s    r   ÚmatchesrL   `   s   € ô, ”HœX×.Ñ.Ð0CÈWÑUÓVÐVr   c                 óH   • [        [        [        R                  S5      5      $ )u~  Select numeric columns.

Examples:
    >>> import polars as pl
    >>> import narwhals as nw
    >>> import narwhals.selectors as ncs
    >>> df_native = pl.DataFrame({"a": [1, 2], "b": ["x", "y"], "c": [4.1, 2.3]})
    >>> df = nw.from_native(df_native)

    Let's select numeric dtypes and multiply each value by 2:

    >>> df.select(ncs.numeric() * 2).to_native()
    shape: (2, 2)
    â”Œâ”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”�
    â”‚ a   â”† c   â”‚
    â”‚ --- â”† --- â”‚
    â”‚ i64 â”† f64 â”‚
    â•žâ•�â•�â•�â•�â•�â•ªâ•�â•�â•�â•�â•�â•¡
    â”‚ 2   â”† 8.2 â”‚
    â”‚ 4   â”† 4.6 â”‚
    â””â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”˜
zselectors.numericrK   r<   r   r   ÚnumericrN   y   s   € ô. ”HœX×.Ñ.Ð0CÓDÓEÐEr   c                 óH   • [        [        [        R                  S5      5      $ )u%  Select boolean columns.

Examples:
    >>> import polars as pl
    >>> import narwhals as nw
    >>> import narwhals.selectors as ncs
    >>> df_native = pl.DataFrame({"a": [1, 2], "b": ["x", "y"], "c": [False, True]})
    >>> df = nw.from_native(df_native)

    Let's select boolean dtypes:

    >>> df.select(ncs.boolean())
    â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”�
    |Narwhals DataFrame|
    |------------------|
    |  shape: (2, 1)   |
    |  â”Œâ”€â”€â”€â”€â”€â”€â”€â”�       |
    |  â”‚ c     â”‚       |
    |  â”‚ ---   â”‚       |
    |  â”‚ bool  â”‚       |
    |  â•žâ•�â•�â•�â•�â•�â•�â•�â•¡       |
    |  â”‚ false â”‚       |
    |  â”‚ true  â”‚       |
    |  â””â”€â”€â”€â”€â”€â”€â”€â”˜       |
    â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
zselectors.booleanrK   r<   r   r   ÚbooleanrP   “   s   € ô6 ”HœX×.Ñ.Ð0CÓDÓEÐEr   c                 óH   • [        [        [        R                  S5      5      $ )uÿ  Select string columns.

Examples:
    >>> import polars as pl
    >>> import narwhals as nw
    >>> import narwhals.selectors as ncs
    >>> df_native = pl.DataFrame({"a": [1, 2], "b": ["x", "y"], "c": [False, True]})
    >>> df = nw.from_native(df_native)

    Let's select string dtypes:

    >>> df.select(ncs.string()).to_native()
    shape: (2, 1)
    â”Œâ”€â”€â”€â”€â”€â”�
    â”‚ b   â”‚
    â”‚ --- â”‚
    â”‚ str â”‚
    â•žâ•�â•�â•�â•�â•�â•¡
    â”‚ x   â”‚
    â”‚ y   â”‚
    â””â”€â”€â”€â”€â”€â”˜
zselectors.stringrK   r<   r   r   ÚstringrR   ±   s   € ô. ”HœX×.Ñ.Ð0BÓCÓDÐDr   c                 óH   • [        [        [        R                  S5      5      $ )uƒ  Select categorical columns.

Examples:
    >>> import polars as pl
    >>> import narwhals as nw
    >>> import narwhals.selectors as ncs
    >>> df_native = pl.DataFrame({"a": [1, 2], "b": ["x", "y"], "c": [False, True]})

    Let's convert column "b" to categorical, and then select categorical dtypes:

    >>> df = nw.from_native(df_native).with_columns(
    ...     b=nw.col("b").cast(nw.Categorical())
    ... )
    >>> df.select(ncs.categorical()).to_native()
    shape: (2, 1)
    â”Œâ”€â”€â”€â”€â”€â”�
    â”‚ b   â”‚
    â”‚ --- â”‚
    â”‚ cat â”‚
    â•žâ•�â•�â•�â•�â•�â•¡
    â”‚ x   â”‚
    â”‚ y   â”‚
    â””â”€â”€â”€â”€â”€â”˜
zselectors.categoricalrK   r<   r   r   ÚcategoricalrT   Ë   s   € ô2 ”HœX×.Ñ.Ð0GÓHÓIÐIr   c                 óH   • [        [        [        R                  S5      5      $ )uC  Select enum columns.

Examples:
    >>> import polars as pl
    >>> import narwhals as nw
    >>> import narwhals.selectors as ncs
    >>> df_native = pl.DataFrame(
    ...     {"a": [1, 2], "b": ["x", "y"]},
    ...     schema_overrides={"b": pl.Enum(["x", "y"])},
    ... )
    >>> df = nw.from_native(df_native)

    Let's select enum dtypes:

    >>> df.select(ncs.enum()).to_native()
    shape: (2, 1)
    â”Œâ”€â”€â”€â”€â”€â”€â”�
    â”‚ b    â”‚
    â”‚ ---  â”‚
    â”‚ enum â”‚
    â•žâ•�â•�â•�â•�â•�â•�â•¡
    â”‚ x    â”‚
    â”‚ y    â”‚
    â””â”€â”€â”€â”€â”€â”€â”˜
zselectors.enumrK   r<   r   r   ÚenumrV   ç   s   € ô4 ”HœX×.Ñ.Ð0@ÓAÓBÐBr   c                 óH   • [        [        [        R                  S5      5      $ )a  Select all columns.

Examples:
    >>> import pandas as pd
    >>> import narwhals as nw
    >>> import narwhals.selectors as ncs
    >>> df_native = pd.DataFrame({"a": [1, 2], "b": ["x", "y"], "c": [False, True]})
    >>> df = nw.from_native(df_native)

    Let's select all dtypes:

    >>> df.select(ncs.all()).to_native()
       a  b      c
    0  1  x  False
    1  2  y   True
zselectors.allrK   r<   r   r   ÚallrX     s   € ô" ”HœX×.Ñ.°Ó@ÓAÐAr   Nc           	     óH   • [        [        [        R                  SU US95      $ )aA  Select all datetime columns, optionally filtering by time unit/zone.

Arguments:
    time_unit: One (or more) of the allowed timeunit precision strings, "ms", "us",
        "ns" and "s". Omit to select columns with any valid timeunit.
    time_zone: Specify which timezone(s) to select

        * One or more timezone strings, as defined in zoneinfo (to see valid options
            run `import zoneinfo; zoneinfo.available_timezones()` for a full list).
        * Set `None` to select Datetime columns that do not have a timezone.
        * Set `"*"` to select Datetime columns that have *any* timezone.

Examples:
    >>> from datetime import datetime, timezone
    >>> import pyarrow as pa
    >>> import narwhals as nw
    >>> import narwhals.selectors as ncs
    >>>
    >>> utc_tz = timezone.utc
    >>> data = {
    ...     "tstamp_utc": [
    ...         datetime(2023, 4, 10, 12, 14, 16, 999000, tzinfo=utc_tz),
    ...         datetime(2025, 8, 25, 14, 18, 22, 666000, tzinfo=utc_tz),
    ...     ],
    ...     "tstamp": [
    ...         datetime(2000, 11, 20, 18, 12, 16, 600000),
    ...         datetime(2020, 10, 30, 10, 20, 25, 123000),
    ...     ],
    ...     "numeric": [3.14, 6.28],
    ... }
    >>> df_native = pa.table(data)
    >>> df_nw = nw.from_native(df_native)
    >>> df_nw.select(ncs.datetime()).to_native()
    pyarrow.Table
    tstamp_utc: timestamp[us, tz=UTC]
    tstamp: timestamp[us]
    ----
    tstamp_utc: [[2023-04-10 12:14:16.999000Z,2025-08-25 14:18:22.666000Z]]
    tstamp: [[2000-11-20 18:12:16.600000,2020-10-30 10:20:25.123000]]

    Select only datetime columns that have any time_zone specification:

    >>> df_nw.select(ncs.datetime(time_zone="*")).to_native()
    pyarrow.Table
    tstamp_utc: timestamp[us, tz=UTC]
    ----
    tstamp_utc: [[2023-04-10 12:14:16.999000Z,2025-08-25 14:18:22.666000Z]]
zselectors.datetime©Ú	time_unitÚ	time_zonerK   rZ   s     r   Údatetimer]     s,   € ôh ÜÜ×ÑØ ØØñ		
óð r   )	rX   rP   rG   rT   r]   rV   rL   rN   rR   )rD   z3DType | type[DType] | Iterable[DType | type[DType]]r=   r   )rJ   Ústrr=   r   )r=   r   )N)Ú*N)r[   z$TimeUnit | Iterable[TimeUnit] | Noner\   z7str | timezone | Iterable[str | timezone | None] | Noner=   r   )Ú
__future__r   Útypingr   r   r   Únarwhals._expression_parsingr   r   Únarwhals._utilsr	   Únarwhals.exprr
   Úcollections.abcr   r]   r   Únarwhals.dtypesr   Únarwhals.typingr   r   rG   rL   rN   rP   rR   rT   rV   rX   Ú__all__r<   r   r   Ú<module>ri      s’   ðÝ "ç /Ñ /ç ;Ý #Ý æÝ(Ý!å%Ý(ô1"ˆtô 1"ôhYô6Wô2Fô4Fô<Eô4Jô8Cô:Bð* 7;ØITð;Ø3ð;àFð;ð õ;ò|
�r   