
    "e                     >    d Z ddlmZ ddlmZ ddZ G d de      Zy)	zQFor debug purpose we are replacing actual builtin property by the debug property
    )get_global_debugger)	pydev_logNc                     | t         } t        }	 dd l}| |j                  d<   |S #  t	        j
                          Y |S xY w)Nr   property)DebugPropertyr   builtins__dict__r   	exception)new_propertyoriginalr   s      E/usr/lib/python3/dist-packages/_pydevd_bundle/pydevd_traceproperty.pyreplace_builtin_propertyr   
   sI    $H(4*% OOs   % >c                   >    e Zd ZdZd
dZddZd Zd Zd Zd Z	d	 Z
y)r   zA custom property which allows python property to get
    controlled by the debugger and selectively disable/re-enable
    the tracing.
    Nc                 <    || _         || _        || _        || _        y N)fgetfsetfdel__doc__)selfr   r   r   docs        r   __init__zDebugProperty.__init__   s    			    c                    || S t               }	 ||j                  r|j                          | j                  t	        d      | j                  |      ||j                          S S # ||j                          w w xY w)Nzunreadable attribute)r   disable_property_getter_tracedisable_tracingr   AttributeErrorenable_tracing)r   objobjtypeglobal_debuggers       r   __get__zDebugProperty.__get__%   s    ;K-/	1*/\/\//1yy $%;<<99S>*..0 +*..0 +s   AA) )A>c                     t               }	 ||j                  r|j                          | j                  t	        d      | j                  ||       ||j                          y y # ||j                          w w xY w)Nzcan't set attribute)r   disable_property_setter_tracer   r   r   r   )r   r   valuer!   s       r   __set__zDebugProperty.__set__3   s|    -/	1*/\/\//1yy $%:;;IIc5!*..0 +*..0 +s   AA' 'A<c                     t               }	 ||j                  r|j                          | j                  t	        d      | j                  |       ||j                          y y # ||j                          w w xY w)Nzcan't delete attribute)r   disable_property_deleter_tracer   r   r   r   )r   r   r!   s      r   
__delete__zDebugProperty.__delete__?   sy    -/	1*/]/]//1yy $%=>>IIcN*..0 +*..0 +s   AA& &A;c                     || _         | S )z5Overriding getter decorator for the property
        )r   )r   r   s     r   getterzDebugProperty.getterK        	r   c                     || _         | S )z5Overriding setter decorator for the property
        )r   )r   r   s     r   setterzDebugProperty.setterQ   r,   r   c                     || _         | S )z6Overriding deleter decorator for the property
        )r   )r   r   s     r   deleterzDebugProperty.deleterW   r,   r   )NNNNr   )__name__
__module____qualname__r   r   r"   r&   r)   r+   r.   r0    r   r   r   r      s*    
1
1
1r   r   r   )r   _pydevd_bundle.pydevd_commr   _pydev_bundler   r   objectr   r4   r   r   <module>r8      s#    : #	BF Br   