U
    .R”i  ã                   @   sr   d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
 d dlmZmZmZ G dd„ dƒZG dd	„ d	eƒZd
S )é    )Úchain)ÚSerialisable)ÚMinMaxÚTypedÚStringÚStrict)Ú	Worksheet)Úget_column_letterÚrange_to_tupleÚquote_sheetnamec                   @   s   e Zd Zdd„ ZdS )ÚDummyWorksheetc                 C   s
   || _ d S ©N)Útitle)Úselfr   © r   ú</tmp/pip-unpacked-wheel-r0v169r1/openpyxl/chart/reference.pyÚ__init__   s    zDummyWorksheet.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s   r   c                   @   s¬   e Zd ZdZedded�Zedded�Zedded�Zedded�Z	e
dd�Zdd	d
„Zdd„ Zdd„ ZeZdd„ Zdd„ Zedd„ ƒZedd„ ƒZdd„ Zedd„ ƒZdS )Ú	Referencez)
    Normalise cell range references
    é   i@B )ÚminÚmaxZexpected_typei @  T)Ú
allow_noneNc           	      C   sb   |d k	r(t |ƒ\}}|\}}}}t|ƒ}|| _|| _|| _|d krF|}|| _|d krX|}|| _d S r   )r
   r   Ú	worksheetÚmin_colÚmin_rowÚmax_colÚmax_row)	r   r   r   r   r   r   Úrange_stringÚ	sheetnameZ
boundariesr   r   r   r   '   s    zReference.__init__c                 C   s   t | ƒS r   ©Ústr©r   r   r   r   Ú__repr__?   s    zReference.__repr__c                 C   sD   d}| j | jkr | j| jkr d}| | jt| j ƒ| jt| jƒ| j¡S )Nz{0}!${1}${2}:${3}${4}z{0}!${1}${2})r   r   r   r   Úformatr!   r	   )r   Úfmtr   r   r   Ú__str__C   s    
ÿ  þzReference.__str__c                 C   s,   | j | jkrd| j | j S d| j | j  S )Nr   )r   r   r   r   r$   r   r   r   Ú__len__R   s    zReference.__len__c                 C   s   t | ƒt |ƒkS r   r"   )r   Úotherr   r   r   Ú__eq__X   s    zReference.__eq__c                 c   s4   t | j| jd ƒD ]}t| j| j|| j|ƒV  qdS )z.
        Return all rows in the range
        r   N)Úranger   r   r   r   r   r   )r   Úrowr   r   r   Úrows\   s    zReference.rowsc                 c   s4   t | j| jd ƒD ]}t| j|| j|| jƒV  qdS )z1
        Return all columns in the range
        r   N)r,   r   r   r   r   r   r   )r   Úcolr   r   r   Úcolse   s    zReference.colsc                 C   sB   d  t| jƒ| j¡}| j| jkr0|  jd7  _n|  jd7  _|S )z2
        Return and remove the first cell
        z{0}{1}r   )r&   r	   r   r   r   )r   Úcellr   r   r   Úpopn   s
    zReference.popc                 C   s   t | jjƒS r   )r   r   r   r$   r   r   r   r!   z   s    zReference.sheetname)NNNNNN)r   r   r   Ú__doc__r   Úintr   r   r   r   r   r    r   r%   r(   r)   r+   Úpropertyr.   r0   r2   r!   r   r   r   r   r      s2   
      ú


r   N)Ú	itertoolsr   Z!openpyxl.descriptors.serialisabler   Zopenpyxl.descriptorsr   r   r   r   Zopenpyxl.worksheet.worksheetr   Zopenpyxl.utilsr	   r
   r   r   r   r   r   r   r   Ú<module>   s   