
    Mf0                     r   d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlZd dlmZ	 ddl
mZmZ  G d de          Z G d d	e          Z G d
 de          Zed             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zed             Zed             Zed             Zed             Z ed             Z!dS )    N)deque)TimeConvert   )
basestringstrc                       e Zd ZdS )LeftMergeCellN__name__
__module____qualname__     O/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/excel_base/excel.pyr	   r	              Dr   r	   c                       e Zd ZdS )UpMergeCellNr
   r   r   r   r   r      r   r   r   c                   6    e Zd Z e            Z e            ZdS )	MergeCellN)r   r   r   r	   	LeftMerger   UpMerger   r   r   r   r      s$        IkmmGGGr   r   c                     t          | j                  dk    rdS | j        rdS | j                                        D ]2}t          |                    d          pg           | j        k    r dS 3dS )Nr   TFdata)lenr   	force_csvvaluesgetEXCEL_MAXIMUM_ALLOWED_ROWS)self
sheet_infos     r   use_xls_or_notr!      s    
49~~t~ ui&&((  
z~~f%%+,,t/NNN55 O4r   c                 P    t          t          d | D                       d          S )Nc              3   b   K   | ]*}t          |t                    rt          |          nd V  +dS )r   N)
isinstancelistget_merged_rows_num).0ds     r   	<genexpr>z&get_merged_rows_num.<locals>.<genexpr>*   s?      VVAZ4-@-@G&q)))aVVVVVVr   r   )maxsum)r   s    r   r&   r&   )   s+    sVVQUVVVVVXYZZZr   c                 (    |                     d          }t          |t                    r|n|g}|                     d          }|                     d          } fd|D             }|r'|t                                |          |          gz   n|S )N	field_keydata_keynextc                 :    g | ]}                     |          S r   )r   )r'   keyr   s     r   
<listcomp>z%row_preprocessing.<locals>.<listcomp>2   s#    666S488C==666r   )r   r$   r%   data_preprocessing)r   mappingr-   r.   nextmappingfield_values   `     r   row_preprocessingr7   -   s    K((I'	488I		ykI{{:&&H++f%%K6666I666KR]n;,TXXh-?-?MMNNNcnnr   c                 Z    t          | t                    r| n| g} fd| pi gD             S )Nc                 0    g | ]}t          |          S r   )r7   )r'   itemr4   s     r   r2   z&data_preprocessing.<locals>.<listcomp>8   s$    FFFdG,,FFFr   r$   r%   )r   r4   s    `r   r3   r3   6   s=    dD))544vDFFFF"FFFFr   c                    t          j                    }| j        |_        | j        |_        t          j                    }| j        r| j        |_        d|_	        t          j
        d          }||_        ||_        t          j
        d          }||_        ||_        t          j
        d          }||_        ||_        t           j        j        }||_        ||_        t          j        ||||d          S )NTyyyy-mm-dd hh:mm:ssnum_format_str
yyyy-mm-ddhh:mm:ssdatetimedatetimedefault)xlwt	AlignmenthhorzhorzhvertvertFontfontnameboldeasyxf	alignmentStyledefault_stylecopydeepcopyr   alrN   datetime_style
date_style
time_styledafault_styles          r   get_header_cell_stylesr]   ;   s    			BjBGjBG9;;Dy I	DI[0EFFFN!NNL999JJJOJ777JJJOJ,M MM=" 	    r   c                    t          j                    }| j        |_        | j        |_        t          j                    }| j        r| j        |_        t          j        d          }||_        ||_        t          j        d          }||_        ||_        t          j        d          }||_        ||_        t           j	        j
        }||_        ||_        t          j        ||||d          S )Nr=   r>   r@   rA   rB   )rG   rH   rJ   rL   rM   rN   rO   rQ   rR   rS   rT   rU   rV   rW   s          r   get_cell_stylesr_   ]   s    			BiBGiBG9;;Dy I	[0EFFFN!NNL999JJJOJ777JJJOJ,M MM=" 	    r   c                 ^   |	| j         rd}t          |t          j                  r7t          j        |          rt          j        || j                  }|d         }nNt          |t          j                  r	|d         }n+t          |t          j                  r	|d         }n|d         }||fS )N rC   rD   rE   rF   )	blanks_for_noner$   rC   tcis_aware
make_naivetimezonerD   rE   )r   valuecell_styles
cell_styles       r   get_cell_inforj   ~   s    }-}%*++ 	,;u 	8M%77E ,

	E8=	)	) , (

	E8=	)	) , (

 +
*r   c                 ~   | j         sd S t          |t                    rt          j        |          dz  n#t          j        t          |                    dz  }||                    |d          k    rd S t          || j                  }|||<   t          || j
                  |                    |          _        d S )N   r   )auto_adjust_widthr$   r   screen
calc_widthr   r   min"EXCEL_MAXIMUM_ALLOWED_COLUMN_WIDTHr*   min_cell_widthcolwidth)r   sheetcolxrg   widthsrt   s         r   rm   rm      s     ! .8
.K.KtFe$$s**QWQbcfglcmcmQnQnqtQtE

4####t>??EF4Lt':;;EIIdOOr   c                 t    | sg S t          | t                    rt          | d         t                    r| S | gS )Nr   r;   )headerss    r   generate_headersrz      sC     	'4   Z
D%A%A 9r   c                     |                      d          }|                      d          }t          ||          | d<   | S )Nr   r4   )r   r3   )r    
sheet_datasheet_mappings      r   generate_sheet_infor~      s>    ''JNN9--M+JFFJvr   c           
         |rt          |t                    sd S |d         rt          |d         t                    sd S t          |          t          |d                   }}t                      }t	          |           }t          |          D ]w}t          |          D ]c}	t          ||         |	         t          t          f          r,||	f|v r3|||	|	f\  }
}}}t          |
dz   |          D ]2}||f|v r n)t          ||         |         t                    s|dz  } n3t          |dz   |          D ]2}|
|f|v r n)t          ||
         |         t                    s|dz  } n3t          |
|dz             D ]/}t          ||dz             D ]}|                    ||f           0||
         |         }t          | ||          \  }}|
                    |
|||||           ||k    rt          | ||||           eyd S )Nr   r   style)r$   r%   r   setr]   ranger	   r   addrj   write_mergerm   )r   ru   ry   rw   rlenclenignore_header_cellsheader_cell_stylesijr1r2c1c2kmrg   ri   s                     r   write_header_cellsr      s    *Wd33 1: Z
D99 Ws71:$D%%/554[[  B  Bt 	B 	BA'!*Q--)EFF 1v,,,1aZNBBBFD))  8222E!'"+b/;?? !GBE BFD))  8222E!'"+b/=AA !GBE 2rAv&& 4 4r26** 4 4A'++QF33334BKOE -dE;M N NE:b"b"e:FFFRxx!$r5&AAA?	B B  Br   c           
         t          | j        t                    s| j        | j        | j        di| _        t          |           }t          j        | j                  }| j        	                                D ]\  }}|
                    d          pg }t          |
                    d                    }|                    |          }i }t          | |||           t          |          }	|D ]g}
t          |
          D ]P\  }}|	| j        rd}t#          | ||          \  }}|                    |	|||           t'          | ||||           Q|	dz  }	h|                    | j                   d S )Nr   ry   encodingr   ry   ra   r   r   )r$   r   dict
sheet_namery   r_   rG   Workbookr   itemsr   rz   	add_sheetr   r   	enumeraterb   rj   writerm   saveoutput)r   rh   bookr   r    r|   sheet_headersru   rw   rowxrowrv   rg   ri   s                 r   as_xlsr      s   di&& T_tyT\&R&RS	!$''K=$-000D"&)//"3"3  
J^^F++1r
(	)B)BCCz** 	4v>>>=!! 	 	C(~~ D De=T%9=E$1${$K$K!zD$Z@@@!$tUFCCCCAIDD	 	IIdkr   c                    t          | j        t                    s| j        | j        | j        di| _        t          |           }t          j        | j                  }| j        	                                D ]e\  }}|
                    d          pg }t          |
                    d                    }|                    |          }i }t          | |||           t          |          }	|D ]}
t          d |
D                       }t!          |
          D ]\  }}t          |t"                    rYt!          |          D ]H\  }}t%          | ||          \  }}|                    |	|z   |||           t)          | ||||           Ist%          | ||          \  }}|                    |	|	|z   dz
  ||||           t)          | ||||           |	|z  }	g|                    | j                   d S )Nr   r   r   ry   c                 Z    g | ](}t          |t                    rt          |          nd )S )r   )r$   r%   r   )r'   rs     r   r2   z$as_row_merge_xls.<locals>.<listcomp>  s1    NNNQZ4%8%8?3q666aNNNr   r   r   )r$   r   r   r   ry   r_   rG   r   r   r   r   rz   r   r   r   r*   r   r%   rj   r   rm   r   r   r   )r   rh   r   r   r    r|   r   ru   rw   r   r   rowmaxrv   rg   vxvalri   s                    r   as_row_merge_xlsr     s*   di&& T_tyT\&R&RS	!$''K=$-000D"&)//"3"3  
J^^F++1r
(	)B)BCCz** 	4v>>>=!! 	 	CNN#NNNOOF(~~ 	H 	HeeT** H#,U#3#3 J JC*7c;*O*OZD2ItS
KKK)$tS&IIIIJ
 )6dE;(O(O%E:%%dD6MA,=tT5Xb%ccc%dE4GGGGFNDD	  	IIdkr   c                    t          | j        t                    s| j        | j        | j        di| _        t          |           }t          j        | j                  }t                      }| j        
                                D ]\  }}|                    d          pg }t          |                    d                    }|                    |          }i }	t          | |||	           t          |          }
d}|D ]O}d}|
}i }|                    t#          j        ||gd                     |rt#          j        |                                          \  }}t+          |          }t-          ||          }t/          |          D ]\  }}||z   }t          |t0                    r1|D ]-}|                    t#          j        ||gd                     .P|                    ||
          }||z   ||<   t3          | ||          \  }}|                    |||z   dz
  ||||	           t7          | ||||	           ||
|z  }
d}Q|                    | j                   d S )
Nr   r   r   ry   r   r   F)ensure_asciir   )r$   r   r   r   ry   r_   rG   r   r   r   r   r   rz   r   r   r   appendjsondumpsloadspopleftr&   r*   r   r%   rj   r   rm   r   r   )r   rh   r   qr   r    r|   r   ru   rw   r   rv   r   r   _rowx_rowxdrowdatamergedrowsnumidxrg   _colxr(   ri   s                          r   as_list_row_merge_xlsr   *  s   di&& T_tyT\&R&RS	!$''K=$-000DA"&)//"3"3 # #
J^^F++1r
(	)B)BCCz** 	4v>>>=!! 	 	CFEFHHTZs%@@@AAA M $
199;; 7 7g 3G < <V]33"+G"4"4 
M 
MJC 3JE!%.. M!& Q QAHHTZ
%O%O%OPPPPQ !'

5$ 7 7(-(=u,9${,S,S)z))%1F1JESXZ_gq)rrr)$ueVLLLL  M  FNDDD-	0 	IIdkr   c                     t          | j        t                    s!| j        | j        | j        | j        di| _        d | j                                        D             | _        | j         d S )N)r   r4   ry   c                 4    i | ]\  }}|t          |          S r   )r~   )r'   r   r    s      r   
<dictcomp>z)as_dict_row_merge_xls.<locals>.<dictcomp>`  s(    mmmAWZ0<<mmmr   )r$   r   r   r   r4   ry   r   r   )r   s    r   as_dict_row_merge_xlsr   \  sk    di&& m_tyT\^b^j&k&kl	mm[_[d[j[j[l[lmmmDIr   c                 L   | j         dk    r$| j                            t          j                   | j        sd S t          | j                                                  d                             d          pg D ]}g }|D ]r}|	| j	        rd}t          |t                    st          |          }|                    |                    dd                              | j                              s| j                            dd                    |          z             d S )	Nz	utf-8-sigr   r   ra   "z""s   "%s"
s   ",")r   r   r   codecsBOM_UTF8r   r%   r   r   rb   r$   r   r   r   replaceencodejoin)r   r   out_rowrg   s       r   as_csvr   d  s    
 }##&/***9 DI$$&&''*..v66<" < < 	K 	KE}!5}eZ00 #E

NN5==d33::4=IIJJJJ)fkk'&:&::;;;;< <r   )"r   rU   rC   r   collectionsr   rn   rG   r   rc   compatr   r   objectr	   r   r   propertyr!   r&   r7   r3   r]   r_   rj   rm   rz   r~   r   r   r   r   r   r   r   r   r   <module>r      sK               ) ) ) ) ) ) # # # # # # # #	 	 	 	 	F 	 	 		 	 	 	 	& 	 	 	       
 
  
[ [ [o o oG G G
  D  B  $< < <.    (B (B (BV 
  
@ 
$ $ 
$N 
. . 
.b 
  
 
< < 
< < <r   