U
vi @ s8 d dl mZ d dlmZ d dlmZ G dd deZdS ) )RLock)Optional)DisposableBasec s` e Zd ZdZdd fddZee dddZeddd d
Ze eeZ
ddddZ ZS )
MultipleAssignmentDisposablezyRepresents a disposable resource whose underlying disposable
resource can be replaced by another disposable resource.N)returnc s" d | _ d| _t | _t d S )NF)currentis_disposedr locksuper__init__self __class__ b/opt/alt/python38/lib/python3.8/site-packages/reactivex/disposable/multipleassignmentdisposable.pyr s z%MultipleAssignmentDisposable.__init__c C s | j S )N)r r r r r get_disposable s z+MultipleAssignmentDisposable.get_disposable)valuer c C s2 | j | j}|s|| _W 5 Q R X |r.| dS )zIf the MultipleAssignmentDisposable has already been
disposed, assignment to this property causes immediate disposal
of the given disposable object.Nr r r dispose)r
r Zshould_disposer r r set_disposable s z+MultipleAssignmentDisposable.set_disposablec C sB d}| j | js$d| _| j}d| _W 5 Q R X |dk r>| dS )zNDisposes the underlying disposable as well as all future
replacements.NTr )r
oldr r r r $ s z$MultipleAssignmentDisposable.dispose)
__name__
__module____qualname____doc__r r r r r propertyZ
disposabler
__classcell__r r r r r s
r N) threadingr typingr Z
reactivex.abcr r r r r r