a
    Sic                  	   @  s   d Z 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mZmZ ddlmZ ddlmZmZmZmZ dd	lmZ erdd
lmZ dddddddZddddddddddddddZdS )z orc compat     )annotationsN)
ModuleType)TYPE_CHECKINGAnyLiteral)FilePath
ReadBufferWriteBuffer)import_optional_dependency)is_categorical_dtypeis_interval_dtypeis_period_dtypeis_unsigned_integer_dtype)
get_handle)	DataFramezFilePath | ReadBuffer[bytes]zlist[str] | Noner   )pathcolumnsreturnc                 K  s^   t d}t| ddd4}||j}|jf d|i| W  d   S 1 sP0    Y  dS )a  
    Load an ORC object from the file path, returning a DataFrame.

    .. versionadded:: 1.0.0

    Parameters
    ----------
    path : str, path object, or file-like object
        String, path object (implementing ``os.PathLike[str]``), or file-like
        object implementing a binary ``read()`` function. The string could be a URL.
        Valid URL schemes include http, ftp, s3, and file. For file URLs, a host is
        expected. A local file could be:
        ``file://localhost/path/to/table.orc``.
    columns : list, default None
        If not None, only these columns will be read from the file.
    **kwargs
        Any additional kwargs are passed to pyarrow.

    Returns
    -------
    DataFrame

    Notes
    -----
    Before using this function you should read the :ref:`user guide about ORC <io.orc>`
    and :ref:`install optional dependencies <install.warn_orc>`.
    pyarrow.orcrbFis_textr   N)r
   r   ZORCFilehandleread	to_pandas)r   r   kwargsorchandlesZorc_file r   I/var/www/html/django/DPS/env/lib/python3.9/site-packages/pandas/io/orc.pyread_orc    s     r    pyarrow)engineindexengine_kwargsz$FilePath | WriteBuffer[bytes] | NonezLiteral['pyarrow']zbool | Nonezdict[str, Any] | Nonezbytes | None)dfr   r"   r#   r$   r   c          
      C  sV  |du r| j jd du}|du r$i }| jD ],}t|sNt|sNt|sNt|r*tdq*|dkrhtdt	|dd}t	d}|du }|rt
 }|dusJ t|d	d
dv}t|tsJ z&|j|jj| |d|jfi | W n0 ty }	 ztd|	W Y d}	~	n
d}	~	0 0 W d   n1 s(0    Y  |rRt|t
jsJJ | S dS )a  
    Write a DataFrame to the ORC format.

    .. versionadded:: 1.5.0

    Parameters
    ----------
    df : DataFrame
        The dataframe to be written to ORC. Raises NotImplementedError
        if dtype of one or more columns is category, unsigned integers,
        intervals, periods or sparse.
    path : str, file-like object or None, default None
        If a string, it will be used as Root Directory path
        when writing a partitioned dataset. By file-like object,
        we refer to objects with a write() method, such as a file handle
        (e.g. via builtin open function). If path is None,
        a bytes object is returned.
    engine : str, default 'pyarrow'
        ORC library to use. Pyarrow must be >= 7.0.0.
    index : bool, optional
        If ``True``, include the dataframe's index(es) in the file output. If
        ``False``, they will not be written to the file.
        If ``None``, similar to ``infer`` the dataframe's index(es)
        will be saved. However, instead of being saved as values,
        the RangeIndex will be stored as a range in the metadata so it
        doesn't require much space and is faster. Other indexes will
        be included as columns in the file output.
    engine_kwargs : dict[str, Any] or None, default None
        Additional keyword arguments passed to :func:`pyarrow.orc.write_table`.

    Returns
    -------
    bytes if no path argument is provided else None

    Raises
    ------
    NotImplementedError
        Dtype of one or more columns is category, unsigned integers, interval,
        period or sparse.
    ValueError
        engine is not pyarrow.

    Notes
    -----
    * Before using this function you should read the
      :ref:`user guide about ORC <io.orc>` and
      :ref:`install optional dependencies <install.warn_orc>`.
    * This function requires `pyarrow <https://arrow.apache.org/docs/python/>`_
      library.
    * For supported dtypes please refer to `supported ORC features in Arrow
      <https://arrow.apache.org/docs/cpp/orc.html#data-types>`__.
    * Currently timezones in datetime columns are not preserved when a
      dataframe is converted into ORC files.
    Nr   z6The dtype of one or more columns is not supported yet.r!   zengine must be 'pyarrow'z7.0.0)min_versionr   wbFr   )Zpreserve_index)r#   namesdtypesr   r   r   r   NotImplementedError
ValueErrorr
   ioBytesIOr   
isinstancer   Zwrite_tableTablefrom_pandasr   	TypeErrorgetvalue)
r%   r   r"   r#   r$   dtyper   Zwas_noner   er   r   r   to_orcG   sV    >

8r5   )N)N)__doc__
__future__r   r,   typesr   typingr   r   r   pandas._typingr   r   r	   pandas.compat._optionalr
   pandas.core.dtypes.commonr   r   r   r   pandas.io.commonr   pandasr   r    r5   r   r   r   r   <module>   s$    ) 