
    h                         S SK r S SKrS SKr\S4S jr " S S\5      r " S S\5      rSS jr	SS	 jr
SS
 jrSS jrSS jrS rS rS rg)    Nevalc                 P    [        XS5      n[        U0 [        R                  5      $ )Nr   )compiler   sysmodules)codepathmodeexprs       fC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\debugpy/common/util.pyevaluater   
   s#    
 4v&Db#++&&    c                   6   ^  \ rS rSrSrSrS rU 4S jrSrU =r	$ )
Observable   z$An object with change notifications. c                     / U l         g N	observers)selfs    r   __init__Observable.__init__   s	    r   c                    >  [         TU ]  X5      U R                   H  nU" X5        M     $ ! U R                   H  nU" X5        M     f = fr   )super__setattr__r   )r   namevalueob	__class__s       r   r   Observable.__setattr__   s@    	7&t3nn4 %dnn4 %s	   - A
r   )
__name__
__module____qualname____firstlineno____doc__r   r   r   __static_attributes____classcell__)r    s   @r   r   r      s    .I r   r   c                   8    \ rS rSrSr\S 5       rSS jrS rSr	g)	Env#   z!A dict for environment variables.c                  4    [        [        R                  5      $ )z.Returns a snapshot of the current environment.)r*   osenvironr   r   r   snapshotEnv.snapshot&   s     2::r   Nc                 D    [        U 5      nUb  UR                  U5        U$ r   )r*   update)r   updated_fromresults      r   copyEnv.copy+   s"    T#MM,'r   c                 t     [         R                  R                  X   -   nX#-   X'   g! [         a    Sn Nf = f)zdPrepends a new entry to a PATH-style environment variable, creating
it if it doesn't exist already.
 N)r-   r	   pathsepKeyError)r   keyentrytails       r   
prepend_toEnv.prepend_to1   s<    	77??TY.D L	  	D	s   ( 77r   r   )
r"   r#   r$   r%   r&   staticmethodr/   r5   r>   r'   r   r   r   r*   r*   #   s!    + !r   r*   c                 d    [        U [        5      (       a  U R                  X5      $ [        U 5      $ )z[Converts s to str, using the provided encoding. If s is already str,
it is returned as is.
)
isinstancebytesdecodestrsencodingerrorss      r   	force_strrJ   <   s(     *4Au)=)=188H%I3q6Ir   c                     [        U [        5      (       a  U R                  X5      $ [        U 5      n US:X  a  U R	                  X5        U $ )zConverts s to bytes, using the provided encoding. If s is already bytes,
it is returned as is.

If errors="strict" and s is bytes, its encoding is verified by decoding it;
UnicodeError is raised if it cannot be decoded.
strict)rB   rE   encoderC   rD   rF   s      r   force_bytesrN   C   sB     !Sxx))!HXHHX&r   c                     [        U SU5      $ )z'Same as force_bytes(s, "ascii", errors)asciirN   rG   rI   s     r   force_asciirS   T   s    q'6**r   c                     [        U SU5      $ )z&Same as force_bytes(s, "utf8", errors)utf8rQ   rR   s     r   
force_utf8rV   Y   s    q&&))r   c                     U R                   nU(       a   [        U5      n[	        USS5      $ ! [         aA     U R                  n N9! [         a$     [        U 5      nSn  NT! [         a       gf = ff = ff = f! [         a     Ngf = f)zReturns the most descriptive name of a Python module, class, or function,
as a Unicode string

If quote=True, name is quoted with repr().

Best-effort, but guaranteed to not fail - always returns something.
Fz	<unknown>zutf-8replace)r$   	Exceptionr"   reprrJ   )objquoter   s      r   nameofr]   ^   s     	:D T7I..%  
		<<D 	Cy   #"#		
  		s[   . A< 
A9A
A5A"A5A9"
A1,A5-A90A11A55A9<
B	B	c                     [        U SS9n [        R                  " U 5      nUSU< 3-  n [        R                  " U 5      u  p4USU 3-  nUS-  nU$ ! [         a     Nf = f! [         a     U$ f = f)zReturns the most descriptive name of a Python module, class, or function,
including source information (filename and linenumber), if available.

Best-effort, but guaranteed to not fail - always returns something.
T)r\   z (file z, line ))r]   inspectgetsourcefilegetsourcelinesrY   )r[   r   src_file_
src_linenos        r   	srcnameofrf   ~   s     #T"D((- 	'(&&	+#2237MA gj\**DK  		   Ks"   A# A 
A A #
A10A1c                  (    S[         R                  ;  $ )z>Returns True if the caller should hide something from debugpy.DEBUGPY_TRACE_DEBUGPY)r-   r.   r   r   r   hide_debugpy_internalsri      s    ""**44r   c                 @    [        5       (       a  SU l        SU l        gg)zDisables tracing for the given thread if DEBUGPY_TRACE_DEBUGPY is not set.
DEBUGPY_TRACE_DEBUGPY is used to debug debugpy with debugpy
TN)ri   pydev_do_not_traceis_pydev_daemon_thread)threads    r   hide_thread_from_debuggerrn      s"     $(!(,%  r   )rL   )F)r`   r-   r   __file__r   objectr   dictr*   rJ   rN   rS   rV   r]   rf   ri   rn   r   r   r   <module>rr      s^   
  	 
 !v '  !$ !2J"+
*
/@65
-r   