U vi @s>ddlmZddlmZmZddlmZGdddejZdS))RLock)AnyList)abccseZdZdZedfdd ZejddddZeje dd d Z dd d d Z dd ddZ eje dddZ eejd ddZed ddZeed ddZZS)CompositeDisposablezIRepresents a group of disposable resources that are disposed together)argscsH|rt|dtr|d|_n t||_d|_t|_tt|dS)NrF) isinstancelist disposable is_disposedrlocksuperr__init__)selfr __class__Y/opt/alt/python38/lib/python3.8/site-packages/reactivex/disposable/compositedisposable.pyr s   zCompositeDisposable.__init__N)itemreturnc Cs>d}|j|jrd}n |j|W5QRX|r:|dS)zAdds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed Args: item: Disposable to add.FTN)r r r appenddisposerrZshould_disposerrraddszCompositeDisposable.addc CsJ|jr dSd}|j ||jkr0|j|d}W5QRX|rF||S)z_Removes and disposes the first occurrence of a disposable from the CompositeDisposable.FT)r r r removerrrrrr&s  zCompositeDisposable.remove)rc CsD|jr dS|jd|_|j}g|_W5QRX|D] }|q2dS)zMDisposes all disposable in the group and removes them from the group.NT)r r r r)rcurrent_disposableZdisprrrr8szCompositeDisposable.disposec Cs4|j|j}g|_W5QRX|D] }|q"dS)zRemoves and disposes all disposable from the CompositeDisposable, but does not dispose the CompositeDisposable.N)r r r)rrr rrrclearGs zCompositeDisposable.clearcCs ||jkS)zDetermines whether the CompositeDisposable contains a specific disposable. Args: item: Disposable to search for Returns: True if the disposable was found; otherwise, Falser )rrrrrcontainsSs zCompositeDisposable.containscCs|jddSNrrrrrto_list_szCompositeDisposable.to_listcCs t|jSrlenr r rrr__len__bszCompositeDisposable.__len__cCs t|jSrr"r rrrlengtheszCompositeDisposable.length)__name__ __module__ __qualname____doc__rrrDisposableBaserboolrrrrrr!intr$propertyr% __classcell__rrrrrs   rN) threadingrtypingrrZ reactivexrr*rrrrrs