ó
    |chß  ã                   ó†  • S r SSKrSSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJrJr  S&S	 jrS
 rS r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S  S!\5      r " S" S#\5      rS$ r S% r!g)'z¸
Handled exceptions raised by REST framework.

In addition, Django's built in 403 and 404 exceptions are handled.
(`django.http.Http404` and `django.core.exceptions.PermissionDenied`)
é    N)ÚJsonResponse)Ú	force_str)Úgettext_lazy)Úngettext©Ústatus)Ú
ReturnDictÚ
ReturnListc           	      óø  • [        U [        [        45      (       aE  U  Vs/ s H  n[        X!5      PM     nn[        U [        5      (       a  [	        X0R
                  S9$ U$ [        U [        5      (       aX  U R                  5        VVs0 s H  u  pEU[        XQ5      _M     nnn[        U [        5      (       a  [        X0R
                  S9$ U$ [        U 5      n[        U SU5      n[        Xg5      $ s  snf s  snnf )zk
Descend into a nested data structure, forcing any
lazy translation strings or strings into `ErrorDetail`.
)Ú
serializerÚcode)Ú
isinstanceÚlistÚtupleÚ_get_error_detailsr
   r   ÚdictÚitemsr	   r   ÚgetattrÚErrorDetail)ÚdataÚdefault_codeÚitemÚretÚkeyÚvalueÚtextr   s           Úb/var/www/djangovue.mamus.xyz/django/venv/lib/python3.13/site-packages/rest_framework/exceptions.pyr   r      së   € ô
 �$œœu˜×&Ñ&á?Có
Ú?C°tÔ˜tÖ2¹tð 	ð 
ô �dœJ×'Ñ'Ü˜c¯o©oÑ>Ð>Øˆ
Ü	�Dœ$×	Ñ	ð #Ÿj™jœlô
â*‘
�ð Ô# EÓ8Ò8Ù*ð 	ñ 
ô �dœJ×'Ñ'Ü˜c¯o©oÑ>Ð>Øˆ
ä�T‹?€DÜ�4˜ Ó.€DÜ�tÓ"Ð"ùò#
ùó
s    C1Â	C6c                 ó  • [        U [        5      (       a  U  Vs/ s H  n[        U5      PM     sn$ [        U [        5      (       a/  U R	                  5        VVs0 s H  u  p#U[        U5      _M     snn$ U R
                  $ s  snf s  snnf ©N)r   r   Ú
_get_codesr   r   r   ©Údetailr   r   r   s       r   r    r    ,   so   € Ü�&œ$×ÑÙ-3Ó4ªV T”
˜4Ö ©VÑ4Ð4Ü	�FœD×	!Ñ	!Ø9?¿¹¼ÔHº©:¨3�”Z Ó&Ò&¹ÒHÐHØ�;‰;Ðùò 5ùãHs   šBÁBc                 ó   • [        U [        5      (       a  U  Vs/ s H  n[        U5      PM     sn$ [        U [        5      (       a/  U R	                  5        VVs0 s H  u  p#U[        U5      _M     snn$ U U R
                  S.$ s  snf s  snnf )N)Úmessager   )r   r   Ú_get_full_detailsr   r   r   r!   s       r   r%   r%   4   s{   € Ü�&œ$×ÑÙ4:Ó;²F¨DÔ! $Ö'±FÑ;Ð;Ü	�FœD×	!Ñ	!Ø@FÇÁÄÔOÂ±*°#�Ô& uÓ-Ò-ÁÒOÐOàØ—‘ñð ùò <ùãOs   šBÁB
c                   óR   ^ • \ rS rSrSrSrS
U 4S jjrU 4S jrS rS r	S r
S	rU =r$ )r   é?   z9
A string-like object that can additionally have a code.
Nc                 ó2   >• [         TU ]  X5      nX#l        U$ r   )ÚsuperÚ__new__r   )ÚclsÚstringr   ÚselfÚ	__class__s       €r   r*   ÚErrorDetail.__new__E   s   ø€ Ü‰w‰˜sÓ+ˆØŒ	Øˆó    c                 óª   >• [         TU ]  U5      nU[        L a  [        $  U=(       a    U R                  UR                  :H  $ ! [         a    Us $ f = fr   )r)   Ú__eq__ÚNotImplementedr   ÚAttributeError)r-   ÚotherÚresultr.   s      €r   r2   ÚErrorDetail.__eq__J   sP   ø€ Ü‘‘ Ó&ˆØ”^Ò#Ü!Ð!ð	Ø×5˜dŸi™i¨5¯:©:Ñ5Ð5øÜó 	ØŠMð	ús   ¡!A ÁAÁAc                 óP   • U R                  U5      nU[        L a  [        $ U(       + $ r   )r2   r3   )r-   r5   r6   s      r   Ú__ne__ÚErrorDetail.__ne__S   s&   € Ø—‘˜UÓ#ˆØ”^Ò#Ü!Ð!ØŒzÐr0   c                 ó>   • S[        U 5      < SU R                  < S3$ )NzErrorDetail(string=z, code=Ú))Ústrr   ©r-   s    r   Ú__repr__ÚErrorDetail.__repr__Y   s   � ä�ŽIØ�IŒIð
ð 	
r0   c                 ó*   • [        [        U 5      5      $ r   )Úhashr=   r>   s    r   Ú__hash__ÚErrorDetail.__hash___   s   € Ü”C˜“I‹Ðr0   )r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r*   r2   r9   r?   rC   Ú__static_attributes__Ú__classcell__©r.   s   @r   r   r   ?   s-   ø† ñð €D÷õ
òò
÷ð r0   r   c                   ó`   • \ rS rSrSr\R                  r\" S5      r	Sr
SS jrS rS rS	 rS
rg)ÚAPIExceptionéc   zv
Base class for REST framework exceptions.
Subclasses should provide `.status_code` and `.default_detail` properties.
zA server error occurred.ÚerrorNc                 ó`   • Uc  U R                   nUc  U R                  n[        X5      U l        g r   )Údefault_detailr   r   r"   ©r-   r"   r   s      r   Ú__init__ÚAPIException.__init__l   s.   € Ø‰>Ø×(Ñ(ˆFØ‰<Ø×$Ñ$ˆDä(¨Ó6ˆ�r0   c                 ó,   • [        U R                  5      $ r   )r=   r"   r>   s    r   Ú__str__ÚAPIException.__str__t   s   € Ü�4—;‘;ÓÐr0   c                 ó,   • [        U R                  5      $ )zM
Return only the code part of the error details.

Eg. {"name": ["required"]}
)r    r"   r>   s    r   Ú	get_codesÚAPIException.get_codesw   s   € ô ˜$Ÿ+™+Ó&Ð&r0   c                 ó,   • [        U R                  5      $ )zˆ
Return both the message & code parts of the error details.

Eg. {"name": [{"message": "This field is required.", "code": "required"}]}
)r%   r"   r>   s    r   Úget_full_detailsÚAPIException.get_full_details   s   € ô ! §¡Ó-Ð-r0   ©r"   ©NN)rE   rF   rG   rH   rI   r   ÚHTTP_500_INTERNAL_SERVER_ERRORÚstatus_codeÚ_rR   r   rT   rW   rZ   r]   rJ   © r0   r   rN   rN   c   s8   † ñð ×7Ñ7€KÙÐ1Ó2€NØ€Lô7ò ò'õ.r0   rN   c                   óJ   • \ rS rSr\R
                  r\" S5      rSr	SS jr
Srg)ÚValidationErroré�   zInvalid input.ÚinvalidNc                 óü   • Uc  U R                   nUc  U R                  n[        U[        5      (       a  [	        U5      nO-[        U[
        5      (       d  [        U[        5      (       d  U/n[        X5      U l        g r   )rR   r   r   r   r   r   r   r"   rS   s      r   rT   ÚValidationError.__init__”   sf   € Ø‰>Ø×(Ñ(ˆFØ‰<Ø×$Ñ$ˆDô �fœe×$Ñ$Ü˜&“\‰FÜ˜F¤D×)Ñ)´*¸VÄT×2JÑ2JØ�XˆFä(¨Ó6ˆ�r0   r_   r`   )rE   rF   rG   rH   r   ÚHTTP_400_BAD_REQUESTrb   rc   rR   r   rT   rJ   rd   r0   r   rf   rf   �   s"   † Ø×-Ñ-€KÙÐ'Ó(€NØ€L÷7r0   rf   c                   ó@   • \ rS rSr\R
                  r\" S5      rSr	Sr
g)Ú
ParseErroré¤   zMalformed request.Úparse_errorrd   N)rE   rF   rG   rH   r   rk   rb   rc   rR   r   rJ   rd   r0   r   rm   rm   ¤   s   † Ø×-Ñ-€KÙÐ+Ó,€NØ ƒLr0   rm   c                   ó@   • \ rS rSr\R
                  r\" S5      rSr	Sr
g)ÚAuthenticationFailedéª   z%Incorrect authentication credentials.Úauthentication_failedrd   N©rE   rF   rG   rH   r   ÚHTTP_401_UNAUTHORIZEDrb   rc   rR   r   rJ   rd   r0   r   rq   rq   ª   s   † Ø×.Ñ.€KÙÐ>Ó?€NØ*ƒLr0   rq   c                   ó@   • \ rS rSr\R
                  r\" S5      rSr	Sr
g)ÚNotAuthenticatedé°   z-Authentication credentials were not provided.Únot_authenticatedrd   Nrt   rd   r0   r   rw   rw   °   s   † Ø×.Ñ.€KÙÐFÓG€NØ&ƒLr0   rw   c                   ó@   • \ rS rSr\R
                  r\" S5      rSr	Sr
g)ÚPermissionDeniedé¶   z2You do not have permission to perform this action.Úpermission_deniedrd   N)rE   rF   rG   rH   r   ÚHTTP_403_FORBIDDENrb   rc   rR   r   rJ   rd   r0   r   r{   r{   ¶   s   † Ø×+Ñ+€KÙÐKÓL€NØ&ƒLr0   r{   c                   ó@   • \ rS rSr\R
                  r\" S5      rSr	Sr
g)ÚNotFoundé¼   z
Not found.Ú	not_foundrd   N)rE   rF   rG   rH   r   ÚHTTP_404_NOT_FOUNDrb   rc   rR   r   rJ   rd   r0   r   r€   r€   ¼   s   † Ø×+Ñ+€KÙ�|“_€NØƒLr0   r€   c                   óX   ^ • \ rS rSr\R
                  r\" S5      rSr	SU 4S jjr
SrU =r$ )ÚMethodNotAllowedéÂ   zMethod "{method}" not allowed.Úmethod_not_allowedc                 ón   >• Uc"  [        U R                  5      R                  US9n[        TU ]  X#5        g )N)Úmethod©r   rR   Úformatr)   rT   )r-   r‰   r"   r   r.   s       €r   rT   ÚMethodNotAllowed.__init__Ç   s3   ø€ Ø‰>Ü˜t×2Ñ2Ó3×:Ñ:À&Ð:ÐIˆFÜ‰Ñ˜Õ&r0   rd   r`   )rE   rF   rG   rH   r   ÚHTTP_405_METHOD_NOT_ALLOWEDrb   rc   rR   r   rT   rJ   rK   rL   s   @r   r…   r…   Â   s(   ø† Ø×4Ñ4€KÙÐ7Ó8€NØ'€L÷'õ 'r0   r…   c                   óX   ^ • \ rS rSr\R
                  r\" S5      rSr	SU 4S jjr
SrU =r$ )ÚNotAcceptableéÍ   z,Could not satisfy the request Accept header.Únot_acceptablec                 ó0   >• X0l         [        TU ]	  X5        g r   )Úavailable_renderersr)   rT   )r-   r"   r   r“   r.   s       €r   rT   ÚNotAcceptable.__init__Ò   s   ø€ Ø#6Ô Ü‰Ñ˜Õ&r0   )r“   ©NNN)rE   rF   rG   rH   r   ÚHTTP_406_NOT_ACCEPTABLErb   rc   rR   r   rT   rJ   rK   rL   s   @r   r�   r�   Í   s(   ø† Ø×0Ñ0€KÙÐEÓF€NØ#€L÷'õ 'r0   r�   c                   óX   ^ • \ rS rSr\R
                  r\" S5      rSr	SU 4S jjr
SrU =r$ )ÚUnsupportedMediaTypeé×   z1Unsupported media type "{media_type}" in request.Úunsupported_media_typec                 ón   >• Uc"  [        U R                  5      R                  US9n[        TU ]  X#5        g )N)Ú
media_typerŠ   )r-   rœ   r"   r   r.   s       €r   rT   ÚUnsupportedMediaType.__init__Ü   s3   ø€ Ø‰>Ü˜t×2Ñ2Ó3×:Ñ:ÀjÐ:ÐQˆFÜ‰Ñ˜Õ&r0   rd   r`   )rE   rF   rG   rH   r   ÚHTTP_415_UNSUPPORTED_MEDIA_TYPErb   rc   rR   r   rT   rJ   rK   rL   s   @r   r˜   r˜   ×   s(   ø† Ø×8Ñ8€KÙÐJÓK€NØ+€L÷'õ 'r0   r˜   c                   óx   ^ • \ rS rSr\R
                  r\" S5      r\" S5      r	\" S5      r
SrSU 4S jjrSrU =r$ )	Ú	Throttledéâ   zRequest was throttled.z$Expected available in {wait} second.z%Expected available in {wait} seconds.Ú	throttledc                 ó<  >• Uc  [        U R                  5      nUbk  [        R                  " U5      nSR	                  U[        [        U R                  R                  US9U R                  R                  US9U5      5      45      nXl	        [        TU ]-  X#5        g )NÚ ©Úwait)r   rR   ÚmathÚceilÚjoinr   Úextra_detail_singularr‹   Úextra_detail_pluralr¦   r)   rT   )r-   r¦   r"   r   r.   s       €r   rT   ÚThrottled.__init__é   s”   ø€ Ø‰>Ü˜t×2Ñ2Ó3ˆFØÑÜ—9’9˜T“?ˆDØ—X‘XØÜœ( 4×#=Ñ#=×#DÑ#DÈ$Ð#DÐ#OØ#'×#;Ñ#;×#BÑ#BÈÐ#BÐ#MØ#'ó)ó *ð+ó ,ˆFð
 Œ	Ü‰Ñ˜Õ&r0   r¥   r•   )rE   rF   rG   rH   r   ÚHTTP_429_TOO_MANY_REQUESTSrb   rc   rR   rª   r«   r   rT   rJ   rK   rL   s   @r   r    r    â   s@   ø† Ø×3Ñ3€KÙÐ/Ó0€NÙÐDÓEÐÙÐCÓDÐØ€L÷'õ 'r0   r    c                 ó:   • SS0n[        U[        R                  S9$ )z
Generic 500 error handler.
rP   zServer Error (500)r   )r   r   ra   )ÚrequestÚargsÚkwargsr   s       r   Úserver_errorr²   ÷   s&   € ð
 	Ð%ð€Dô ˜¤V×%JÑ%JÑKÐKr0   c                 ó:   • SS0n[        U[        R                  S9$ )z
Generic 400 error handler.
rP   zBad Request (400)r   )r   r   rk   )r¯   Ú	exceptionr°   r±   r   s        r   Úbad_requestrµ     s&   € ð
 	Ð$ð€Dô ˜¤V×%@Ñ%@ÑAÐAr0   r   )"rI   r§   Údjango.httpr   Údjango.utils.encodingr   Údjango.utils.translationr   rc   r   Úrest_frameworkr   Ú'rest_framework.utils.serializer_helpersr	   r
   r   r    r%   r=   r   Ú	ExceptionrN   rf   rm   rq   rw   r{   r€   r…   r�   r˜   r    r²   rµ   rd   r0   r   Ú<module>r¼      sÎ   ðñó å $Ý +Ý 6Ý -å !ß Jô#ò4òô!�#ô !ôH".�9ô ".ôX7�lô 7ô*!�ô !ô+˜<ô +ô'�|ô 'ô'�|ô 'ôˆ|ô ô'�|ô 'ô'�Lô 'ô'˜<ô 'ô'�ô 'ò*LóBr0   