
    .ii                    Z    S SK Jr  S SKJr  S SKJr  S SKJr  S SKr	\ " S S5      5       r
g)    )annotations)	dataclass)Path)OptionalNc                      \ rS rSr% S\S'   SrS\S'   SrS\S'   SS	 jr\SS
 j5       r	\SS j5       r
 S       SS jjrSrg)
ExcelStore
   r   pathSalidasstrsheet_salidasLlegadassheet_llegadasc                    U R                   R                  5       (       d  [        R                  " 5       $  [        R                  " U R                   USS9$ ! [
         a    [        R                  " 5       s $ f = f)Nopenpyxl)
sheet_nameengine)r
   existspd	DataFrame
read_excel
ValueError)selfr   s     aC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\Proyectos\Vuelos_Mazatlan\src\storage.py_read_sheet_if_exists ExcelStore._read_sheet_if_exists   sX    yy!!<<>!	"==z*UU 	"<<>!	"s   A A87A8c                (   U b  U R                   (       a  [        R                  " 5       $ U R                  5       n U R                   HH  nX   R
                  S:X  d  M  X   R                  [        5      R                  R                  5       X'   MJ     U $ )Nobject)	emptyr   r   copycolumnsdtypeastyper   strip)dfcols     r   _normalize_columnsExcelStore._normalize_columns   sj     :<<>!WWY::Cw}}('..-11779  	    c                    U b  U R                   (       a  UnO[        R                  " X/SS9nUR                   (       a  U$ UR                  USS9R	                  SS9nU$ )zD
Concatena y elimina duplicados por key_cols (mantiene el primero).
Tignore_indexfirst)subsetkeep)drop)r   r   concatdrop_duplicatesreset_index)oldnewkey_colsmergeds       r   _dedupe_concatExcelStore._dedupe_concat'   s]    
 ;#))FYYz=F<<M ''xg'FRRX\R]r)   c                   U R                  U5      nU R                  U5      nU R                  U R                  U R                  5      5      nU R                  U R                  U R                  5      5      n/ SQn/ SQnU(       a%  U R	                  XAU5      nU R	                  XRU5      n	ORUR
                  (       d  [        R                  " XA/SS9OUnUR
                  (       d  [        R                  " XR/SS9OUn	[        R                  " U R                  SSS9 n
UR                  XR                  SS	9  U	R                  XR                  SS	9  S S S 5        g ! , (       d  f       g = f)
N)FechaHoraNoVueloDestinoTerminalEstatus	Aerolinea)r;   r<   r=   Origenr?   r@   rA   Tr+   r   w)r   modeF)r   index)r'   r   r   r   r8   r   r   r1   ExcelWriterr
   to_excel)r   salidasllegadasdedupeold_salold_llegsal_keylleg_key	final_sal
final_llegwriters              r   append_flightsExcelStore.append_flights8   s-    ))'2**84))$*D*DTEWEW*XY**4+E+EdFYFY+Z[ ^]++GgFI,,XJJPWP]P]		7"44HcjIS[SaSaH#7dKgoJ ^^DIIjsCvv2D2DER3F3FeT DCCs   5E
E) N)r   r   returnpd.DataFrame)r%   rV   rU   rV   )r4   rV   r5   rV   r6   z	list[str]rU   rV   )T)rH   rV   rI   rV   rJ   boolrU   None)__name__
__module____qualname____firstlineno____annotations__r   r   r   staticmethodr'   r8   rR   __static_attributes__rT   r)   r   r   r   
   s    
J"M3"$NC$" 	 	  ( 	UU U 	U
 
U Ur)   r   )
__future__r   dataclassesr   pathlibr   typingr   pandasr   r   rT   r)   r   <module>re      s3    " !    HU HU HUr)   