
    ˀh                    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	y)    )annotations)MappingSequence)Anyc                    g }| j                         D ]?  \  }}|j                  d}t        |      ||_        |j                  t	        |             A |S )NzNParquetFieldOverwrites has both a name in the dictionary and in the overwrites)itemsname
ValueErrorappend!_parquet_field_overwrites_to_dict)pqochildrenr	   childmsgs        ~/var/www/html/wine-match-dev/backend/winematch-backend/venv/lib/python3.12/site-packages/polars/io/parquet/field_overwrites.py+_parquet_field_overwrites_dict_to_dict_listr      s]     Hyy{ Be::!bCS/!
9%@AB O    ParquetFieldOverwritesc                   i }| j                   | j                   |d<   | j                  t        | j                  t              rt	        | j                        |d<   nt        | j                  t
              rt        | j                        |d<   nNt        | j                  t              r'| j                  D cg c]  }t	        |       c}|d<   nd}t        |      | j                  | j                  |d<   | j                  &t        | j                  j                               |d<   | j                  | j                  |d<   |S c c}w )Nr	   r   z,invalid ParquetFieldOverwrites children typefield_idmetadatarequired)r	   r   
isinstancer   r   dictr   list	TypeErrorr   r   r   r   )r   dcr   s       r   r   r      s   A xxHH&	 ||cll$:;=cllKAjMd+GUAjMd+KN<<Xa>qAXAjM@CC. 
||* ||S\\//12*
||*H Ys   8Ec                  x    e Zd ZU dZded<   ded<   dZded<   d	ed
<   dZded<   dddddd	 	 	 	 	 	 	 	 	 	 	 ddZy)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   bool | Noner   )r	   r   r   r   r   c                  || _         t        |t              rt        |      | _        n(t        |t
              rt        |      | _        n|| _        || _        t        |t              rt        |      | _        || _	        y || _        || _	        y )N)
r	   r   r   r   r   r   r   r   r   r   )selfr	   r   r   r   r   s         r   __init__zParquetFieldOverwrites.__init__p   sq     	h( NDM(+ NDM$DM h( NDM ! %DM r   )r	   z
str | Noner   zgNone | ParquetFieldOverwrites | Sequence[ParquetFieldOverwrites] | Mapping[str, ParquetFieldOverwrites]r   r    r   zMapping[str, None | str] | Noner   r!   returnNone)__name__
__module____qualname____doc____annotations__r   r   r$    r   r   r   r   4   s    'R 	,  Hj$ !Hk 
   #48 $! !
3! ! 2! ! 
!r   N)r   z!dict[str, ParquetFieldOverwrites]r%   zlist[dict[str, Any]])r   r   r%   zdict[str, Any])

__future__r   collections.abcr   r   typingr   r   r   r   r,   r   r   <module>r0      s5    " - 
	*

@X! X!r   