
    Hf                         d Z ddlZddlZddlmZ ddlmZ ddlmZ  G d de	          Z
d	 Zd
 Zd Z	 dZd Zd Zd ZdS )z
    pyexcel.internal.sheets._shared
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Locally shared utility functions

    :copyright: (c) 2015-2022 by Onni Software Ltd.
    :license: New BSD License
    N)partial)PY2   )	to_formatc                   :    e Zd ZdZd Zd Zd Zed             ZdS )CommonPropertyAmongRowNColumnz6
    Group reusable functions from row and column
    c                     || _         d S )N)_ref)selfmatrixs     a/var/www/ffwdstore.be/apps/py-env/lib/python3.11/site-packages/pyexcel/internal/sheets/_shared.py__init__z&CommonPropertyAmongRowNColumn.__init__   s    			    c                      t          d          )NzNot implemented)NotImplementedErrorr   others     r   __iadd__z&CommonPropertyAmongRowNColumn.__iadd__   s    !"3444r   c                 :    |                      |           | j        S )z/Overload + sign

        :return: self
        )r   r
   r   s     r   __add__z%CommonPropertyAmongRowNColumn.__add__   s    
 	eyr   c                 n    d}t          | t          j                  r| }nt          t          |           }|S )z3return the actual converter or a built-in converterN)
isinstancetypesFunctionTyper   r   )theformatter	converters     r   get_converterz+CommonPropertyAmongRowNColumn.get_converter&   s:     	lE$677 	9$II	<88Ir   N)	__name__
__module____qualname____doc__r   r   r   staticmethodr    r   r   r   r      sf           5 5 5     \  r   r   c                 8   | j         d}nt          | j         d          }| j        |}nt          | j        |          }||k    rt          ||k     rE| j        rt          ||| j                  }nt          ||          }t          st          |          }n|g}|S )z-An internal function to analyze a given sliceNr   )	startmaxstopmin
ValueErrorstepranger   list)asliceupper_boundr%   r'   my_ranges        r   analyse_slicer0   1   s    |FL!$${6;,,t||	; 	*UD&+66HHUD))H 	&H~~H7Or   c                 n    t          |           dk     rdS t          |                                           S )z+translate MS excel column position to indexr   )len
_get_indexupper)index_charss    r   excel_column_indexr7   J   s4    
;!r+++--...r   c                     t          |           dk     rdS t          j        d|           }|rGt          |                    d                    dz
  t          |                    d                    fS t          )z$translate MS excel position to index   )r2   r2   z([A-Za-z]+)([0-9]+)r   )r3   rematchintgroupr7   
IndexError)	pos_charsr=   s     r   excel_cell_positionr@   R   sm    
9~~vH*I66E 5;;q>>""Q&(:5;;q>>(J(JJJr   ABCDEFGHIJKLMNOPQRSTUVWXYZc                    t          |           }t          t                    }|dk    rvd}t          d|          D ]a}||dz
  k     r3|t                              | |                   dz   ||dz
  |z
  z  z  z  }>|t                              | |                   z  }b|S t                              | d                   S )Nr   r   )r3   _INDICESr+   index)r6   lengthindex_chars_lengthrD   is        r   r4   r4   d   s    FXzzq&!! 	8 	8AFQJ(..Q881<&6A:>:  A777~~k!n---r   c                     t          | t                    r                    |           }nAt          | t                    r*t          | d         t                    rfd| D             }n| S |S )ztranslate names to indicesr   c                 :    g | ]}                     |          S r#   )rD   ).0astrseriess     r   
<listcomp>z$names_to_indices.<locals>.<listcomp>{   s%    888$6<<%%888r   )r   strrD   r,   )namesrL   indicess    ` r   names_to_indicesrQ   u   st    % ,,u%%	E4	 	  Za#%>%> 8888%888Nr   c                     | dk     r| dz  S | S )Nr   r2   r#   )values    r   absrT      s    qyyrz r   )r!   r:   r   	functoolsr   pyexcel._compactr   
formattersr   objectr   r0   r7   r@   rC   r4   rQ   rT   r#   r   r   <module>rY      s     
			                    ! ! ! ! ! !    F   <  2/ / /   (. . ."	 	 	    r   