+
    VjT                    8   ^ RI Ht ^ RIt^ RIHtHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHtHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHtHtHtHtHt ^ RI H!t! ^RI"H#t# ^RI$H%t%H&t& ]PN                  ]PP                  ]PR                  PT                  ]PV                  ]PX                  ]PZ                  ]P\                  ]P^                  ]P`                  ]Pb                  ]Pd                  ]Pf                  ]Ph                  ]Pj                  Pl                  ]Pj                  Pn                  ]Pp                  Pr                  ]Pp                  Pt                  3t; ! R R4      t<R R lt=R R lt> ! R R4      t? ! R R4      t@ ! R R4      tA ! R R4      tBR# )    )annotationsN)Anycast)Sequence)forms)ImproperlyConfigured)Modelfields)	force_str)Promise)override)settings)fallbacks_enabled)build_localized_fieldname"build_localized_intermediary_modelbuild_localized_verbose_nameget_languageresolution_order)ClearableWidgetWrapper)Self)	is_hiddenclear_ForeignObjectRel_cachesc                      ] tR t^6tRtRtR# )NONEz
Used for fallback options when they are not provided (``None`` can be
given as a fallback or undefined value) or to mark that a nullable value
is not yet known and needs to be computed (e.g. field default).
 N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       L/var/www/idalgo/venv/lib/python3.14/site-packages/modeltranslation/fields.pyr   r   6   s     	r"   r   c               (    V ^8  d   QhRRRRRRRR/# )   modelztype[Model]
field_namestrlangempty_valuer   r   )formats   "r#   __annotate__r,   @   s/     ] ]K ]S ] ]Z] ]r"   c                   VRRR\         39  d   \        RV,          4      h\        \        P                  V P
                  P                  V4      4      pVP                  P                  p\        V\        4      '       g(   V\        P                  9   g   \        RV,          4      h\        VP                  4      pV! WBVR7      # )a  
Translation field factory. Returns a ``TranslationField`` based on a
fieldname and a language.

The list of supported fields can be extended by defining a tuple of field
names in the projects settings.py like this::

    MODELTRANSLATION_CUSTOM_FIELDS = ('MyField', 'MyOtherField',)

If the class is neither a subclass of fields in ``SUPPORTED_FIELDS``, nor
in ``CUSTOM_FIELDS`` an ``ImproperlyConfigured`` exception will be raised.
 bothNz%s is not a valid empty_value.z(%s is not supported by modeltranslation.)translated_fieldlanguager*   )r   r   r   r
   Field_meta	get_field	__class__r   
isinstanceSUPPORTED_FIELDSmt_settingsCUSTOM_FIELDSfield_factory)r&   r'   r)   r*   fieldcls_nametranslation_classs   &&&&   r#   create_translation_fieldr>   @   s     2vtT22"#Ck#QRRu{{44Z@AE''Hu.//8{?X?X3X"#MPX#XYY%eoo6eP[\\r"   c                    V ^8  d   QhRRRR/# )r%   	baseclassztype[fields.Field]returnztype[TranslationField]r   )r+   s   "r#   r,   r,   W   s     $ $/ $4J $r"   c                V     ! R  R\         V 4      pRV P                  ,          Vn        V# )c                      ] tR t^XtRtR# )/field_factory.<locals>.TranslationFieldSpecificr   N)r   r   r   r   r!   r   r"   r#   TranslationFieldSpecificrD   X   s    r"   rE   zTranslation%s)TranslationFieldr   )r@   rE   s   & r#   r:   r:   W   s-    #3Y  )8):L:L(L%##r"   c                     a  ] tR t^atRtR R ltR V 3R lltR R ltR R	 ltR
 V 3R llt	R V 3R llt
RR V 3R llltR R ltR R ltRtV ;t# )rF   a  
The translation field functions as a proxy to the original field which is
wrapped.

For every field defined in the model's ``TranslationOptions`` localized
versions of that field are added to the model depending on the languages
given in ``settings.LANGUAGES``.

If for example there is a model ``News`` with a field ``title`` which is
registered for translation and the ``settings.LANGUAGES`` contains the
``de`` and ``en`` languages, the fields ``title_de`` and ``title_en`` will
be added to the model class. These fields are realized using this
descriptor.

The translation field needs to know which language it contains therefore
that needs to be specified when the field is created.
c               0    V ^8  d   QhRRRRRRRRRRR	R
/# )r%   r0   fields.Fieldr1   r(   r*   r   argskwargsrA   Noner   )r+   s   "r#   r,   TranslationField.__annotate__t   sV     @I @I&@I @I 	@I
 @I @I 
@Ir"   c                	  a ^ RI Hp V P                  P                  VP                  4       Wn        W n        W0n        V\        J d   VP                  '       d   RMRV n        \        V \        P                  4      '       g   RV n        V P                  pRV n        VP                  V P                  4      pVP                  '       dk   VP                  p	\        V	\         \"        34      '       d   V P
                  V	9   d   Wpn        M* WP
                  ,          p
V P(                  V
9   d   Wpn        \+        V P                  P(                  V4      V n        V P,                  V n        V P                  P.                  '       d7   \+        V P                  P.                  V4      V n        V P.                  V n        \3        VP4                  V4      V n        V P6                  '       d   \9        V P6                  4       \        V P                  \        P:                  P<                  4      '       Ed   \?        V P6                  R4      '       Ed   \@        P@                  ! V P6                  4      V n        V P6                  PB                  '       d   V P6                  P                  R8X  g_   V P6                  P                  V P                  PD                  PF                  8X  g&   V P6                  P                  V P                  8X  d%   RV P(                  ,          V P6                  n$        EM0\K        V P6                  4      '       dO   R	PM                  V P                  PN                  PQ                  4       V P(                  4      V P6                  n$        MV P6                  PH                  f}   \+        V PS                  4       V P
                  4      oV3R
 lV n)        RPM                  \+        V P                  PN                  PQ                  4       V4      4      V P6                  n$        M3\+        V P6                  PU                  4       V4      V P6                  n$        \W        V P6                  PX                  V4      V P6                  n,        W P6                  n-        \?        V P6                  P                  PD                  R4      '       d#   V P6                  P                  PD                  =.R# R# V P6                  '       Ed-   \K        V P6                  4      '       Eg   V P6                  PU                  4       p\@        P@                  ! V P6                  4      V n        V P6                  PH                  f0   \+        V PS                  4       V P
                  4      oV3R lV n)        \+        WP
                  4      V P6                  n$        W P6                  n-        \?        V P6                  P                  PD                  R4      '       d#   V P6                  P                  PD                  =.R# R# R# R#   \$         d    T	P'                  RR4      p
 EL5i ; i)r   )
translatorNr.   Tdefaultthroughselfz%s_rel_+z_{}_{}_+c                    < S # Nr   loc_related_query_names   r#   <lambda>+TranslationField.__init__.<locals>.<lambda>   s    6Lr"   z{}_set_related_objects_cachec                    < S # rT   r   rU   s   r#   rW   rX      s    2Hr"   r   )/modeltranslation.translatorrO   __dict__updater0   r1   r*   r   nullr6   r
   BooleanFieldblankget_options_for_modelr&   required_languagestuplelistKeyErrorgetnamer   attname	db_columncolumnr   verbose_nameremote_fieldr   relatedManyToManyFieldhasattrcopysymmetricalr3   object_namerelated_namer   r+   r   lowerrelated_query_nameget_accessor_namer   rQ   r;   rY   )rR   r0   r1   r*   rJ   rK   rO   original_blank
trans_optsrb   
req_fieldscurrentrV   s   &&&&*,      @r#   __init__TranslationField.__init__t   s    	; 	-667 !1 &$'7'<'<'<t"D $ 3 344 DI
 
  55djjA
(((!+!>!>,udm<<==$66!/JG!3MM!BJ 99
* "0J 11F1F1K1KXVLL	  ***6t7L7L7V7VX`aDN..DK 99I9V9VX`a)$*;*;< d++V^^-K-KLLQXyR
 R
 !%		$*;*; <D   ,,,!!''61$$**djj.>.>.J.JJ$$**djj81;dii1G!!.4,,--1;1B1BJJ''--/II2!!. $$119-F//14==.* /MD+5=__1$**2E2E2K2K2MxX6D%%2 6O));;=x6D%%2
 )K!!))8)D% '+#t((..446NOO%%++11H P y1B1B'C'C''99;G $		$*;*; <D  --5)B++-t}}*& +I'-FwP]P]-^D*&*#t((..446NOO%%++11H P (DG   G!3!7!7	2!FJGs   X3 3YYc                    V ^8  d   QhRRRR/# r%   otherobjectrA   boolr   )r+   s   "r#   r,   rM      s     % %F %t %r"   c                	   < \        V\        P                  4      '       d<   V P                  VP                  8H  ;'       d    V P                  \        VR R4      8H  # \        SV `  V4      # )r1   N)r6   r
   r2   creation_counterr1   getattrsuper__eq__)rR   r   r5   s   &&r#   r   TranslationField.__eq__   sd    eV\\**((E,B,BB  t}}X_z4Y H  w~e$$r"   c                    V ^8  d   QhRRRR/# r~   r   )r+   s   "r#   r,   rM     s     & &F &t &r"   c                	.    V P                  V4      '       * # rT   )r   )rR   r   s   &&r#   __ne__TranslationField.__ne__  s    ;;u%%%r"   c                   V ^8  d   QhRR/# )r%   rA   intr   )r+   s   "r#   r,   rM     s     < <# <r"   c                	D    \        V P                  V P                  34      # rT   )hashr   r1   )rR   s   &r#   __hash__TranslationField.__hash__  s    T**DMM:;;r"   c                   V ^8  d   QhRR/# )r%   rA   r   r   )r+   s   "r#   r,   rM     s      S r"   c                	   < \        V P                  4      ;_uu_ 4        \        SV `  4       p\	        V\
        4      '       d   \        VR R7      pVuuRRR4       #   + '       g   i     R# ; i)T)strings_onlyN)r   r1   r   get_defaultr6   r   r   )rR   rP   r5   s   & r#   r   TranslationField.get_default  sL    dmm$$g)+G '7++#G$? %$$$s   3AA.	c               $    V ^8  d   QhRRRRRR/# )r%   rJ   r   rK   rA   zforms.Fieldr   )r+   s   "r#   r,   rM     s!     + +s +c +k +r"   c                b  < \         SV `  ! V/ VB p\        V\        P                  4      '       d   V P
                  fG   ^ RIHp VP                  p\        RVP                  ,          WE3/ 4      VR&   \         SV `  ! V/ VB pV# V P
                  R8X  d   ^ RIHp VP                  p\        RVP                  ,          We3/ 4      VR&   \         SV `  ! V/ VB p\        VP                  \        P                  \        P                  34      '       d   \        VP                  4      Vn        V# )a  
Returns proper formfield, according to empty_values setting
(only for ``forms.CharField`` subclasses).

There are 3 different formfields:
- CharField that stores all empty values as empty strings;
- NullCharField that stores all empty values as None (Null);
- NullableField that can store both None and empty string.

By default, if no empty_values was specified in model's translation options,
NullCharField would be used if the original field is nullable, CharField otherwise.

This can be overridden by setting empty_values to '' or None.

Setting 'both' will result in NullableField being used.
Textual widgets (subclassing ``TextInput`` or ``Textarea``) used for
nullable fields are enriched with a clear checkbox, allowing ``None``
values to be preserved rather than saved as empty strings.

The ``forms.CharField`` somewhat surprising behaviour is documented as a
"won't fix": https://code.djangoproject.com/ticket/9590.
)NullCharFieldzNull%s
form_classr/   )NullableFieldz
Nullable%s)r   	formfieldr6   r   	CharFieldr*   modeltranslation.formsr   r5   typer   r   widget	TextInputTextarear   )rR   rJ   rK   r   r   r   r   r5   s   &*,    r#   r   TranslationField.formfield  s   . G%t6v6	i11'@&00
'+z222]4OQS(|$ "G-t>v>	  !!V+@&00
'+ :#6#668SUW(|$ "G-t>v>	i..%..0QRR'=i>N>N'OI$r"   c               (    V ^8  d   QhRRRRRRRR/# )	r%   instancer	   datar   checkr   rA   rL   r   )r+   s   "r#   r,   rM   B  s)     3 3u 3C 3 3PT 3r"   c                	  < V'       dp   V P                   \        4       8X  dW   \        WP                  4      '       d<   V'       g4   \	        VR 4      '       g   / Vn        W!P
                  V P                  &   R# \        SV `  W4       R# )_mt_form_pending_clearN)r1   r   r   rg   ro   r   r   save_form_data)rR   r   r   r   r5   s   &&&&r#   r   TranslationField.save_form_dataB  s[     T]]ln4999U9U^b8%=>>24/9=++DII6G"82r"   c                   V ^8  d   QhRR/# )r%   rA   z.tuple[str, str, Sequence[Any], dict[str, Any]]r   )r+   s   "r#   r,   rM   S  s     - -K -r"   c                	   V P                   P                  4       w  rr4V P                  R J d   VP                  RR /4       RV9   d   V P                  VR&   VP                  \        V R/ 4      4       V P                  W#V3# )Tr^   ri   _field_options_kwargs)r0   deconstructr^   r]   ri   r   rg   )rR   rg   pathrJ   rK   s   &    r#   r   TranslationField.deconstructS  st    #'#8#8#D#D#F D99MM64.)& "&..F;gd$;R@Ayy$f,,r"   c                   V ^8  d   QhRR/# )r%   rA   r   r   )r+   s   "r#   r,   rM   \  s     $ $t $r"   c                	T    ^ RI Hp V P                  4       w  r#rEV! V4      pV! V/ VB # )r   )import_string)django.utils.module_loadingr   r   )rR   r   rg   r   rJ   rK   clss   &      r#   cloneTranslationField.clone\  s2    =#'#3#3#5 DD!D#F##r"   )rh   r`   rj   ri   r*   r1   rg   r^   ru   rl   r0   rk   )T)r   r   r   r   r    r{   r   r   r   r   r   r   r   r   r!   __classcell__)r5   s   @r#   rF   rF   a   sR    $@IN% %&< + +Z3 3"-$ $r"   rF   c                  B    ] tR tRtRtR]]3R R lltR tR tR t	R	t
R# )
TranslationFieldDescriptorid  z6
A descriptor used for the original translated field.
Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r%   r;   rI   fallback_languages!dict[str, tuple[str, ...]] | Nonefallback_valuer   fallback_undefinedrA   rL   r   )r+   s   "r#   r,   'TranslationFieldDescriptor.__annotate__i  s<     5 55 >5 	5
  5 
5r"   c                6    Wn         W n        W0n        W@n        R# )zS
Stores fallback options and the original field, so we know it's name
and default.
N)r;   r   r   r   )rR   r;   r   r   r   s   &&&&&r#   r{   #TranslationFieldDescriptor.__init__i  s     
"4,"4r"   c                   W!P                   V P                  P                  &   \        V P                  \        P
                  P                  4      '       d8   Vf   RMVP                  VP                   V P                  P                  4       &   \        VRR4      '       g   \        VRR4      '       d   R# \        V P                  P                  \        4       4      p\        WV4       R# )z9
Updates the translation field for the current language.
N_mt_initF_mt_disable)r\   r;   rg   r6   r
   rm   
ForeignKeypkget_attnamer   r   r   setattr)rR   r   valueloc_field_names   &&& r#   __set__"TranslationFieldDescriptor.__set__y  s    
 .3$**//*djj&..";";<<BG-$UZU]U]Hdjj44678Z//78]TY3Z3Z 24::??LNS%0r"   c                   \        V\        P                  P                  4      '       dJ   VP                  ;'       d6    \        V\        P                  P                  4      ;'       d    W8H  '       * # VRJ;'       d    W8g  # )z'
Check if val is considered non-empty.
N)r6   r
   files	FieldFilerg   )rR   val	undefineds   &&&r#   meaningful_value+TranslationFieldDescriptor.meaningful_value  sl     c6<<112288  9fll&<&<=RR#BR!  $333#33r"   c                   Vf   V # \         pV P                  pV\         J d   V P                  P                  4       pTp\	        \        4       V P                  4      pV FJ  p\        V P                  P                  V4      p\        WR4      pV P                  W4      '       g   KH  Vu # 	  \        4       '       d!   V P                  \         Jd   V P                  # V\         J d   V P                  P                  4       p\        V P                  \        P                  P                   4      '       dL   \        W0P                  P"                  4      '       g'   V P                  P#                  WP                  V4      # V# )z
Returns value from the translation field for the current language, or
value for some another language according to fallback languages, or the
custom fallback value, or field's default value.
N)r   r   r;   r   r   r   r   r   rg   r   r   r   r   r6   r
   r   	FileField
attr_class)	rR   r   ownerrP   r   langsr)   r   r   s	   &&&      r#   __get__"TranslationFieldDescriptor.__get__  s)    K++	jj,,.GI 1H1HID6tzzMN(D9C$$S44
	 
 4#6#6d#B&&&$**002
 $**fll&<&<==j..G G zz,,Xzz7KKNr"   )r   r   r   r;   )r   r   r   r   r    r   r{   r   r   r   r!   r   r"   r#   r   r   d  s(     AE""&5 1 4 r"   r   c                  2    ] tR tRtRtR R ltR tR tRtR# )	TranslatedRelationIdDescriptori  zV
A descriptor used for the original '_id' attribute of a translated
ForeignKey field.
c               $    V ^8  d   QhRRRRRR/# r%   r'   r(   r   r   rA   rL   r   )r+   s   "r#   r,   +TranslatedRelationIdDescriptor.__annotate__  $     5 553T5	5r"   c                	    Wn         W n        R # rT   r'   r   rR   r'   r   s   &&&r#   r{   'TranslatedRelationIdDescriptor.__init__       %"4r"   c                	2   \        4       p\        V P                  V4      pVP                  P	                  V4      P                  4       p\        WV4       VP                  P	                  V P                  4      P                  4       pW!P                  V&   R # rT   )r   r   r'   r3   r4   r   r   r\   )rR   r   r   r)   r   loc_attnamebase_attnames   &&&    r#   r   &TranslatedRelationIdDescriptor.__set__  so    ~24??DInn..~>JJLu-~~//@LLN*/,'r"   c                	   Vf   V # \        \        4       V P                  4      pV FV  p\        V P                  V4      pVP
                  P                  V4      P                  4       p\        WR 4      pVf   KT  Vu # 	  R # rT   )	r   r   r   r   r'   r3   r4   r   r   )rR   r   r   r   r)   r   r   r   s   &&&     r#   r   &TranslatedRelationIdDescriptor.__get__  ss    K 1H1HID6tMN"..22>BNNPK(6C
  r"   r   r'   N)	r   r   r   r   r    r{   r   r   r!   r   r"   r#   r   r     s    
50r"   r   c                  2    ] tR tRtRtR R ltR tR tRtR# )	TranslatedManyToManyDescriptori  zQ
A descriptor used to return correct related manager without language fallbacks.
c               $    V ^8  d   QhRRRRRR/# r   r   )r+   s   "r#   r,   +TranslatedManyToManyDescriptor.__annotate__  r   r"   c                	    Wn         W n        R # rT   r   r   s   &&&r#   r{   'TranslatedManyToManyDescriptor.__init__  r   r"   c                	    \        V P                  \        4       4      pT;'       g    TP                  P	                  V4      P                  4       p\        T;'       g    TV4      # rT   )r   r'   r   r3   r4   r   r   )rR   r   r   r   r   s   &&&  r#   r   &TranslatedManyToManyDescriptor.__get__  sP    24??LNS((5//99.IUUW))EK88r"   c                	    \        V P                  \        4       4      pVP                  P	                  V4      P                  4       p\        WV4       R # rT   )r   r'   r   r3   r4   r   r   )rR   r   r   r   r   s   &&&  r#   r   &TranslatedManyToManyDescriptor.__set__  s;    24??LNSnn..~>JJLu-r"   r   N)	r   r   r   r   r    r{   r   r   r!   r   r"   r#   r   r     s    59.r"   r   )C
__future__r   rp   typingr   r   collections.abcr   djangor   django.core.exceptionsr   django.db.modelsr	   r
   django.utils.encodingr   django.utils.functionalr   django.utils.translationr   modeltranslationr   r8   modeltranslation.thread_contextr   modeltranslation.utilsr   r   r   r   r   modeltranslation.widgetsr   _typingr   _compatr   r   r   	TextFieldjson	JSONFieldIntegerFieldr_   NullBooleanField
FloatFieldDecimalFieldIPAddressFieldGenericIPAddressField	DateFieldDateTimeField	TimeFieldr   r   
ImageFieldrm   r   rn   r7   r   r>   r:   rF   r   r   r   r   r"   r#   <module>r     s=   "   $  7 * + + - 4 =  <  =  
KK
 




  



LL
LL
NN
NN""- 4	 	].$@$ @$FO Od   F. .r"   