
    g	                     f    d dl Z d dlmZ d dlmZ d dlmZ  e       Z G d d      Z	 G d d      Z
y)	    N)checks)RemovedInDjango60Warning)cached_propertyc                   B    e Zd ZdZd Zed        ZefdZd Z	d Z
d Zy)	FieldCacheMixinu   
    An API for working with the model's fields value cache.

    Subclasses must set self.cache_name to a unique entry for the cache -
    typically the field’s name.
    c                     t         N)NotImplementedErrorselfs    v/var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/db/models/fields/mixins.pyget_cache_namezFieldCacheMixin.get_cache_name   s    !!    c                     | j                         }t        j                  d| j                  j                   dt
        d       |S )Nz	Override z(.cache_name instead of get_cache_name().   )
stacklevel)r   warningswarn	__class____qualname__r   )r   
cache_names     r   r   zFieldCacheMixin.cache_name   sH     ((*
334 5   $		
 r   c                 ~    	 |j                   j                  | j                     S # t        $ r |t        u r |cY S w xY wr	   )_statefields_cacher   KeyErrorNOT_PROVIDED)r   instancedefaults      r   get_cached_valuez FieldCacheMixin.get_cached_value#   s?    	??//@@ 	,&N	s   "% <<c                 F    | j                   |j                  j                  v S r	   )r   r   r   r   r   s     r   	is_cachedzFieldCacheMixin.is_cached+   s    (//">">>>r   c                 J    ||j                   j                  | j                  <   y r	   r   r   r   )r   r   values      r   set_cached_valuez FieldCacheMixin.set_cached_value.   s    8=$$T__5r   c                 F    |j                   j                  | j                  = y r	   r$   r!   s     r   delete_cached_valuez#FieldCacheMixin.delete_cached_value1   s    OO((9r   N)__name__
__module__r   __doc__r   r   r   r   r   r"   r&   r(    r   r   r   r   
   s9    " 
 
 2> ?>:r   r   c                   (     e Zd ZdZd Z fdZ xZS )CheckFieldDefaultMixin)z<valid default>z<invalid default>c                     | j                         r_| j                  St        | j                        s>t        j                  | j
                  j                  dd| j                  z  | d      gS g S )Nzi 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)has_defaultr   callabler   Warningr   r)   _default_hintr   s    r   _check_defaultz%CheckFieldDefaultMixin._check_default8   sr    (T\\*  ~~..1 "&"4"45 $
  Ir   c                 d    t        |   di |}|j                  | j                                |S )Nr,   )supercheckextendr7   )r   kwargserrorsr   s      r   r:   zCheckFieldDefaultMixin.checkN   s.    ((d))+,r   )r)   r*   r   r6   r7   r:   __classcell__)r   s   @r   r.   r.   5   s    <M, r   r.   )r   django.corer   django.utils.deprecationr   django.utils.functionalr   objectr   r   r.   r,   r   r   <module>rC      s-      = 3x(: (:V r   