
    Hf                         d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	 ddl
mZ dZdZd	Zdd
ZddZefdZefdZefdZefdZefdZefdZddZddZdS )z
    pyexcel.cookbook
    ~~~~~~~~~~~~~~~~~~~

    Cookbook for pyexcel

    :copyright: (c) 2014-2022 by Onni Software Ltd.
    :license: New BSD License, see LICENSE for more details
    N)Book)save_asget_book	get_sheet)OrderedDict)MESSAGE_WARNINGzpyexcel_merged.csvz
merged.xlsz
pyexcel_%sc                    t           | z  }|r|}t          j                            |          rt	          t
                    t          | d          }|j        }|                                D ]@}|	                    t          |                    }|                    |||                    A|                    |           dS )aZ  Update one or more columns of a data file with series

    The data structure of column_dicts should be:
    key should be first row of the column
    the rest of the value should an array
    :param str infilename: an accessible file name
    :param dict column_dicts: dictionaries of columns
    :param str outfilename: save the sheet as


    r   )	file_namename_columns_by_rowN)OUT_FILE_FORMATTERospathexistsNotImplementedErrorr   r   colnameskeysindexstrset_column_atr   )
infilenamecolumn_dictsoutfilenamedefault_out_filesheetserieskr   s           R/var/www/ffwdstore.be/apps/py-env/lib/python3.11/site-packages/pyexcel/cookbook.pyupdate_columnsr      s     *J6 '&	w~~&'' 3!/222
BBBE^F   4 4SVV$$E<?3333	MM"#####    c                    t           | z  }|r|}t          j                            |          rt	          t
                    t          | d          }|j        }|                                D ]@}|	                    t          |                    }|                    |||                    A|                    |           dS )a3  Update one or more rows of a data file with series

    datastucture: key should an integer of the row to be updated
    value should be an array of the data
    :param str infilename: an accessible file name
    :param dict row_dicts: dictionaries of rows
    :param str outfilename: save the sheet as
    r   )r
   name_rows_by_columnN)r   r   r   r   r   r   r   rownamesr   r   r   
set_row_atr   )r   	row_dictsr   r   r   r   r   r   s           r   update_rowsr%   /   s     *J6 '&	w~~&'' 3!/222
BBBE^F^^ . .SVV$$	!----	MM"#####r   c                 t   t           j                            |          rt          t                    g }| D ]F}t          |          }|                    t          |                                                     Gt          |          }|	                                 |
                    |           |S )zdmerge many files horizontally column after column
    :param str outfilename: save the sheet as
    r
   )array)r   r   r   r   r   r   extendlistcolumns	transposer   )
file_arrayr   contentr
   r   merged_sheets         r   merge_filesr0   E   s     
w~~k"" 3!/222G . .	I...tEMMOO,,----7+++L%%%r   c                     t           j                            |          rt          t                    | |g}t          ||           dS )zmerge two files

    :param str file1: an accessible file name
    :param str file2: an accessible file name
    :param str outfilename: save the sheet as
    N)r   r   r   r   r   r0   )file1file2r   filess       r   merge_two_filesr5   U   sG     
w~~k"" 3!/222ENE{#####r   c                     t           j                            |          rt          t                    t                      }| D ]}|                    |j                   t          ||           dS )zmerge many readers

    With FilterableReader and SeriesReader, you can do custom filtering
    :param str outfilename: save the sheet as
    )dest_file_nameadictN)	r   r   r   r   r   r   updatedictr   )reader_arrayr   r.   readers       r   merge_readersr=   b   sp     
w~~k"" 3!/222mmG $ $v{####;g666666r   c                     t           j                            |          rt          t                    | |g}t          ||           dS )zFmerge two readers

    :param str outfilename: save the sheet as

    N)r   r   r   r   r   r=   )reader1reader2r   r;   s       r   merge_two_readersrA   p   sH     
w~~k"" 3!/222W%L,,,,,,r   c                     t                      }| D ]@}t          |          }t          j                            |          \  }}||_        ||z  }A|                    |           dS )zmerge a list of csv files into a excel book

    :param list filelist: a list of accessible file path
    :param str outfilename: save the sheet as
    r'   N)r   r   r   r   splitnamer   )filelistr   mergedr
   r   _tails          r   merge_csv_to_a_bookrI   |   sm     VVF  	I...'--	**4
%
NN;r   c                 |    t                      }| D ]}|t          |          z  }|                    |           dS )zmerge a list of excel files into a excel book

    :param list filelist: a list of accessible file path
    :param str outfilename: save the sheet as
    r'   N)r   r   r   )rE   r   rF   r
   s       r   merge_all_to_a_bookrK      sK     VVF 0 0	(Y////
NN;r   c                     t          |           }|r|}n| }|D ]#}|j        d|}|                    |           $dS )zSplit a file into separate sheets

    :param str file_name: an accessible file name
    :param str outfilename: save the sheets with file suffix
    r'   rG   N)r   rD   r   )r
   r   booksaveasr   filenames         r   split_a_bookrP      sh     i(((D     #jjj&&1h   r   c                 |    t          |           }|r|}n| }||         }|d|} |                    |            dS )zExtract a sheet from a excel book

    :param str file_name: an accessible file name
    :param str sheetname: a valid sheet name
    :param str outfilename: save the sheet as
    r'   rG   N)r   r   )r
   	sheetnamer   rM   rN   r   s         r   extract_a_sheet_from_a_bookrS      sY     i(((D OE$99ff-I	MM)r   )N)__doc__r   pyexcel.bookr   pyexcel.corer   r   r   pyexcel._compactr   pyexcel.constantsr   DEFAULT_OUT_FILEDEFAULT_OUT_XLS_FILEr   r   r%   r0   r5   r=   rA   rI   rK   rP   rS    r   r   <module>r\      ss    
			       5 5 5 5 5 5 5 5 5 5 ( ( ( ( ( ( - - - - - -' # ! $ $ $ $2$ $ $ $, )9      /? 
$ 
$ 
$ 
$ -= 7 7 7 7 5E 	- 	- 	- 	- /C         /C 	  	  	  	              r   