3
���ho� � @ s d dl mZ d dlZd dlmZmZ d dlmZ d dlZd dl m
Z
mZmZm
Z
d dlZd dljjZd dlmZ d dlmZ d dlmZ d d lmZmZ d d
lmZmZ d dlm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& d d
l'm(Z( d dl)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3 ej4Z4ej5Z5dZ6d6ee7 e7e8e9e7eee
gef e9ee7 e9e8d�
dd�Z:G dd� d�Z;G dd� de;�Z<G d d!� d!e;�Z=G d"d#� d#e=�Z>ed$dd%�ed&d'gd(d)�d7e9e9e9e9ee8 ee8 d+�d,d-���Z?G d.d/� d/ej@�ZAG d0d1� d1�ZBG d2d3� d3eB�ZCG d4d5� d5eB�ZDdS )8� )�abcN)�BytesIO�StringIO)�islice)�Any�Callable�Optional�Type)�iNaT)�JSONSerializable)�AbstractMethodError)�deprecate_kwarg�deprecate_nonkeyword_arguments)�
ensure_str�is_period_dtype)� DataFrame�
MultiIndex�Series�isna�to_datetime)�!create_series_with_explicit_dtype)�concat)�get_filepath_or_buffer�
get_handle�infer_compression)�convert_to_line_delimits)�build_table_schema�parse_table_schema)�_validate_integerz0.20.0�epoch�
T�msF�infer)
�orient�date_format�double_precision�force_ascii� date_unit�default_handler�lines�compression�index�indentc C s, |
r|d
krt d��| d k r4t| | dd�\} }}}|rH|dkrHt d��|dkrlt|t�rl|j|jpfdd �}|dkr�t|t�r�t}
n(t|t�r�t}
nt|t�r�t }
nt
d
��|
||||||||
|d� j� }|r�t|�}t| t
��rt| d| d�\}}z|j|� W d |j� X n| d k�r|S | j|� d S )N�split�tablez?'index=False' is only valid when 'orient' is 'split' or 'table'�w)r* �mode�recordsz3'lines' keyword only valid when 'orient' is records�values)�namez''obj' should be a Series or a DataFrame)r# r$ r% �ensure_asciir' |