U
    cqe                     @   s0   d Z G dd deZeedddZdd ZdS )	zObjects shared by opc modules.c                       s8   e Zd ZdZ fddZ fddZ fddZ  ZS )CaseInsensitiveDictaL  Mapping type that behaves like dict except that it matches without respect to the
    case of the key.

    E.g. cid['A'] == cid['a']. Note this is not general-purpose, just complete enough to
    satisfy opc package needs. It assumes str keys, and that it is created empty; keys
    passed in constructor are not accounted for
    c                    s   t t| | S N)superr   __contains__lowerselfkey	__class__ 3/tmp/pip-unpacked-wheel-gx5hpqp3/docx/opc/shared.pyr      s    z CaseInsensitiveDict.__contains__c                    s   t t| | S r   )r   r   __getitem__r   r   r	   r   r   r      s    zCaseInsensitiveDict.__getitem__c                    s   t t| | |S r   )r   r   __setitem__r   )r   r   valuer	   r   r   r      s    zCaseInsensitiveDict.__setitem__)__name__
__module____qualname____doc__r   r   r   __classcell__r   r   r	   r   r      s   r   clsmethod_namec                 C   s
   t | |S )z,Return method of `cls` having `method_name`.)getattrr   r   r   r   cls_method_fn   s    r   c                    s*   dj   j} fdd}t||dS )z@lazyprop decorator.

    Decorated method will be called only on first access to calculate a cached property
    value. After that, the cached value is returned.
    z_%sc                    s>   zt |  W S  tk
r8   | }t|  | | Y S X d S r   )r   AttributeErrorsetattr)objr   Zcache_attr_namefr   r   get_prop_value%   s    z$lazyproperty.<locals>.get_prop_value)doc)r   r   property)r   Z	docstringr   r   r   r   lazyproperty   s    
r"   N)r   dictr   typestrr   r"   r   r   r   r   <module>   s   