
    .is2                    Z   d dl mZ d dlmZ d dlmZ d dlZd dlZd dl	m
Z
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZm Z m!Z!m"Z"m#Z#m$Z$ er"d dl%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1m2Z2  G d de      Z3ddZ4	 	 	 	 	 	 ddZ5	 	 	 	 ddZ6y)    )annotations)defaultdict)TYPE_CHECKINGN)libparsers)import_optional_dependency)DtypeWarning)find_stack_level)pandas_dtype)concat_compatunion_categoricals)CategoricalDtype)ensure_index_from_sequences)dedup_namesis_potential_multi_index)
ParserBaseParserErrordate_converterevaluate_callable_usecolsis_index_colvalidate_parse_dates_presence)HashableMappingSequence)AnyArrayLike	ArrayLikeDtypeArgDtypeObjReadCsvBuffer	SequenceT)Index
MultiIndexc                  X     e Zd ZU ded<   ded<   d	 fdZd
dZd
dZ	 d	 	 	 ddZ xZS )CParserWrapperbool
low_memoryzparsers.TextReader_readerc                    t         	|   |       || _        |j                         }|j	                  dd      | _        | j                  du|d<   | j                  |d<   | j                  j                  |d<   dD ]  }|j	                  |d         t        |j                  dd             |d<   d|vs|d   t        j                  u rd	|d<   |d   d
k(  rt        d
       t        j                   |fi || _        | j"                  j$                  | _        | j&                  d u }| j"                  j(                  d | _        nE| j+                  | j"                  j(                  | j,                  |      \  | _        | _        | _        }| j&                  -t1        t3        | j"                  j4                              | _        | j&                  d d  | _        | j                  rt9        | j                  | j6                        }| j6                  J | j:                  dk(  r@t=        |      j?                  | j6                        s| jA                  || j6                         tC        | j&                        tC        |      kD  r5tE        | j&                        D cg c]  \  }}||v s||v r| c}}| _        tC        | j&                        tC        |      k  r| jA                  || j&                         tG        | jH                  | j&                         | jK                          | j&                  | _        | j"                  jL                  dk(  r\tO        | j                        rG| jQ                  | j&                  | j                        \  }| _        | _        | j,                  || _        | j"                  j(                  .|s,| j,                  J d gtC        | j,                        z  | _        | j"                  jL                  dkD  | _)        y c c}}w )Nr&   Fallow_leading_colsusecolson_bad_lines)storage_optionsencoding
memory_mapcompressiondtypedtype_backendnumpypyarrowstringr   )*super__init__kwdscopypopr&   	index_colr*   r+   valueensure_dtype_objsgetr   
no_defaultr   r   
TextReaderr'   unnamed_colsnamesheader_extract_multi_indexer_columnsindex_names	col_nameslistrangetable_width
orig_namesr   usecols_dtypesetissubset_validate_usecols_nameslen	enumerater   parse_dates_set_noconvert_columnsleading_colsr   _clean_index_names_implicit_index)
selfsrcr7   keypassed_namesr*   inrD   	__class__s
            `/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/io/parsers/c_parser_wrapper.pyr6   zCParserWrapper.__init__A   sw   	yy{((<7 &*^^5%@!" ,,Y  $0066^
 	 C HHS$	  *$((7D*ABW$&$*?3>>*Q$+D! I-&y1))#66 LL55zzT)<<&DJ 33##  
  ::eDLL$<$<=>DJ **Q-<</dooNG ??...!!X-c'l6K6K7 ,,WdooF4::W- !*$** 51WW 
 4::W-,,JJ
 	&d&6&6

C##%**<<$$)l4>>.J
 ''

	
 '#. <<&|##/// $vD,<,<(==D#||881<Es   P
c                X    	 | j                   j                          y # t        $ r Y y w xY wN)r'   close
ValueError)rU   s    r\   r_   zCParserWrapper.close   s)    	LL  		s    	))c                :   | j                   J t        | j                         D ci c]  \  }}||
 }}}| j                  D cg c]  }||   	 }}| j                  || j                        }|D ]  }| j                  j                  |        yc c}}w c c}w )z
        Set the columns that should not undergo dtype conversions.

        Currently, any column that is involved with date parsing will not
        undergo such conversions.
        N)rI   rO   rA   _set_noconvert_dtype_columnsr'   set_noconvert)rU   rY   x
names_dictcol_indicesnoconvert_columnscols          r\   rQ   z%CParserWrapper._set_noconvert_columns   s     *** (1'ABtq!adB
B.2jj9z!}99 ==JJ
 % 	,CLL&&s+	, C9s   BBc                 	   	 | j                   r2| j                  j                  |      }t        || j                        }n| j                  j                  |      }d| _        | j                  }| j                  j*                  rg }| j                  re| j                  j*                  t-        | j                        k7  r9t/        dt-        | j                         d| j                  j*                   d      t1        | j                  j*                        D ]  }| j                  |j3                  |      }n|j3                  | j                  |         }| j5                  |      rIt7        || j8                  | j8                  |   nd | j:                  | j<                  | j>                        }|jA                  |        tC        |      }t!        | j"                  |      }t        |t        || j                              }tE        |j'                               }tG        ||d      D 	
ci c]  \  }	\  }}
|	|
 }}}	}
| jI                  ||      }| j                  || j                        }ntE        |j'                               }| j                  J tK        | j                        }t        |t        || j                              }t!        | j"                  |      }|D cg c]  }|d	   	 }}| j"                  | jM                  ||       tG        ||d      D 	
ci c]  \  }	\  }}
|	|
 }}}	}
| jI                  ||      }| jO                  ||      \  }}|||fS # t        $ r | j                  rd| _        | j                  J t        | j                  t        | j                  | j                              }| j                  || j                        \  }}}| j                  || j                        }t!        | j"                  |      }t%        |      }|j'                         D 	
ci c]  \  }	}
|	|v s|	|
 nc c}
}	w }}	}
|||fcY S | j)                           w xY wc c}
}}	w c c}w c c}
}}	w )
NF)r0   z,Could not construct index. Requested to use z number of columns, but z left to parse.)rh   dayfirstcache_datesdate_formatT)strict   )(r&   r'   read_low_memory_concatenate_chunksrA   readStopIteration_first_chunkrI   r   r   r:   _get_empty_metar0   _maybe_make_multi_index_columnsrE   _filter_usecolsr*   rK   itemsr_   rR   rN   r   rG   r9   _should_parse_datesr   rD   rj   rk   rl   appendr   sortedzip_do_date_conversionsrF   _check_data_length_make_index)rU   nrowschunksdatarA   indexcolumnscol_dictcolumns_setkvarraysrY   values	data_tups	date_datacolumn_namesrd   alldatas                      r\   rq   zCParserWrapper.read   s   $	55e<*64::>||((/B "

<<$$F~~$,,";";s4>>?R"R!B4>>*++C||001B  4<<445 &>>)!XXa[F!XXdnnQ&78F++A.+  $//; !,,Q/!%!%$($4$4$($4$4
F f%%&( 07E#DLL%8E'?t~~'VWE tzz|,I*-eYt*LMMYQAAqDMDM11%>I  ??t~~VL tzz|,I
 ??...)E'?t~~'VWE#DLL%8E &//qt/G/||#''w7*-eYu*MNNYQAAqDNDN11%>I"&"2"27E"BE<lI--S  	  $)! 222#OO,T__dnnM ,0+?+?** ,@ ,(w >>T^^ *$,,@!'l-5^^-=RTQkAQAqDRRRgx// 

;	V N* 0 Os7   AM& /Q-(Q4&Q9&CQ*5QQQ*Q*)rV   zReadCsvBuffer[str]returnNone)r   r   r^   )r   z
int | Noner   zbtuple[Index | MultiIndex | None, Sequence[Hashable] | MultiIndex, Mapping[Hashable, AnyArrayLike]])	__name__
__module____qualname____annotations__r6   r_   rQ   rq   __classcell__)r[   s   @r\   r$   r$   =   s?    m=^,, !z.z.
z.    r$   c                    t        | |      } | >t        |      t        |       k7  r't        |      D cg c]  \  }}|| v s|| v s| c}}S |S c c}}w r^   )r   rN   rO   )r*   rA   rY   names       r\   rv   rv   H  sU    '7Gs5zS\9$-e$4XDWPWXXL Ys   AAc           	         t        | d   j                               }g }i }|D ]  }| D cg c]  }|j                  |       }}|D ch c]  }|j                   }	}|	D 
ch c]  }
t	        |
t
              r|
 }}
|	j                         }t	        |t
              rt        |d      ||<   t        |      ||<   t        |      dkD  s||   j                  t        j                  t              k(  s|j                  ||           |rldj                  t        |      D cg c]  \  }}| d|  c}}      }dj                  d| d	g      }t        j                  |t         t#               
       |S c c}w c c}w c c}
w c c}}w )z
    Concatenate chunks of data read with low_memory=True.

    The tricky part is handling Categoricals, where different chunks
    may have different inferred categories.
    r   F)sort_categoriesrn   z, z:  z	Columns (zK) have mixed types. Specify dtype option on import or set low_memory=False.)
stacklevel)rF   keysr9   r0   
isinstancer   r   r   rN   npobjectry   joinrO   warningswarnr	   r
   )r   r   rA   warning_columnsresultr   chunkarrsadtypesrd   non_cat_dtypesr0   r   warning_nameswarning_messages                   r\   rp   rp   P  sx    !"EOF ;-34E		$44#'(a!''((%+S:aAQ3R!SS

e-.-dEJF4L(.F4L>"Q&6$<+=+=&AQ+Q&&|D'9:; 		3<_3MNKE4wbN
 ((M? +J K
 	o|@P@RSM1 5(S Os   E;F !F7F&F

c                D   t        | t              rOt        | j                               t        fd      }| j	                         D ]  }t        | |         ||<    |S t        | t
              r| D ci c]  }|t        | |          c}S | t        |       S | S c c}w )zc
    Ensure we have either None, a dtype object, or a dictionary mapping to
    dtype objects.
    c                      S r^    )default_dtypes   r\   <lambda>z#ensure_dtype_objs.<locals>.<lambda>  s    = r   )r   r   r   default_factoryr   dict)r0   dtype_convertedrW   r   r   s       @r\   r<   r<   y  s     %%$U%:%:%<='23H'I::< 	<C#/c
#;OC 	<	E4	 389a<a))99		E""L :s   5B)rA   r    r   zSequenceT | list[Hashable])r   zlist[dict[int, ArrayLike]]r   z	list[str]r   r   )r0   z*DtypeArg | dict[Hashable, DtypeArg] | Noner   z*DtypeObj | dict[Hashable, DtypeObj] | None)7
__future__r   collectionsr   typingr   r   r2   r   pandas._libsr   r   pandas.compat._optionalr   pandas.errorsr	   pandas.util._exceptionsr
   pandas.core.dtypes.commonr   pandas.core.dtypes.concatr   r   pandas.core.dtypes.dtypesr   pandas.core.indexes.apir   pandas.io.commonr   r   pandas.io.parsers.base_parserr   r   r   r   r   r   collections.abcr   r   r   pandas._typingr   r   r   r   r   r    pandasr!   r"   r$   rv   rp   r<   r   r   r\   <module>r      s    " #     ? & 4 2 7 ?    H.Z H.V&&&6?&	&R5/r   