
    `Vg                        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rdd
lmZ 	 d	 	 	 	 	 ddZ	 ddddd	 	 	 	 	 	 	 	 	 	 	 ddZy)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)	DataFramec                    t        d      }t        | dd      5 }|j                  |j                        } |j                  dd|i|j                         cddd       S # 1 sw Y   yxY w)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_textcolumnsN )r   r   ORCFilehandleread	to_pandas)pathr   kwargsorchandlesorc_files         N/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/pandas/io/orc.pyread_orcr#       sg    @ %]
3C	D$	. D';;w~~.x}}7W77AACD D Ds   =A!!A*pyarrow)engineindexengine_kwargsc                  || j                   j                  d   du}|i }| j                  D ]9  }t        |      s"t	        |      st        |      st        |      s0t        d       |dk7  rt        d      t        |d      }t        d      }|du }|rt        j                         }|J t        |d	d
      5 }t        |t              sJ 	  |j                  |j                   j#                  | |      |j$                  fi | 	 ddd       |r,t        |t        j                        sJ |j)                         S y# t&        $ r}	t        d      |	d}	~	ww xY w# 1 sw Y   UxY w)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   )preserve_index)r&   namesdtypesr   r   r   r   NotImplementedError
ValueErrorr   ioBytesIOr   
isinstancer   write_tableTablefrom_pandasr   	TypeErrorgetvalue)
dfr   r%   r&   r'   dtyper   was_noner    es
             r"   to_orcr<   G   s{   | }q!-  	 ' 'u%(/%H 	 344'GDF
$]
3Ct|Hzz|	D$	. '&*---		COO((E(B   $

+++}}  	%H	 s*   >E 9E	EEEE  E))N)r   zFilePath | ReadBuffer[bytes]r   zlist[str] | Nonereturnr   )r8   r   r   z$FilePath | WriteBuffer[bytes] | Noner%   zLiteral['pyarrow']r&   zbool | Noner'   zdict[str, Any] | Noner=   zbytes | None)__doc__
__future__r   r0   typesr   typingr   r   r   pandas._typingr   r	   r
   pandas.compat._optionalr   pandas.core.dtypes.commonr   r   r   r   pandas.io.commonr   pandasr   r#   r<   r       r"   <module>rH      s     " 	   
 ?  (  EI$D
&$D1A$D$DR 26i "++/ii
.i 	i
 i )i irG   