
    q-Ph                    X    d dl mZ d dlmZmZ d dlmZ ddZddZ G d d	          Z	dS )    )annotations)MappingSequence)Anypqo!dict[str, ParquetFieldOverwrites]returnlist[dict[str, Any]]c                    g }|                                  D ]F\  }}|j        d}t          |          ||_        |                    t	          |                     G|S )NzNParquetFieldOverwrites has both a name in the dictionary and in the overwrites)itemsname
ValueErrorappend!_parquet_field_overwrites_to_dict)r   childrenr   childmsgs        b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/polars/io/parquet/field_overwrites.py+_parquet_field_overwrites_dict_to_dict_listr      si     Hyy{{ B Be:!bCS//!
9%@@AAAAO    ParquetFieldOverwritesdict[str, Any]c                   i }| j         
| j         |d<   | j        t          | j        t                    rt	          | j                  |d<   nrt          | j        t
                    rt          | j                  |d<   n@t          | j        t                    rd | j        D             |d<   nd}t          |          | j	        
| j	        |d<   | j
        )t          | j
                                                  |d<   |S )Nr   r   c                ,    g | ]}t          |          S  )r   ).0cs     r   
<listcomp>z5_parquet_field_overwrites_to_dict.<locals>.<listcomp>"   s!    XXXa>qAAXXXr   z,invalid ParquetFieldOverwrites children typefield_idmetadata)r   r   
isinstancer   r   dictr   list	TypeErrorr   r    r   )r   dr   s      r   r   r      s    A xH&	 |cl$:;; 	!=clKKAjMMd++ 	!GUUAjMMd++ 	!XX3<XXXAjMM@CC.. 
|* |S\//1122*Hr   c                  T    e Zd ZU dZded<   ded<   dZded<   d	ed
<   dddddddZdS )r   aX  
    Write-option overwrites for individual Parquet fields.

    .. warning::
        This functionality is considered **unstable**. It may be changed
        at any point without it being considered a breaking change.


    Examples
    --------
    >>> lf = pl.LazyFrame(
    ...     {
    ...         "a": [None, 2, 3, 4],
    ...         "b": [[1, 2, 3], [42], [13], [37]],
    ...         "c": [
    ...             {"x": "a", "y": 42},
    ...             {"x": "b", "y": 13},
    ...             {"x": "X", "y": 37},
    ...             {"x": "Y", "y": 15},
    ...         ],
    ...     }
    ... )  # doctest: +SKIP
    >>> lf.sink_parquet(
    ...     "./out/parquet",
    ...     field_overwrites={
    ...         "a": ParquetFieldOverwrites(metadata={"flat_from_polars": "yes"}),
    ...         "b": ParquetFieldOverwrites(
    ...             children=ParquetFieldOverwrites(metadata={"listitem": "yes"}),
    ...             metadata={"list": "true"},
    ...         ),
    ...         "c": ParquetFieldOverwrites(
    ...             children=[
    ...                 ParquetFieldOverwrites(name="x", metadata={"md": "yes"}),
    ...                 ParquetFieldOverwrites(name="y", metadata={"md2": "Yes!"}),
    ...             ],
    ...             metadata={"struct": "true"},
    ...         ),
    ...     },
    ... )  # doctest: +SKIP
    z
None | strr   z`None | ParquetFieldOverwrites | list[ParquetFieldOverwrites] | dict[str, ParquetFieldOverwrites]r   N
int | Noner   zdict[str, None | str] | Noner    )r   r   r   r    
str | NonegNone | ParquetFieldOverwrites | Sequence[ParquetFieldOverwrites] | Mapping[str, ParquetFieldOverwrites]Mapping[str, None | str] | Noner	   Nonec               <   || _         t          |t                    rt          |          | _        n1t          |t
                    rt          |          | _        n|| _        || _        t          |t                    rt          |          | _        d S || _        d S )N)	r   r!   r   r"   r   r   r#   r   r    )selfr   r   r   r    s        r   __init__zParquetFieldOverwrites.__init__l   s     	h(( 	% NNDMM(++ 	% NNDMM$DM h(( 	% NNDMMM$DMMMr   )
r   r(   r   r)   r   r'   r    r*   r	   r+   )__name__
__module____qualname____doc____annotations__r   r.   r   r   r   r   r   1   s         ' 'R      H      #48% % % % % % % %r   N)r   r   r	   r
   )r   r   r	   r   )

__future__r   collections.abcr   r   typingr   r   r   r   r   r   r   <module>r7      s    " " " " " " - - - - - - - -      
 
 
 
   :U% U% U% U% U% U% U% U% U% U%r   