+
    Vj                       ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	H
t
Ht ^ RIHt ^ RIHtHtHt ^ RIHt ^ R	IHtHtHtHtHtHt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'H(t(H)t)H*t*H+t+H,t, ^ RI-H.t.H/t/H0t0 ^ RI1H2t2 ^ RI3H4t4H5t5H6t6 ^ RI7H8t8 ^RI9H:t:H;t; ^RI<H=t= . R@Ot> ! R R]?4      t@ ! R R]?4      tA ! R R]?4      tB ! R R]C4      tD ! R  R]DR!7      tE ! R" R#]P                  4      tGR$ R% ltHR& tIR' R( ltJR) R* ltKR+ R, ltLR- R. ltMR/ R0 ltNR1 R2 ltOR3 R4 ltPR5 R6 ltQR7 R8 ltRR9 R: ltSR; R< ltTR= tU ! R> R4      tV]V! 4       tWR?# )A    )annotations)dedent)partial)warn)AnyClassVarcast)Callable)
CollectionIterableSequence)ImproperlyConfigured)Field
ForeignKeyManagerManyToManyFieldModelOneToOneFieldoptions)IndexUniqueConstraint)	ModelBase)	post_init)cached_property)settings)NONETranslatedManyToManyDescriptorTranslatedRelationIdDescriptorTranslationFieldDescriptorTranslationFieldcreate_translation_field)MultilingualManagerMultilingualQuerysetManagerrewrite_lookup_key)auto_populate_mode)build_localized_fieldnameparse_fieldget_language)register)	is_hiddenbuild_refresh_from_db)_ListOrTupleAlreadyRegisteredDescendantRegisteredNotRegisteredTranslationOptions
Translatorc                      ] tR t^?tRtR# )r-    N__name__
__module____qualname____firstlineno____static_attributes__r3       P/var/www/idalgo/venv/lib/python3.14/site-packages/modeltranslation/translator.pyr-   r-   ?       r:   c                      ] tR t^CtRtR# )r/   r3   Nr4   r3   r:   r;   r/   r/   C   r<   r:   c                      ] tR t^GtRtR# )r.   r3   Nr4   r3   r:   r;   r.   r.   G   r<   r:   c                  >   a  ] tR t^Kt$ RtR]R&   R V 3R lltRtV ;t# )FieldsAggregationMetaClasszC
Metaclass to handle custom inheritance of fields between classes.
zSequence[str]fieldsc               (    V ^8  d   QhRRRRRRRR/# )	   namestrbasesztuple[type, ...]attrszdict[str, Any]returntyper3   )formats   "r;   __annotate__'FieldsAggregationMetaClass.__annotate__R   s*     8 83 8'7 8 8SW 8r:   c                	  < VP                  R R4      p\        V\        4      '       d   \        \	        RV R24      4      h\        V4      VR &   V F=  p\        V\        4      '       g   K  VR ,          P                  VP                  4       K?  	  \        VR ,          4      VR &   / p\        V4       F`  p\        V\        4      '       g   K  \        VR/ 4      P                  4        F&  w  rxVP                  V/ 4      P                  V4       K(  	  Kb  	  VP                  R/ 4      P                  4        F&  w  rxVP                  V/ 4      P                  V4       K(  	  WcR&   \        S	V `=  WW#4      # )rA   z`fields` property should be list or tuple, received `str`.

                Hint: Replace with:

                    fields = ("z", )
                field_optionsr3   )get
isinstancerE   r   r   setr@   updaterA   tuplereversedgetattritems
setdefaultsuper__new__)
clsrD   rF   rG   rA   basemerged_field_options
field_namelang_map	__class__s
   &&&&     r;   rY   "FieldsAggregationMetaClass.__new__R   sQ   8R(fc""&   !'x (	   "&kE(OD$ :;;h&&t{{3   h0h%'UOD$ :;;,3D/2,N,T,T,V(J(33JCJJ8T -W $
 %*IIor$B$H$H$J J ++J;BB8L %K!5ows%77r:   r3   )	r5   r6   r7   r8   __doc____annotations__rY   r9   __classcell__r_   s   @r;   r@   r@   K   s     8 8r:   r@   c                      ] tR t^qt$ Rt]P                  tR]R&   / t	R]R&   R R lt
R R	 ltRR
 R lltR R ltR R ltR R ltR R ltRtR# )r0   a  
Translatable fields are declared by registering a model using
``TranslationOptions`` class with appropriate ``fields`` attribute.
Model-specific fallback values and languages can also be given as class
attributes.

Options instances hold info about translatable fields for a model and its
superclasses. The ``local_fields`` and ``all_fields`` attributes are mappings
from fields to sets of their translation fields; ``local_fields`` contains
only those fields that are handled in the model's database table (those
inherited from abstract superclasses, unless there is a concrete superclass
in between in the inheritance chain), while ``all_fields`` also includes fields
inherited from concrete supermodels (giving all translated fields available
on a model).

``related`` attribute inform whether this model is related part of some relation
with translated model. This model may be not translated itself.
``related_fields`` contains names of reverse lookup fields.
z:ClassVar[_ListOrTuple[str] | dict[str, _ListOrTuple[str]]]required_languagesz1ClassVar[dict[str, dict[str, dict[str, object]]]]rN   c                    V ^8  d   QhRRRR/# rC   modeltype[Model]rH   Noner3   )rJ   s   "r;   rK   TranslationOptions.__annotate__   s     	, 	,k 	,d 	,r:   c                    Wn         RV n        RV n        V P                   Uu/ uF  q"\	        4       bK  	  upV n        V P                   Uu/ uF  q"\	        4       bK  	  upV n        . V n        R# u upi u upi )z5
Create fields dicts without any translation fields.
FN)ri   
registeredrelatedrA   rQ   local_fields
all_fieldsrelated_fields)selfri   fs   && r;   __init__TranslationOptions.__init__   si     
QUQ\Q\>]Q\A#%xQ\>]OS{{<[{!X{<[)+ ?^<[s   A0A5c                   V ^8  d   QhRR/# rC   rH   rk   r3   )rJ   s   "r;   rK   rl      s      $ r:   c                  a  S P                   ;p'       d   \        V\        \        34      '       d   S P	                  V4       R# S P	                  VP                  4       RR7       VP                  4        FN  p\        ;QJ d    V 3R lV 4       F  '       g   K   RM	  RM! V 3R lV 4       4      '       g   KE  \        R4      h	  R# R# )z
Perform options validation.
)extrac              3  @   <"   T F  qSP                   9  x  K  	  R # 5iN)rq   ).0rt   rs   s   & r;   	<genexpr>.TranslationOptions.validate.<locals>.<genexpr>   s     HZDOO3Zs   TFz>Fieldname in required_languages which is not in fields option.N)default)	rf   rP   rS   list_check_languageskeysvaluesanyr   )rs   value
fieldnamess   f  r;   validateTranslationOptions.validate   s     +++5+%%//%%e,%%ejjl,%G"',,.JsHZHsssHZHHH2\  #1 ,r:   c               $    V ^8  d   QhRRRRRR/# )rC   	languageszCollection[str]rz   ztuple[str, ...]rH   rk   r3   )rJ   s   "r;   rK   rl      s(     	 	"	 	 
		r:   c                	   a \        \        P                  4      \        V4      ,           o\        ;QJ d    V3R  lV 4       F  '       g   K   RM	  RM! V3R  lV 4       4      '       d   \	        R4      hR# )c              3  ,   <"   T F	  qS9  x  K  	  R # 5ir|   r3   )r}   langcorrects   & r;   r~   6TranslationOptions._check_languages.<locals>.<genexpr>   s     9yt7"ys   TFzCLanguage in required_languages which is not in AVAILABLE_LANGUAGES.N)r   mt_settingsAVAILABLE_LANGUAGESr   r   )rs   r   rz   r   s   &&&@r;   r   #TranslationOptions._check_languages   sT    
 {667$u+E39y93339y999&U  :r:   c                   V ^8  d   QhRR/# )rC   otherr0   r3   )rJ   s   "r;   rK   rl      s     1 1. 1r:   c                    VP                   P                  P                  '       d&   V P                  P	                  VP                  4       V P
                  P	                  VP
                  4       R# )z(
Update with options from a superclass.
N)ri   _metaabstractrp   rR   rq   )rs   r   s   &&r;   rR   TranslationOptions.update   sL     ;;%%%$$U%7%78u//0r:   c                   V ^8  d   QhRR/# )rC   fieldrE   r3   )rJ   s   "r;   rK   rl      s     6 63 6r:   c                    V P                   V,          P                  V4       V P                  V,          P                  V4       R# )z3
Add a new translation field to both fields dicts.
N)rp   addrq   )rs   r   translation_fields   &&&r;   add_translation_field(TranslationOptions.add_translation_field   s6     	% $$%67""#45r:   c                   V ^8  d   QhRR/# )rC   rH   z	list[str]r3   )rJ   s   "r;   rK   rl      s     B B Br:   c                j    \        V P                  P                  4       4      V P                  ,           # )z:
Return name of all fields that can be used in filtering.
)r   rq   r   rr   rs   s   &r;   get_field_names"TranslationOptions.get_field_names   s'     DOO((*+d.A.AAAr:   c                   V ^8  d   QhRR/# rC   rH   rE   r3   )rJ   s   "r;   rK   rl      s     O O Or:   c                	   \        V P                  P                  4       4      p\        \        V P                  P                  4       4      \        V4      ,
          4      pR P                  V P                  P                  W4      # )z{}: {} + {})rS   rp   r   rQ   rq   rJ   r_   r5   )rs   local	inheriteds   &  r;   __str__TranslationOptions.__str__   s]    d'',,./#doo2245E
BC	##DNN$;$;UNNr:   )rq   rp   ri   rn   ro   rr   N)r3   )r5   r6   r7   r8   ra   r   REQUIRED_LANGUAGESrf   rb   rN   ru   r   r   rR   r   r   r   r9   r3   r:   r;   r0   r0   q   sY    * 	&& R  HJMDI	,"	16BO Or:   )	metaclassc                  2   a  ] tR t^t]V 3R l4       tRtV ;t# )MultilingualOptionsc                	2   < \         SV `  p\        V4       V# r|   )rX   base_managerpatch_manager_class)rs   managerr_   s   & r;   r    MultilingualOptions.base_manager   s    '&G$r:   r3   )r5   r6   r7   r8   r   r   r9   rc   rd   s   @r;   r   r      s     r:   r   c               $    V ^8  d   QhRRRRRR/# rC   ri   rj   optsr0   rH   rk   r3   )rJ   s   "r;   rK   rK      s"     .! .!+ .!5G .!D .!r:   c           
     R   \        VR\        4      p\        VR/ 4      pVP                  P                  4        EF  p\	        W$\        4      pVP                  V/ 4      p\        P                   EF^  p\        WWuR7      pVP                  WvP                  R/ 4      4      p	V	P                  4        F  w  r\        WV4       K  	  V	P                  4       Vn        \        WG4      p\        W4      '       d   V P                   F  p\        VR4      '       g   K  VP                   P                  VR4      '       g   K;  \"        P%                  V4      pVP&                  P(                  '       d   WNP                  9  g   K~  \+        RV P&                  P,                  : RV: R	24      h	  V P/                  W4       VP1                  WH4       EKa  	  EK  	  \3        VP                  4      ^ 8X  d7   V P&                  P5                  4        V P&                  P7                  4        R# R# )
z
Monkey patches the original model class to provide additional fields for
every language.

Adds newly created translation fields to the given translation options.
empty_valuesrN   )ri   r]   r   empty_valuer   r   Nz'Error adding translation field. Model 'z"' already contains a field named 'z'.)rU   r   rp   r   r'   rO   r   r   r!   rV   setattrcopy_field_options_kwargsr&   hasattr__mro____dict__
translator_get_options_for_modelr   r   
ValueErrorobject_nameadd_to_classr   len_expire_cache
get_fields)ri   r   model_empty_valuesmodel_field_optionsr]   field_empty_valueper_field_optsr   r   lang_kwargsattrr   localized_field_namerZ   cls_optss   &&             r;   add_translation_fieldsr      s    !~t<!$<'',,.
'(:M,00R@33D 8! ),,T3E3EiQS3TUK*002)7  36A6F6F6H3#<Z#N  u33 ==CsG,,1A1ABVX\1]1]#-#D#DS#I"yy111ZG\G\5\", $);;#:#:<P!R# 	 ) 3G&&zE9 4 /F 4"!!#  #r:   c                   a a \        S \        4      '       d   R # S P                  \        J d   \        S n        R #  ! VV 3R lR\        S P                  \        4      oSS n        R # )Nc                  x   < ] tR tRt ZP                  t ZP
                  P                   tR tR tV 3R lt	Rt
R# )3patch_manager_class.<locals>.NewMultilingualManageri  c                	    R RP                  V P                  V P                  4      RV P                  ^ ,          V P                  ^,          3# )Fz{}.{}N)rJ   _old_module
_old_class_constructor_argsr   s   &r;   deconstruct?patch_manager_class.<locals>.NewMultilingualManager.deconstruct  sF    NN4#3#3T__E**1-**1- r:   c                	    \        V 4      # r|   )idr   s   &r;   __hash__<patch_manager_class.<locals>.NewMultilingualManager.__hash__  s    $xr:   c                	p  < \        VS4      '       d;   V P                  VP                  8H  ;'       d    V P                  VP                  8H  # \        VR 4      '       dW   \        VR4      '       dE   V P                  VP                  8H  ;'       d$    V P                  VP
                  P                  8H  # R# )r6   r_   F)rP   r   r   r   r6   r_   r5   )rs   r   NewMultilingualManagers   &&r;   __eq__:patch_manager_class.<locals>.NewMultilingualManager.__eq__  s    e%;<<((E,=,== @ @ OOu/?/?? 5,//GE;4O4O((E,<,<< H H OOu/G/GG r:   r3   N)r5   r6   r7   r8   r   r_   r   r   r   r   r9   )r   r   s   r;   r   r     s5     ",,K **33J  r:   r   )rP   r"   r_   r   r#   )r   r   s   f@r;   r   r     sQ    './/G#/	 	!2!24O	> 3r:   c                    V ^8  d   QhRRRR/# rh   r3   )rJ   s   "r;   rK   rK   /  s        {  t  r:   c                r   V P                   P                  '       d   R# \        V P                   P                  4      \        V P                   P                  4      ,
          pV P                   P                  V P                   n        V P                   P                   Fg  pVP
                  p\        V4       W!9   d   VP                  4        V P                  P
                  VJ g   KL  VP
                  V P                  n        Ki  	  \        V P                   n        V P                   P                  4        R# )z
Monkey patches the original model to use MultilingualManager instead of
default managers (not only ``objects``, but also every manager defined and inherited).

Custom managers are merged with MultilingualManager.
N)r   r   rQ   managerslocal_managersr_   r   _set_creation_counter_default_managerr   r   )ri   addedcurrent_manager
prev_classs   &   r;   add_managerr   /  s     {{$$%EKK,F,F(GGE!&!5!5EKK ;;55$..
O,# 113!!++z9 0?/H/HE"", 6  0EKK	KKr:   c                    V ^8  d   QhRRRR/# rh   r3   )rJ   s   "r;   rK   rK   P  s      [ T r:   c                >   a a S P                   oV V3R lpVS n         R# )zG
Monkey patches the original model to rewrite fields names in __init__
c                   < R V n         \        V P                  V4       \        VP	                  4       4       F"  w  r4\        SV4      pVP                  WT4       K$  	  S! V .VO5/ VB  R# )TN)_mt_initpopulate_translation_fieldsr_   r   rV   r$   rW   )rs   argskwargskeyvalnew_keyri   old_inits   &*,   r;   new_init#patch_constructor.<locals>.new_initV  s]    #DNNF;V\\^,HC(4Gg+ - 	'''r:   N)ru   )ri   r   r   s   f @r;   patch_constructorr   P  s     ~~H( ENr:   c               $    V ^8  d   QhRRRRRR/# r   r3   )rJ   s   "r;   rK   rK   b  s"     (: (:[ (:0B (:t (:r:   c                n  a a V V3R  lpV V3R lpS P                   ;P                  \        V! 4       4      ,          un        S P                   ;P                  \        V! 4       4      ,          un        R F<  p\	        S P                   V4      ;p'       g   K#  VS P                   P
                  V&   K>  	  R# )c               3  d  <"   SP                   P                   F  p . pV  F'  pVSP                  9   g   K  VP                  V4       K)  	  V'       g   K<  \        P
                   F@  p\        V 4      pV F  p\        W#4      WDP                  V4      &   K!  	  \        V4      x  KB  	  K  	  R # 5ir|   )
r   unique_togetherrA   appendr   r   r   r&   indexrS   )
constraint!translatable_fields_in_constraintr]   r   new_constraintri   r   s        r;   add_unique_together.patch_constraints.<locals>.add_unique_togetherc  s     ++55J02-(
,5<<ZH ) 10';;D%)*%5N&G
5jG '';';J'GH 'H  // < 6s   /B0B0AB0c               3  $  <"   SP                   P                   F  p \        V \        4      '       g   K  . pV P                   F'  pVS	P                  9   g   K  VP                  V4       K)  	  V'       g   K^  \        P                   F~  pV P                  4       w  rEp\        VR ,          4      pV F  p\        W#4      WwP                  V4      &   K!  	  WvR &   V P                  RV 2,           VR&   V P                  ! V/ VB x  K  	  K  	  R# 5i)rA   -rD   N)r   constraintsrP   r   rA   r   r   r   r   r   r&   r  rD   r_   )
cr  r]   r   pathr   r   
new_fieldsri   r   s
           r;   add_constraints*patch_constraints.<locals>.add_constraintsr  s     ((A!-..461"#((J!T[[09@@L #+ 54 + ? ?-.]]_*F%)&*:%;
*KJG` *HJ'7'7
'CD +L ,6x()*AdV*)<vkk4:6:: !@ )s   -DDD8BDN)r   )r   r   rS   r	  rU   original_attrs)ri   r   r  r  	attr_namer   s   ff    r;   patch_constraintsr  b  s    0;& 
KK5)<)>#??	KKu_%677)	EKK3353349EKK&&y1 *r:   c               $    V ^8  d   QhRRRRRR/# r   r3   )rJ   s   "r;   rK   rK     s"     / / /,> /4 /r:   c                z   a a V V3R  lpS P                   ;P                  \        V! 4       4      ,          un        R# )c               3    <"   S	P                   P                   EF>  p \        V \        4      '       g   K  . pV P                   F'  pVS
P                  9   g   K  VP                  V4       K)  	  V'       g   K_  \        P                   F  pV P                  4       w  rEp\        VR ,          4      pV F  p\        W#4      WwP                  V4      &   K!  	  WvR &   V P                  RV 2,           VR&   V P                  ! V/ VB p\        VP                  4      ^8  d2   \        RVP                   R2\         ^R7       VP#                  S	4       Vx  K  	  EKA  	  R# 5i)rA   r  rD   zIndex name 'z0' exceeds 30 characters and will be regenerated.)
stacklevelN)r   indexesrP   r   rA   r   r   r   r   r   r&   r  rD   r_   r   r   UserWarningset_name_with_model)idxtranslatable_fields_in_indexr]   r   r  r   r   r  	new_indexri   r   s            r;   add_indexes"patch_indexes.<locals>.add_indexes  s0    ;;&&C#u%%/1,"%**J!T[[04;;JG #- 0/ + ? ?-0__->*F%)&*:%;
*FJG` *HJ'7'7
'CD +G ,6x(),avJ)>v$'MM4$B6$B	y~~.3 ".y~~.>>n o ++,
 &99%@'# !@ 's   .EEE9C&EN)r   r  r   )ri   r   r  s   ff r;   patch_indexesr    s&    (6 
KK4..r:   c               (    V ^8  d   QhRRRRRRRR/# )	rC   senderrj   instancer   r   r   rH   rk   r3   )rJ   s   "r;   rK   rK     s(      ; % 3 4 r:   c                2    \        VR 4      '       d   V=R# R# )r   N)r   r   )r   r!  r   s   &&,r;   delete_mt_initr#    s    x$$ %r:   c                   V ^8  d   QhRR/# )rC   ri   rj   r3   )rJ   s   "r;   rK   rK     s     * *k *r:   c                B   a V P                   oRR V3R lllpWn         R# )zF
Patch clean_fields method to handle different form types submission.
Nc                    V ^8  d   QhRRRR/# )rC   excludezCollection[str] | NonerH   rk   r3   )rJ   s   "r;   rK   (patch_clean_fields.<locals>.__annotate__  s     0 0(> 0$ 0r:   c                  < \        V R 4      '       d   Ve|   V P                  P                  4        FQ  w  r#V P                  P	                  V4      pVP
                  P                  pWQ9   g   K>  VP                  WRR7       KS  	  \        V R 4        \        V RR4       S! W4       \        V RR4       R#   \        T RR4       i ; i)_mt_form_pending_clearNF)check_mt_disableT)
r   r*  rV   r   	get_fieldtranslated_fieldrD   save_form_datadelattrr   )rs   r'  r]   r   r   orig_field_nameold_clean_fieldss   &&    r;   new_clean_fields,patch_clean_fields.<locals>.new_clean_fields  s    4122w7J &*%@%@%F%F%H!


,,Z8"'"8"8"="="-((E(B	 &I
 D23	0D-.T+D-/GD-/s   B8 8Cr|   )clean_fields)ri   r3  r2  s   & @r;   patch_clean_fieldsr6    s#     ))0 0& *r:   c                    V ^8  d   QhRRRR/# rh   r3   )rJ   s   "r;   rK   rK     s     8 8[ 8T 8r:   c                f   a \        V R4      '       g   R# V P                  oR V3R llpWn        R# )zQ
Django >= 1.8: patch detecting deferred fields. Crucial for only/defer to work.
get_deferred_fieldsNc                   V ^8  d   QhRR/# )rC   rH   zset[str]r3   )rJ   s   "r;   rK   /patch_get_deferred_fields.<locals>.__annotate__  s       r:   c                r   < S! V 4      p\        V R 4      '       d   VP                  V P                  4       V# )_fields_were_deferred)r   rR   r=  )rs   supold_get_deferred_fieldss   & r;   new_get_deferred_fields:patch_get_deferred_fields.<locals>.new_get_deferred_fields  s2    %d+4011JJt112
r:   )r   r9  )ri   r@  r?  s   & @r;   patch_get_deferred_fieldsrB    s4     5/00#77  !8r:   c                    V ^8  d   QhRRRR/# rh   r3   )rJ   s   "r;   rK   rK     s     I I I Ir:   c                b    \        V R4      '       g   R# \        V P                  4      V n        R# )zS
Django >= 1.10: patch refreshing deferred fields. Crucial for only/defer to work.
refresh_from_dbN)r   r+   rE  )ri   s   &r;   patch_refresh_from_dbrF    s(     5+,,1%2G2GHEr:   c                    V ^8  d   QhRRRR/# rh   r3   )rJ   s   "r;   rK   rK     s     $ $ $ $r:   c                    V P                   pRpV F  p \        W4       K  	  \        V P                   R4      '       d   V P                   P	                  4        R# R#   \         d     K[  i ; i)_field_cacher   N)rI  _field_name_cache	_name_maprA   concrete_fieldslocal_concrete_fields)r   r0  AttributeErrorr   r   )ri   r   cached_attrsr   s   &   r;   _delete_cache_fieldsrP    sg    ;;DL 	D  u{{O,,!!# -  		s   AA-,A-c                    V ^8  d   QhRRRR/# rh   r3   )rJ   s   "r;   rK   rK     s     / /k /d /r:   c                    V P                   P                  4        F  pVP                  P                  RR4       K!  	  R# )z
In some cases we need to clean up `cached_col` cached_property on fields.

Refs https://github.com/deschler/django-modeltranslation/issues/593

cached_colN)r   r   r   pop)ri   r   s   & r;   _delete_cached_colrU    s/     '')<. *r:   c                    V ^8  d   QhRRRR/# )rC   r   rj   r   r   r3   )rJ   s   "r;   rK   rK     s     /Q /Q /QS /Qr:   c                   \        4       pV'       g   R# VRJ d   Rp\        P                  V 4      p\        VP	                  4       4       F  w  rEWCP
                  9   g   K  VR8X  d9   VP
                  V,           F  pVP                  VP                  V4       K!  	  KV  VR8X  d.   \        V\        P                  4      pVP                  Wu4       K  VR8X  d[   \        V\        P                  4      pV P                  P                  V4      P                  '       g   VP                  Wu4       K  K  \        RV,          4      h	  R# )a0  
When models are created or loaded from fixtures, replicates values
provided for translatable fields to some / all empty translation fields,
according to the current population mode.

Population is performed only on keys (field names) present in kwargs.
Nothing is returned, but passed kwargs dictionary is altered.

With ``mode`` set to:
-- ``all``: fills all translation fields, skipping just those for
   which a translated value is also provided;
-- ``default``: fills only the default translation (unless it is
   additionally provided);
-- ``required``: like ``default``, but only if the original field is
   non-nullable;

At least the ``required`` mode should be used when loading untranslated
fixtures to keep the database consistent (note that Django management
commands are normally forced to run with hardcoded ``en-us`` language
active). The ``default`` mode is useful if you need to ensure fallback
values are available, and ``all`` if you need to have all translations
defined (for example to make lookups / filtering without resorting to
query fallbacks).
NTallr   requiredzUnknown population mode '%s'.)r%   r   get_options_for_modelr   rV   rq   rW   rD   r&   r   DEFAULT_LANGUAGEr   r-  nullrN  )r   r   populater   r   r   r   r   s   &&      r;   r   r     s	   2 "#H4++F3D(//!5 )-)=)=%%%&7&<&<cB *>Y&3C9U9UV!!'/Z'3C9U9UV||--c2777%%g3 8 %%Dx%OPP )r:   c                d     ! R RV P                   P                  4      pWP                   n        R# )zl
Patch SingleRelatedObjectDescriptor or ReverseSingleRelatedObjectDescriptor to use
language-aware caching.
c                  2    ] tR tRtR R lt]R 4       tRtR# );patch_related_object_descriptor_caching.<locals>.NewRelatedi>  c                   V ^8  d   QhRR/# r   r3   )rJ   s   "r;   rK   Hpatch_related_object_descriptor_caching.<locals>.NewRelated.__annotate__?  s     	# 	#C 	#r:   c                    V P                   # )z
Used in django > 2.x
)
cache_namer   s   &r;   get_cache_nameJpatch_related_object_descriptor_caching.<locals>.NewRelated.get_cache_name?  s     ??"r:   c                F    \        V P                  4       \        4       4      # )z
Used in django >= 5.1
)r&   get_accessor_namer(   r   s   &r;   rd  Fpatch_related_object_descriptor_caching.<locals>.NewRelated.cache_nameE  s    
 -T-C-C-E|~VVr:   r3   N)r5   r6   r7   r8   re  propertyrd  r9   r3   r:   r;   
NewRelatedr`  >  s    	# 
	W 
	Wr:   rk  N)ro   r_   )ro_descriptorrk  s   & r;   'patch_related_object_descriptor_cachingrm  8  s*    W]**44 W '1#r:   c                      ] tR tRtRtR R ltRR R lltR R	 ltR
 R ltRR R llt	RR R llt
R R ltR R ltR R ltRtR# )r1   iO  z
A Translator object encapsulates an instance of a translator. Models are
registered with the Translator using the register() method.
c                   V ^8  d   QhRR/# rx   r3   )rJ   s   "r;   rK   Translator.__annotate__U  s     = =$ =r:   c                	"    / V n         . V n        R # r|   )	_registry_lazy_operationsr   s   &r;   ru   Translator.__init__U  s    @B:<r:   Nc               (    V ^8  d   QhRRRRRRRR/# )	rC   model_or_iterable#type[Model] | Iterable[type[Model]]
opts_classtype[TranslationOptions] | Noner   r   rH   rk   r3   )rJ   s   "r;   rK   rp  [  s2     / />/ 4/ 	/
 
/r:   c                   \        V\        4      '       d   V.pV F  pW@P                  9   d   V P                  V,          P                  '       d   \	        RVP
                  ,          4      hV P                  P                  4        Uu. uF*  p\        WT4      '       g   K  WT8w  g   K  VP
                  NK,  	  ppV'       d&   \        RVP
                  : RV^ ,          : R24      hV P                  ! WB3/ VB p V P                  WG4       K  	  R# u upi   \         d    RT P                  T,          n        h i ; i)a1  
Registers the given model(s) with the given translation options.

The model(s) should be Model classes, not instances.

Fields declared for translation on a base class are inherited by
subclasses. If the model or one of its subclasses is already
registered for translation, this will raise an exception.
z0Model "%s" is already registered for translationzModel "z+" cannot be registered after its subclass ""FN)rP   r   rr  rn   r-   r5   r   
issubclassr.   r   _register_single_model	Exception)rs   rv  rx  r   ri   ddescendantsr   s   &&&,    r;   r)   Translator.register[  s!    '33!2 3&E &>>%(333+JU^^[  "&!4!4!6#!6A%a/ #45J #

!6   #
 #2',~~{1~~G  ..uLGLD++E85 '#"  38u%0s   
D"D*D=D%D>c               $    V ^8  d   QhRRRRRR/# r   r3   )rJ   s   "r;   rK   rp    s-     YH YHK YH?Q YHVZ YHr:   c                	   VP                  4        R Vn        \        V4       VP                  P                  '       d   \        V4       M\        W4       R VP                  P                  4        4       pV F  p\        VP                  4       K  	  \        V4       \        V4       \        W4       \        W4       \        P                  ! \        VR7       \!        V4       \#        V4       \%        V4       \'        VRR4      p\'        VR\(        4      p\'        VR\(        4      pVP*                  P-                  4        EF  p\/        \0        VP                  P3                  V4      4      p	\5        Wh\(        4      p
\5        Wx\(        4      p\7        V	VV
VR7      p\9        WV4       \;        V	\<        \>        34      '       d   \;        V	\>        4      '       d   \@        M\B        pV! W4      p\9        WPE                  4       V4       \G        V	PH                  4      '       gu   V PK                  V	PH                  P                  4      pR Vn&        VPN                  PQ                  V	PS                  4       4       \        V	PH                  P                  4       \;        V	\T        4      '       g   EKp  \'        V	PH                  P                  V	PH                  PW                  4       4      p\Y        V4       EK  	  R# )Tc              3     "   T FA  pVP                   '       g   VP                  '       g   K)  VP                  '       g   K=  Vx  KC  	  R # 5ir|   )one_to_many
one_to_oneauto_created)r}   rt   s   & r;   r~   4Translator._register_single_model.<locals>.<genexpr>  s4      
- 34>> A-s   AAA
A)r   fallback_languagesNfallback_valuesfallback_undefined)r  fallback_valuer  )-r   rn   rU  r   proxyrP  r   r   ri   r   r   r  r  r   connectr#  r6  rB  rF  rU   r   rp   r   r	   r   r-  r'   r   r   rP   r   r   r   r   get_attnamer*   remote_fieldr   ro   rr   r   related_query_namer   rh  rm  )rs   ri   r   ro   related_objmodel_fallback_languagesmodel_fallback_valuesmodel_fallback_undefinedr]   r   field_fallback_valuefield_fallback_undefined
descriptor
desc_classdesc
other_optssro_descriptors   &&&              r;   r}  !Translator._register_single_model  sh    5! ;; '"5/
[[++-
 #K !2!23 # 	E 	%  	%& 	e" 	.7 	5! 	"%(e$ $+41Et#L  '.? F#*41Et#L ++002J 5 5j ABE#./DRV#W '23KY]'^$3#;3#;	J Ez2%*o!>?? "%99 37 
 "*G002D9 !!3!344!%!<!<U=O=O=U=U!VJ)-J&--44U5M5M5OP 2 2 8 89%//!(&&,,&&88:" 8GK 3r:   c                    V ^8  d   QhRRRR/# )rC   rv  rw  rH   rk   r3   )rJ   s   "r;   rK   rp    s     ) ),O )TX )r:   c           	        \        V\        4      '       d   V.pV F  pV P                  V4       \        V P                  P                  4       4       Fe  w  r4\        W24      '       g   K  W#8w  d;   VP                  '       d)   \        RVP                  : RVP                  : R24      hV P                  V Kg  	  K  	  R# )z
Unregisters the given model(s).

If a model isn't registered, this will raise NotRegistered. If one of
its subclasses is registered, DescendantRegistered will be raised.
z#You need to unregister descendant "z!" before unregistering its base "r{  N)
rP   r   rZ  r   rr  rV   r|  rn   r.   r5   )rs   rv  ri   r  	desc_optss   &&   r;   
unregisterTranslator.unregister  s     '33!2 3&E &&u- $((<(<(>#?!$..=Y%9%9%9 /:>--Y  NN4( $@ 'r:   c                    V ^8  d   QhRRRR/# )rC   r   boolrH   zlist[type[Model]]r3   )rJ   s   "r;   rK   rp    s     	
 	
d 	
>O 	
r:   c                    V P                   P                  4        UUu. uFA  w  r#VP                  '       g   K  VP                  P                  '       d   V'       g   K?  VNKC  	  upp# u uppi )zN
Returns a list of all registered models, or just concrete
registered models.
)rr  rV   rn   r   r   )rs   r   ri   r   s   &&  r;   get_registered_models Translator.get_registered_models  sX     "&!5!5!7
!7 (-(<(<(< E!7
 	
 
s   A)A)A)A)c               (    V ^8  d   QhRRRRRRRR/# )	rC   ri   rj   rx  ry  r   r   rH   r0   r3   )rJ   s   "r;   rK   rp    s,     % % %.M%ad%	%r:   c                X   WP                   9  d   \        RVP                  ,          T;'       g    \        3V4      ! V4      pVP                   F7  p\        VR4      '       g   K  VP                  V P                  V4      4       K9  	  W@P                   V&   V P                   V,          # )z~
Returns an instance of translation options with translated fields
defined for the ``model`` and inherited from superclasses.
z%sTranslationOptionsr   )rr  rI   r5   r0   	__bases__r   rR   r   )rs   ri   rx  r   r   r[   s   &&&,  r;   r   !Translator._get_options_for_model  s     & &71113 	D tW-- D77=> ( %)NN5!~~e$$r:   c                    V ^8  d   QhRRRR/# )rC   ri   rj   rH   r0   r3   )rJ   s   "r;   rK   rp  ,  s      ; ;M r:   c                    V P                  V4      pVP                  '       g/   VP                  '       g   \        RVP                  ,          4      hV# )z
Thin wrapper around ``_get_options_for_model`` to preserve the
semantic of throwing exception for models not directly registered.
z0The model "%s" is not registered for translation)r   rn   ro   r/   r5   )rs   ri   r   s   && r;   rZ   Translator.get_options_for_model,  sB    
 **51t||| RUZUcUc cddr:   c                   V ^8  d   QhRR/# rx   r3   )rJ   s   "r;   rK   rp  6  s     : : :r:   c                	r    V P                   '       d%   V P                   P                  ^ 4      ! V R7       K6  R# )r   )r   N)rs  rT  r   s   &r;   execute_lazy_operations"Translator.execute_lazy_operations6  s,    ###!!%%a(D9 $r:   c               (    V ^8  d   QhRRRRRRRR/# )rC   funczCallable[..., Any]r   r   r   rH   rk   r3   )rJ   s   "r;   rK   rp  :  s0     E E#5 Ec ES EUY Er:   c                	V    V P                   P                  \        V.VO5/ VB 4       R # r|   )rs  r   r   )rs   r  r   r   s   &&*,r;   lazy_operationTranslator.lazy_operation:  s%    $$WT%CD%CF%CDr:   )rs  rr  r|   )T)r5   r6   r7   r8   ra   ru   r)   r}  r  r  r   rZ  r  r  r9   r3   r:   r;   r1   r1   O  s?    
=/bYHv)6	
%>:E Er:   N)r-   r.   r/   r0   r1   r)   r   )X
__future__r   textwrapr   	functoolsr   warningsr   typingr   r   r	   collections.abcr
   r   r   r   django.core.exceptionsr   django.db.modelsr   r   r   r   r   r   r   r   r   django.db.models.baser   django.db.models.signalsr   django.utils.functionalr   modeltranslationr   r   modeltranslation.fieldsr   r   r   r   r    r!   modeltranslation.managerr"   r#   r$   modeltranslation.thread_contextr%   modeltranslation.utilsr&   r'   r(   modeltranslation.decoratorsr)   _compatr*   r+   _typingr,   __all__r~  r-   r/   r.   rI   r@   r0   Optionsr   r   r   r   r   r  r  r#  r6  rB  rF  rP  rU  r   rm  r1   r   r3   r:   r;   <module>r     s0   "    & & $ : : 7   5 + . 3 4  
 ?  1 5 !		 		I 		9 	#8 #8LYO#= YOx'// .!b&3R B$(:V/>
*88"I$(//Qd1.lE lE` \
r:   