B
    CVvg	  ã               @   s2   d dl mZ eƒ ZG dd„ dƒZG dd„ dƒZdS )é    )Úchecksc               @   s<   e Zd ZdZdd„ Zefdd„Zdd„ Zdd	„ Zd
d„ Z	dS )ÚFieldCacheMixinz?Provide an API for working with the model's fields value cache.c             C   s   t ‚d S )N)ÚNotImplementedError)Úself© r   úB/tmp/pip-install-o3oxmrkh/Django/django/db/models/fields/mixins.pyÚget_cache_name	   s    zFieldCacheMixin.get_cache_namec             C   s8   |   ¡ }y|jj| S  tk
r2   |tkr.‚ |S X d S )N)r   Ú_stateÚfields_cacheÚKeyErrorÚNOT_PROVIDED)r   ÚinstanceÚdefaultZ
cache_namer   r   r   Úget_cached_value   s    z FieldCacheMixin.get_cached_valuec             C   s   |   ¡ |jjkS )N)r   r	   r
   )r   r   r   r   r   Ú	is_cached   s    zFieldCacheMixin.is_cachedc             C   s   ||j j|  ¡ < d S )N)r	   r
   r   )r   r   Úvaluer   r   r   Úset_cached_value   s    z FieldCacheMixin.set_cached_valuec             C   s   |j j|  ¡ = d S )N)r	   r
   r   )r   r   r   r   r   Údelete_cached_value   s    z#FieldCacheMixin.delete_cached_valueN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r   r   r   r      s   	r   c                   s(   e Zd ZdZdd„ Z‡ fdd„Z‡  ZS )ÚCheckFieldDefaultMixin)z<valid default>z<invalid default>c             C   sH   |   ¡ r@| jd k	r@t| jƒs@tjd| jjf d| j | dd�gS g S d S )Nzk%s default should be a callable instead of an instance so that it's not shared between all field instances.z7Use a callable instead, e.g., use `%s` instead of `%s`.zfields.E010)ZhintÚobjÚid)Zhas_defaultr   Úcallabler   ÚWarningÚ	__class__r   Ú_default_hint)r   r   r   r   Ú_check_default"   s    

z%CheckFieldDefaultMixin._check_defaultc                s    t ƒ jf |Ž}| |  ¡ ¡ |S )N)ÚsuperÚcheckÚextendr   )r   ÚkwargsÚerrors)r   r   r   r!   5   s    zCheckFieldDefaultMixin.check)r   r   r   r   r   r!   Ú__classcell__r   r   )r   r   r      s   r   N)Zdjango.corer   Úobjectr   r   r   r   r   r   r   Ú<module>   s   