
    Hf*                     X    d Z ddlZddlZddlmZ ddlmZ  G d dej	                  Z
dS )z
    pyexcel.internal.sheets.row
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Generic table row

    :copyright: (c) 2015-2022 by Onni Software Ltd.
    :license: New BSD License
    N)_compact   )_sharedc                   P    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 ZddZd Zd
S )Rowa[  Represent row of a matrix

    .. table:: "example.csv"

        = = =
        1 2 3
        4 5 6
        7 8 9
        = = =

    Above column manipulation can be performed on rows similarly. This section
    will not repeat the same example but show some advance usages.


        >>> import pyexcel as pe
        >>> data = [[1,2,3], [4,5,6], [7,8,9]]
        >>> m = pe.internal.sheets.Matrix(data)
        >>> m.row[0:2]
        [[1, 2, 3], [4, 5, 6]]
        >>> m.row[0:3] = [0, 0, 0]
        >>> m.row[2]
        [0, 0, 0]
        >>> del m.row[0:2]
        >>> m.row[0]
        [0, 0, 0]

    c                 &   g }t          j        |t                    r t          j        || j        j                  }n|}g }| j                                        D ]}||vr|                    |           | j        	                    |           dS )a,  Delete row indices other than specified

        Examples:

            >>> import pyexcel as pe
            >>> data = [[1],[2],[3],[4],[5],[6],[7],[9]]
            >>> sheet = pe.Sheet(data)
            >>> sheet
            pyexcel sheet:
            +---+
            | 1 |
            +---+
            | 2 |
            +---+
            | 3 |
            +---+
            | 4 |
            +---+
            | 5 |
            +---+
            | 6 |
            +---+
            | 7 |
            +---+
            | 9 |
            +---+
            >>> sheet.row.select([1,2,3,5])
            >>> sheet
            pyexcel sheet:
            +---+
            | 2 |
            +---+
            | 3 |
            +---+
            | 4 |
            +---+
            | 6 |
            +---+

        row_indicesN)
compactis_array_typestrutilsnames_to_indices_refrownames	row_rangeappendfilter)selfindicesnew_indices	to_removeindexs        ]/var/www/ffwdstore.be/apps/py-env/lib/python3.11/site-packages/pyexcel/internal/sheets/row.pyselectz
Row.select/   s    R  #.. 	"0$):LMMKK!K	Y((** 	( 	(EK''  '''	Y/////    c                    t          j        t          |                    r| j                            |           dS t          j        |          rHt          j        t          |          | j        j	                  }| j        
                    |           dS t          |t                    rHt          j        || j                                                  }| j        
                    |           dS t          |t                    r*| j                            t          |                     dS t          |t                    r| j                            |           dS t          |t"          j                  r|                     |           dS t          |t"          j                  r|                     |           dS | j        
                    |g           dS )a%  Override the operator to delete items

        Examples:

            >>> import pyexcel as pe
            >>> data = [[1],[2],[3],[4],[5],[6],[7],[9]]
            >>> sheet = pe.Sheet(data)
            >>> sheet
            pyexcel sheet:
            +---+
            | 1 |
            +---+
            | 2 |
            +---+
            | 3 |
            +---+
            | 4 |
            +---+
            | 5 |
            +---+
            | 6 |
            +---+
            | 7 |
            +---+
            | 9 |
            +---+
            >>> del sheet.row[1,2,3,5]
            >>> sheet
            pyexcel sheet:
            +---+
            | 1 |
            +---+
            | 5 |
            +---+
            | 7 |
            +---+
            | 9 |
            +---+

        r	   N)r   	is_stringtyper   delete_named_row_atis_tuple_consists_of_stringsr   r   listr   delete_rows
isinstancesliceanalyse_slicenumber_of_rowstupler   types
LambdaType_delete_rows_by_contentFunctionType)r   locatorr   my_ranges       r   __delitem__zRow.__delitem__c   s   R T']]++ 	-I))'222221':: 	-,T']]DI<NOOGI!!'*****'' 	-*7DI4L4L4N4NOOHI!!(+++++'' 		-I$w--99999&& 	-I11111!122 	-((11111!344 	-((11111I!!7),,,,,r   c                     |}|| j         j        vr6|                    dd          }|| j         j        vrt          d|z            | j                             |          S )z)
        Refer to sheet.row.name
        _ z%s is not found)r   r   replaceAttributeErrornamed_row_at)r   attrthe_attrs      r   __getattr__zRow.__getattr__   sh     ty)))''S11Hty111$%6%=>>>y%%h///r   c                    g }t          | j                                                  D ]&\  }} |||          r|                    |           't	          |          dk    r| j                            |           d S d S Nr   )	enumerater   rowsr   lenr#   )r   r-   r   r   rows        r   r+   zRow._delete_rows_by_content   s    	#DINN$4$455 	( 	(JE3wuc"" (  '''y>>AI!!),,,,, r   c                 ~   t          j        t          |                    r| j                            ||           dS t          |t                    rNt          j        || j        	                                          }|D ]}| j        
                    ||           dS | j        
                    ||           dS )z"Override the operator to set itemsN)r   r   r   r   set_named_row_atr$   r%   r   r&   r'   
set_row_at)r   aslicea_rowr.   is        r   __setitem__zRow.__setitem__   s    T&\\** 	0I&&vu55555&& 	0*6493K3K3M3MNNH / /	$$Q..../ / I  /////r   c                    |}t          j        t          |                    r| j                            |          S t          |t                    rbt          j        || j        	                                          }g }|D ]/}|
                    | j                            |                     0|S t          |          | j                                        v r| j                            |          S t          )zNBy default, this class recognize from top to bottom
        from left to right)r   r   r   r   r5   r$   r%   r   r&   r'   r   row_atabsr   
IndexError)r   rB   r   r.   resultsrD   s         r   __getitem__zRow.__getitem__   s     T&\\** 	9))&111&& 	*6493K3K3M3MNNHG 4 4ty//223333Nu::,,....9##E***r   c                    t          |t          j                  r-| j                            t          j        |                     nt          |t                    r-| j                            t          j        |                     nVt          |d          r?| j                            t          j        |	                                                     nt          | S )z0Overload += sign

        :return: self
        get_internal_array)r$   r   OrderedDictr   extend_rowscopydeepcopyr"   hasattrrM   	TypeError)r   others     r   __iadd__zRow.__iadd__   s    
 eW011 	I!!$-"6"67777t$$ 	I!!$-"6"67777U011 	I!!$-0H0H0J0J"K"KLLLLOr   c                    | j                                         }t          |t          j                  r(|                    t          j        |                     nt          |t                    r(|                    t          j        |                     nQt          |d          r:|                    t          j        |
                                                     nt          |S )z7Overload + sign

        :return: new instance
        rM   )r   cloner$   r   rN   rO   rP   rQ   r"   rR   rM   rS   )r   rT   new_instances      r   __add__zRow.__add__   s    
 y((eW011 	$$T]5%9%9::::t$$ 	$$T]5%9%9::::U011 	$$T]53K3K3M3M%N%NOOOOOr   Nc                     ||                      ||           dS |r'|D ]&}|                      |d         |d                    %dS dS )zFormat a rowNr   r   )_handle_one_formatter)r   	row_index	formatterformat_specsspecs        r   formatz
Row.format   sp     &&y)<<<<< 	=$ = =**47DG<<<<	= 	== =r   c                    |}t          | j        j                  dk    rt          j        || j        j                  }t          j                            |          }t          |t                    r| j        	                                D ]d}||v r^| j        
                                D ]D}| j                            ||          } ||          }| j                            |||           Eed S | j        
                                D ]D}| j                            ||          } ||          }| j                            |||           Ed S r:   )r=   r   r   r   r   CommonPropertyAmongRowNColumnget_converterr$   r"   r   column_range
cell_value)r   r<   theformatterr   	converterrindexcolumnvalues           r   r[   zRow._handle_one_formatter   so   ty!""Q&&0ty7IJJK7EE
 
	 k4(( 	A)--// D D[(("&)"8"8":": D D $	 4 4VV D D )	% 0 0	,,VVUCCCCD D )0022 A A	,,[&AA!	%((	$$[&%@@@@A Ar   )NNN)__name__
__module____qualname____doc__r   r/   r8   r+   rE   rK   rU   rY   r`   r[    r   r   r   r      s         820 20 20h:- :- :-x
0 
0 
0- - -	0 	0 	0  $     = = = =A A A A Ar   r   )rn   rP   r)   pyexcelr   r    r   r   rb   r   ro   r   r   <module>rr      s       ' ' ' ' ' '      xA xA xA xA xA%
- xA xA xA xA xAr   