o
    i"                     @  s   d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	m
Z
mZ ddlmZ e	r:ddlmZ ddlmZ dd	lmZ edddZedddZed ddZd!ddZdS )"z'Utility for serializing Polars objects.    )annotations)BytesIOStringIO)Path)TYPE_CHECKINGLiteraloverload)normalize_filepath)Callable)IOBase)SerializationFormat
serializerCallable[[IOBase | str], None]fileNoneformatLiteral['binary']returnbytesc                 C     d S N r   r   r   r   r   J/home/app/Keep/.python/lib/python3.10/site-packages/polars/_utils/serde.pyserialize_polars_object      r   Literal['json']strc                 C  r   r   r   r   r   r   r   r      r   IOBase | str | Pathr   c                 C  r   r   r   r   r   r   r   r      s   IOBase | str | Path | Nonebytes | str | Nonec                   s   d fdd}|du r| }|dkr|  S |S t|tr)|   }|| dS t|tr8| }|| dS t|ttfrIt|} | dS  | dS )z5Serialize a Polars object (DataFrame/LazyFrame/Expr).r   r   c                    s<   t  }  |  |  }W d    |S 1 sw   Y  |S r   )r   getvalue)buf
serializedr   r   r   serialize_to_bytes)   s   

z3serialize_polars_object.<locals>.serialize_to_bytesNjson)r   r   )decode
isinstancer   writer   r   r   r	   )r   r   r   r%   r#   Zserialized_strr   r$   r   r   "   s$   




N)r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r    )__doc__
__future__r   ior   r   pathlibr   typingr   r   r   Zpolars._utils.variousr	   collections.abcr
   r   Zpolars._typingr   r   r   r   r   r   <module>   s"    