
    q-Ph,                        d dl mZ d dlZd dlmZ d dlmZ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mZ d d
lmZ nerej        e         Zee_        e G d d                      ZdS )    )annotationsN)TYPE_CHECKING)BUILDING_SPHINX_DOCSqualified_type_namesphinx_accessor)wrap_df)Schema)expr_dispatch)Sequence)	DataFrameSeries)PySeriesc                  ~    e Zd ZdZdZddZdd
ZddZedd            Z	ddZ
ddZedd            Zd dZd!dZdS )"StructNameSpacezSeries.struct namespace.structseriesr   returnNonec                    |j         | _         d S N)_s)selfr   s     T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/polars/series/struct.py__init__zStructNameSpace.__init__!   s    "I    item	int | strc                   t          |t                    r |                     | j        |                   S t          |t                    r|                     |          S dt          |          }t          |          )Nzexpected type 'int | str', got )
isinstanceintfieldfieldsstrr   	TypeError)r   r   msgs      r   __getitem__zStructNameSpace.__getitem__$   ss    dC   	!::dk$/000c"" 	!::d###Q4G4M4MQQCC.. r   	list[str]c                    | j         S r   )r"   r   s    r   _ipython_key_completions_z)StructNameSpace._ipython_key_completions_-   s
    {r   c                Z    t          | dd          g S | j                                        S )z
        Get the names of the fields.

        Examples
        --------
        >>> s = pl.Series([{"a": 1, "b": 2}, {"a": 3, "b": 4}])
        >>> s.struct.fields
        ['a', 'b']
        r   N)getattrr   struct_fieldsr)   s    r   r"   zStructNameSpace.fields0   s/     4t$$,Iw$$&&&r   namer#   c                    dS )a  
        Retrieve one of the fields of this `Struct` as a new Series.

        Parameters
        ----------
        name
            Name of the field.

        Examples
        --------
        >>> s = pl.Series([{"a": 1, "b": 2}, {"a": 3, "b": 4}])
        >>> s.struct.field("a")
        shape: (2,)
        Series: 'a' [i64]
        [
            1
            3
        ]
        N )r   r.   s     r   r!   zStructNameSpace.field?         r   namesSequence[str]c                    dS )a  
        Rename the fields of the struct.

        Parameters
        ----------
        names
            New names in the order of the struct's fields.

        Examples
        --------
        >>> s = pl.Series([{"a": 1, "b": 2}, {"a": 3, "b": 4}])
        >>> s.struct.fields
        ['a', 'b']
        >>> s = s.struct.rename_fields(["c", "d"])
        >>> s.struct.fields
        ['c', 'd']
        Nr0   )r   r2   s     r   rename_fieldszStructNameSpace.rename_fieldsT   r1   r   r	   c                    t          | dd          t          i           S | j                                                                        }t          |d          S )z
        Get the struct definition as a name/dtype schema dict.

        Examples
        --------
        >>> s = pl.Series([{"a": 1, "b": 2}, {"a": 3, "b": 4}])
        >>> s.struct.schema
        Schema({'a': Int64, 'b': Int64})
        r   NF)check_dtypes)r,   r	   r   dtype	to_schema)r   schemas     r   r:   zStructNameSpace.schemag   sP     4t$$,"::**,,f51111r   r   c                N    t          | j                                                  S )u  
        Convert this struct Series to a DataFrame with a separate column for each field.

        Examples
        --------
        >>> s = pl.Series([{"a": 1, "b": 2}, {"a": 3, "b": 4}])
        >>> s.struct.unnest()
        shape: (2, 2)
        ┌─────┬─────┐
        │ a   ┆ b   │
        │ --- ┆ --- │
        │ i64 ┆ i64 │
        ╞═════╪═════╡
        │ 1   ┆ 2   │
        │ 3   ┆ 4   │
        └─────┴─────┘
        )r   r   struct_unnestr)   s    r   unnestzStructNameSpace.unnestx   s     $ tw,,..///r   c                    dS )ar  
        Convert this struct to a string column with json values.

        Examples
        --------
        >>> s = pl.Series("a", [{"a": [1, 2], "b": [45]}, {"a": [9, 1, 3], "b": None}])
        >>> s.struct.json_encode()
        shape: (2,)
        Series: 'a' [str]
        [
            "{"a":[1,2],"b":[45]}"
            "{"a":[9,1,3],"b":null}"
        ]
        Nr0   r)   s    r   json_encodezStructNameSpace.json_encode   r1   r   N)r   r   r   r   )r   r   r   r   )r   r'   )r.   r#   r   r   )r2   r3   r   r   )r   r	   )r   r   )r   r   )__name__
__module____qualname____doc__	_accessorr   r&   r*   propertyr"   r!   r5   r:   r=   r?   r0   r   r   r   r      s        ""I& & & &! ! ! !    ' ' ' X'   *   & 2 2 2 X2 0 0 0 0(     r   r   )
__future__r   systypingr   polars._utils.variousr   r   r   polars._utils.wrapr   polars.schemar	   polars.series.utilsr
   collections.abcr   polarsr   r   polars.polarsr   modulesr@   current_modulerE   r   r0   r   r   <module>rR      sI   " " " " " " 



                     
 ' & & & & &             - - - - - - 	.((((((((((((((&&&&&&& . [*N-N ~ ~ ~ ~ ~ ~ ~ ~ ~ ~r   