U vi@s8ddlmZddlmZddlmZGdddeZdS))RLock)Optional)DisposableBasecs`eZdZdZddfdd ZeedddZeddd d Ze eeZ ddd d Z Z S) MultipleAssignmentDisposablezyRepresents a disposable resource whose underlying disposable resource can be replaced by another disposable resource.N)returncs"d|_d|_t|_tdS)NF)current is_disposedrlocksuper__init__self __class__b/opt/alt/python38/lib/python3.8/site-packages/reactivex/disposable/multipleassignmentdisposable.pyr sz%MultipleAssignmentDisposable.__init__cCs|jS)N)rr rrrget_disposablesz+MultipleAssignmentDisposable.get_disposable)valuerc Cs2|j|j}|s||_W5QRX|r.|dS)zIf the MultipleAssignmentDisposable has already been disposed, assignment to this property causes immediate disposal of the given disposable object.Nr rrdispose)r rZshould_disposerrrset_disposables z+MultipleAssignmentDisposable.set_disposablec CsBd}|j|js$d|_|j}d|_W5QRX|dk r>|dS)zNDisposes the underlying disposable as well as all future replacements.NTr)r oldrrrr$sz$MultipleAssignmentDisposable.dispose) __name__ __module__ __qualname____doc__r rrrrpropertyZ disposabler __classcell__rrrrrs  rN) threadingrtypingrZ reactivex.abcrrrrrrs