U
    f                     @   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-unpacked-wheel-_jot26k8/django/db/models/fields/mixins.pyget_cache_name	   s    zFieldCacheMixin.get_cache_namec                 C   s>   |   }z|jj| W S  tk
r8   |tkr0 | Y S X d S r   )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 r   )r
   r   r   r   r   r   r   r	   	is_cached   s    zFieldCacheMixin.is_cachedc                 C   s   ||j j|  < d S r   r   r   r
   )r   r   valuer   r   r	   set_cached_value   s    z FieldCacheMixin.set_cached_valuec                 C   s   |j j|  = d S 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)hintobjid)Zhas_defaultr   callabler   Warning	__class__r   _default_hintr   r   r   r	   _check_default"   s$    z%CheckFieldDefaultMixin._check_defaultc                    s    t  jf |}||   |S r   )supercheckextendr$   )r   kwargserrorsr"   r   r	   r&   8   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   