
    (i                     L    d dl mZmZmZmZmZ d dlmZ d dlm	Z	  G d d      Z
y)    )AnyDictIteratorListOptional)HexStr)EthSubscriptionc                       e Zd ZddZdefdZdeee      fdZ	dee   ddfdZ
dee   ddfdZd	edee   fd
Zdedee   fdZedeee      fd       Zd	edeee      fdZy)SubscriptionContainerreturnNc                 .    g | _         i | _        i | _        y N)subscriptionssubscriptions_by_idsubscriptions_by_labelselfs    a/var/www/br/venv/lib/python3.12/site-packages/web3/providers/persistent/subscription_container.py__init__zSubscriptionContainer.__init__   s    9;GI GI#    c                 ,    t        | j                        S r   )lenr   r   s    r   __len__zSubscriptionContainer.__len__   s    4%%&&r   c                 ,    t        | j                        S r   )iterr   r   s    r   __iter__zSubscriptionContainer.__iter__   s    D&&''r   subscriptionc                     | j                   j                  |       || j                  |j                  <   || j                  |j
                  <   y r   )r   appendr   idr   labelr   r   s     r   add_subscriptionz&SubscriptionContainer.add_subscription   s@    !!,/4@  1:F##L$6$67r   c                     | j                   j                  |       | j                  j                  |j                         | j
                  j                  |j                         y r   )r   remover   popr    r   r!   r"   s     r   remove_subscriptionz)SubscriptionContainer.remove_subscription#   sH    !!,/  $$\__5##''(:(:;r   sub_idc                 8    | j                   j                  |      S r   )r   get)r   r(   s     r   	get_by_idzSubscriptionContainer.get_by_id(   s    ''++F33r   r!   c                 8    | j                   j                  |      S r   )r   r*   )r   r!   s     r   get_by_labelz"SubscriptionContainer.get_by_label+   s    **..u55r   c                 Z    | j                   D cg c]  }|j                  | c}S c c}w r   )r   _handler)r   subs     r   handler_subscriptionsz+SubscriptionContainer.handler_subscriptions.   s%    #11NS\\5MNNNs   ((c                 F    | j                  |      }|r|j                  r|S y r   )r+   r/   )r   r(   r0   s      r   get_handler_subscription_by_idz4SubscriptionContainer.get_handler_subscription_by_id2   s#     nnV$3<<Jr   )r   N)__name__
__module____qualname__r   intr   r   r	   r   r   r#   r'   r   r+   strr-   propertyr   r1   r   r3    r   r   r   r      s    J
' '((?3#78 (G_S-A Gd G
<0D < <
4 4?3+? 46# 6/#*> 6 OtOC,@'A O O	/#&	'r   r   N)typingr   r   r   r   r   
eth_typingr   
web3.utilsr	   r   r:   r   r   <module>r>      s#    
& &r   