Ë
    õ�Dj3  ã                   ó^  — d dl Z d dlZd dlmZmZmZ d dlmZ d dlmZm	Z	m
Z
mZmZmZ d dlmZ er]d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ eeef   Zeeeeef   geeef   f   Zeeef   Z ee!e"e#fZ$dZ%dZ&dZ'dZ(g Z)d„ Z* G d„ d«      Z+d„ Z,y)é    N)ÚMappingÚSequenceÚSet)Údatetime)ÚAnnotatedValueÚcapture_internal_exceptionÚdisable_capture_eventÚformat_timestampÚ	safe_reprÚstrip_string)ÚTYPE_CHECKING)ÚTracebackType)ÚAny)ÚCallable)ÚContextManager)ÚDict)ÚList)ÚOptional)ÚType)ÚUnion)ÚNotImplementedTypei@B é   é
   z<cyclic>c                 ó.   — t         j                  | «       y ©N)Úglobal_repr_processorsÚappend)Ú	processors    úYC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sentry_sdk/serializer.pyÚadd_global_repr_processorr    =   s   € ä×!Ñ! )Õ,ó    c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚMemo©Ú_idsÚ_objsc                 ó    — i | _         g | _        y r   r$   )Úselfs    r   Ú__init__zMemo.__init__E   s   € àˆŒ	Øˆ�
r!   c                 ó<   — | j                   j                  |«       | S r   )r&   r   ©r(   Úobjs     r   ÚmemoizezMemo.memoizeJ   s   € à�
‰
×Ñ˜#ÔØˆr!   c                 ó‚   — | j                   d   }t        |«      | j                  v ry|| j                  t        |«      <   y)NéÿÿÿÿTF)r&   Úidr%   r+   s     r   Ú	__enter__zMemo.__enter__O   s7   € à�j‰j˜‰nˆÜˆc‹7�d—i‘iÑØà!$ˆD�I‰I”b˜“gÑØr!   c                 ó~   — | j                   j                  t        | j                  j                  «       «      d «       y r   )r%   Úpopr0   r&   )r(   ÚtyÚvalueÚtbs       r   Ú__exit__zMemo.__exit__X   s&   € ð 	�	‰	�‰”b˜Ÿ™Ÿ™Ó)Ó*¨DÕ1r!   N)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r)   r-   r1   r7   © r!   r   r#   r#   B   s   „ Ø!€Iòò
ò
ó2r!   r#   c                 ó  ‡‡‡‡‡‡‡	‡
‡‡‡‡‡‡— t        «       Šg Šg Š|j                  dd«      dk(  Š|j                  dd«      Š|j                  dd«      Š|j                  dd«      Š
ˆ
fd„Šˆˆfd	„Šˆˆˆfd
„Šˆfd„Š	 	 	 	 	 	 dˆ	ˆˆˆfd„	Šˆfd„Šˆˆˆˆˆˆˆˆˆˆˆfd„Š	t        j                  d«       	  ‰| fi |¤Ž}‰s‰rt	        |t
        «      r‰d   |d<   |t        j                  d«       S # t        j                  d«       w xY w)at  
    A very smart serializer that takes a dict and emits a json-friendly dict.
    Currently used for serializing the final Event and also prematurely while fetching the stack
    local variables for each frame in a stacktrace.

    It works internally with 'databags' which are arbitrary data structures like Mapping, Sequence and Set.
    The algorithm itself is a recursive graph walk down the data structures it encounters.

    It has the following responsibilities:
    * Trimming databags and keeping them within MAX_DATABAG_BREADTH and MAX_DATABAG_DEPTH.
    * Calling safe_repr() on objects appropriately to keep them informative and readable in the final payload.
    * Annotating the payload with the _meta field whenever trimming happens.

    :param max_request_body_size: If set to "always", will never trim request bodies.
    :param max_value_length: The max length to strip strings to, defaults to sentry_sdk.consts.DEFAULT_MAX_VALUE_LENGTH
    :param is_vars: If we're serializing vars early, we want to repr() things that are JSON-serializable to make their type more apparent. For example, it's useful to see the difference between a unicode-string and a bytestring when viewing a stacktrace.
    :param custom_repr: A custom repr function that runs before safe_repr on the object to be serialized. If it returns None or throws internally, we will fallback to safe_repr.

    Úmax_request_body_sizeNÚalwaysÚmax_value_lengthÚis_varsFÚcustom_reprc                 óp   •— 	 d }‰� ‰| «      }|xs t        | «      S # t        $ r t        | «      cY S w xY wr   )r   Ú	Exception)r5   Ú
repr_valuerB   s     €r   Ú_safe_repr_wrapperz%serialize.<locals>._safe_repr_wrapper‚   sG   ø€ ð	$ØˆJØÐ&Ù(¨Ó/�
ØÒ1¤¨5Ó!1Ð1øÜò 	$Ü˜UÓ#Ò#ð	$ús   ƒ ž5´5c                  óP  •— t        ‰«      t        ‰«      k  rY	 ‰t        ‰«      dz
     }‰d   j                  t        |«      i «      }‰j	                  |«       t        ‰«      t        ‰«      k  rŒY‰d   j                  di «      j                  | «       y # t        $ r i }Y Œ[w xY w)Né   r/   Ú )ÚlenÚ
setdefaultÚstrÚ
IndexErrorr   Úupdate)ÚmetaÚsegmentÚnodeÚ
meta_stackÚpaths      €€r   Ú	_annotatezserialize.<locals>._annotateŒ   sž   ø€ ä�*‹o¤ T£Ò*ðØœs :›°Ñ2Ñ3�Ø! "‘~×0Ñ0´°W³¸rÓB�ð ×Ñ˜dÔ#ô �*‹o¤ T£Ó*ð 	�2‰×!Ñ! " bÓ)×0Ñ0°Õ6øô ò Ø’ðús   š/B ÂB%Â$B%c                  ó„   •— 	 ‰ry ‰«       } | dv r| S ‰d   }|dk(  r‰d   dk(  r‰d    y|dk(  ry	 y
# t         $ r Y y	w xY w)zØ
        A databag is any value that we need to trim.
        True for stuff like vars, request bodies, breadcrumbs and extra.

        :returns: `True` for "yes", `False` for :"no", `None` for "maybe soon".
        T)TNr   ÚbreadcrumbsrH   Úvaluesé   ÚextraNF©rM   )Úis_request_bodyÚp0Ú_is_request_bodyrA   rS   s     €€€r   Ú_is_databagzserialize.<locals>._is_databag™   sr   ø€ ð	ÙØá.Ó0ˆOØ ,Ñ.Ø&Ð&à�a‘ˆBØ�]Ò" t¨A¡w°(Ò':Ø�Q’Øà�WŠ}Øð ð øô ò 	Ùð	ús   ƒ3 †3 “3 «3 ³	?¾?c                  óH   •— 	 ‰ d   dk(  r	‰ d   dk(  ryy# t         $ r Y y w xY w)Nr   ÚrequestrH   ÚdataTFrZ   )rS   s   €r   r]   z#serialize.<locals>._is_request_body¶   s;   ø€ ð	Ø�A‰w˜)Ò#¨¨Q©°6Ò(9Øð øô ò 	Ùð	ús   ƒ •	! !c           	      óØ  •— |�‰j                  |«       	 ‰	j                  | «      5 }|r3t        cd d d «       |�"‰j                  «        ‰
t	        ‰«      dz   d …= S S  ‰| |||||¬«      cd d d «       |�"‰j                  «        ‰
t	        ‰«      dz   d …= S S # 1 sw Y   nxY wnx# t
        $ rl t        t        j                  «       «       |r&Y |�"‰j                  «        ‰
t	        ‰«      dz   d …= yyY |�"‰j                  «        ‰
t	        ‰«      dz   d …= y y w xY w	 |�"‰j                  «        ‰
t	        ‰«      dz   d …= y y # |�"‰j                  «        ‰
t	        ‰«      dz   d …= w w xY w)NrH   )Ú
is_databagr[   Úshould_repr_stringsÚremaining_depthÚremaining_breadthz=<failed to serialize, use init(debug=True) to see error logs>)	r   r-   ÚCYCLE_MARKERr3   rJ   ÚBaseExceptionr   ÚsysÚexc_info)r,   rc   r[   rd   rP   rf   re   ÚresultÚ_serialize_node_implÚmemorR   rS   s           €€€€r   Ú_serialize_nodez"serialize.<locals>._serialize_nodeÀ   s‘  ø€ ð ÐØ�K‰K˜Ô ð	0Ø—‘˜cÓ"ð  fÙÜ'÷ð ð( Ð"Ø—‘”
Øœs 4›y¨1™}™Ñ/ð #ñ! ,ØØ)Ø$3Ø(;Ø$3Ø&7ô÷	ð ð( Ð"Ø—‘”
Øœs 4›y¨1™}™Ñ/ð #÷)ð úð øô ò 	Ü&¤s§|¡|£~Ô6áØVð Ð"Ø—‘”
Øœs 4›y¨1™}™Ñ/ð #ð àÐ"Ø—‘”
Øœs 4›y¨1™}™Ñ/ð #ð	úðð( Ð"Ø—‘”
Øœs 4›y¨1™}™Ñ/ð #øˆwÐ"Ø—‘”
Øœs 4›y¨1™}™Ñ/ð #úsQ   –B% §B¯	B% ÁBÁ*	B% ÂB!ÂB% Â$E Â%(DÃE Ã3E ÄDÄE Å&E)c                 ód   •— t        | t        «      r ‰di | j                  ¤Ž | j                  } | S )Nr<   )Ú
isinstancer   Úmetadatar5   )r,   rT   s    €r   Ú_flatten_annotatedz%serialize.<locals>._flatten_annotatedæ   s*   ø€ ä�cœ>Ô*ÙÑ%˜Ÿ™Ò%Ø—)‘)ˆCØˆ
r!   c                 ó*  •— t        | t        «      rd}|€‰}|€ ‰«       }|€ ‰«       }|r+|r‰rt        d«      }t        d«      }n|€t        }|€t        } ‰| «      } |�-|dk  r( ‰ddgg¬«       |r ‰t         ‰| «      ‰¬«      «      S y |r1t        r+‰|dœ}t        D ]  } || |«      }|t        usŒ ‰|«      c S  t        t        | «      d	d «      }	| �t        | t        t        t        f«      rF|s:t        | t        «      r2t        j                  | «      st        j                  | «      r ‰| «      S | S t        |	«      r |	| «      S t        | t         «      r|st#        t%        | «      «      S  ‰| «      S t        | t&        «      r~t)        | j+                  «       «      } i }
d}| j+                  «       D ]L  \  }}|�||k\  r ‰t-        | «      ¬
«        |
S t#        |«      } ‰||||||�|dz
  nd |¬«      }||
|<   |dz  }ŒN |
S t        | t.        «      snt        | t0        t2        f«      rXg }t5        | «      D ]F  \  }}|�||k\  r ‰t-        | «      ¬
«        |S |j7                   ‰||||||�|dz
  nd |¬«      «       ŒH |S |r	 ‰| «      } nJt        | t8        «      st        | t:        «      r| j=                  dd«      } t        | t"        «      s ‰| «      } t-        ‰«      dk(  xr ‰d   dk(  xr ‰d   dk(  }|r| S  ‰t        | ‰¬«      «      S )NFÚinfr   z!limitÚx)Úrem)Ú
max_length)rm   re   Ú__sentry_repr__)rJ   rH   )rP   rd   rc   r[   re   rf   zutf-8Úreplaceé   Úspansr/   Údescription)rp   r   ÚfloatÚMAX_DATABAG_DEPTHÚMAX_DATABAG_BREADTHr   r   ÚNotImplementedÚgetattrÚtypeÚboolÚintÚmathÚisinfÚisnanÚcallabler   rL   r
   r   ÚdictÚitemsrJ   Úserializable_str_typesr   r   Ú	enumerater   ÚbytesÚ	bytearrayÚdecode)r,   rc   r[   rd   re   rf   Úhintsr   rk   Úsentry_reprÚrv_dictÚiÚkÚvÚstr_kÚrv_listÚis_span_descriptionrT   rr   r^   r]   rF   rn   rA   Úkeep_request_bodiesr@   rm   rS   s                    €€€€€€€€€€€r   rl   z'serialize.<locals>._serialize_node_implí   s|  ø€ ô �cœ>Ô*Ø"'ÐØÐ&Ø")ÐàÐÙ$›ˆJàÐ"Ù.Ó0ˆOáÙÑ#6Ü"'¨£,�Ü$)¨%£LÑ!à"Ð*Ü&7�OØ$Ð,Ü(;Ð%á  Ó%ˆàÐ&¨?¸aÒ+?Ù˜H c˜?Ð+Õ,ÙÙ)Ü Ñ!3°CÓ!8ÐEUÔVóð ð áÕ0Ø!°oÑFˆEÜ3ò 6�	Ù" 3¨Ó.�Ø¤Ò/Ù-¨fÓ5Ò5ð6ô
 œd 3›iÐ):¸DÓAˆàˆ;œ* S¬4´´eÐ*<Ô=Ù"Ü˜3¤Ô&¬D¯J©J°s¬O¼t¿z¹zÈ#¼á)¨#Ó.Ð.à�
ä�kÔ"Ù˜sÓ#Ð#ä˜œXÔ&ñ +ô Ô$ SÓ)Ó*ðñ (¨Ó,ðô ˜œWÔ%ô �s—y‘y“{Ó#ˆCàˆGØˆAàŸ	™	›ò ‘��1Ø$Ð0°QÐ:KÒ5KÙ¤# c£(Õ+Øð" ˆNô ˜A›�Ù#ØØ!Ø(;Ø)Ø$3à/>Ð/J˜¨!Ò+ÐPTà&7ô
�ð "#�˜‘Ø�Q‘‘ð%ð( ˆNä˜CÔ!7Ô8¼ZØ”#”x�ô>
ð ˆGä! #›ò ‘��1Ø$Ð0°QÐ:KÒ5KÙ¤# c£(Õ+Øð  ˆNð —‘Ù#ØØ !Ø,?Ø#-Ø(7à3BÐ3N˜O¨aÒ/ÐTXà*;ô
õðð& ˆNáÙ$ SÓ)‰Cä˜#œuÔ%¬°C¼Ô)CØ—j‘j ¨)Ó4�ä˜c¤3Ô'Ù(¨Ó-�ô �‹I˜‰NÒO˜t A™w¨'Ñ1ÒO°d¸2±hÀ-Ñ6Oð 	ñ ØˆJá!¤,¨sÐ?OÔ"PÓQÐQr!   Tr   Ú_meta)NNNNNN)r#   r3   r	   Úsetrp   r‰   )ÚeventÚkwargsÚserialized_eventrT   rr   r^   r]   rF   rn   rl   rB   rA   r™   r@   rm   rR   rS   s      @@@@@@@@@@@@@@r   Ú	serializerŸ   b   s  ÿý€ ô* ‹6€DØ€DØ€Jð 	�
‰
Ð*¨DÓ1°XÑ=ð ð —z‘zÐ"4°dÓ;ÐØ�j‰j˜ EÓ*€GØ—*‘*˜]¨DÓ1€Kô$õ7öô:ð ØØ ØØØ÷$0ð $0ôL÷JRö JRô^ ×Ñ˜dÔ#ð)Ù*¨5Ñ;°FÑ;ÐÙ™:¬*Ð5EÄtÔ*LØ(2°1©Ð˜WÑ%àä×!Ñ! %Õ(øÔ×!Ñ! %Õ(ús   Â8&C4 Ã4D)-ri   r…   Úcollections.abcr   r   r   r   Úsentry_sdk.utilsr   r   r	   r
   r   r   Útypingr   Útypesr   r   r   r   r   r   r   r   r   Úsentry_sdk._typesr   rL   ÚSpanÚReprProcessorr„   ÚSegmentr�   rŽ   Ú
memoryviewr‹   ÚMAX_EVENT_BYTESr~   r   rg   r   r    r#   rŸ   r<   r!   r   ú<module>rª      sÎ   ðÛ 
Û ß 2Ñ 2Ý ÷÷ õ !áÝ#åÝÝ%ÝÝÝÝÝå4à��S�‰>€Dà˜c 4¨¨S¨¡>Ð2°EÐ:LÈcÐ:QÑ4RÐRÑS€MØ�C˜�H‰o€Gð ˜u i°Ð<Ð ð €ð Ð ØÐ Ø€ð Ð ò-÷
2ñ 2ó@b)r!   