
    'i?                     v    d dl mZmZmZmZ d dlZd dlmZ d dlm	Z	  G d de      Z
 G d d e	e
e            Zy)	    )absolute_importdivisionprint_functionunicode_literalsN)
MetaParams)with_metaclassc                   ,     e Zd ZdZ fdZ fdZ xZS )MetaSingletonz1Metaclass to make a metaclassed class a singletonc                 >    t         t        |   |||       d | _        y N)superr
   __init__
_singleton)clsnamebasesdct	__class__s       N/var/www/app/trading-bot/venv/lib/python3.12/site-packages/backtrader/store.pyr   zMetaSingleton.__init__    s    mS*4<    c                 d    | j                   t        t        |   |i || _         | j                   S r   )r   r   r
   __call__)r   argskwargsr   s      r   r   zMetaSingleton.__call__$   s4    >>!mS2DCFC N ~~r   )__name__
__module____qualname____doc__r   r   __classcell__)r   s   @r   r
   r
      s    ; r   r
   c                   P    e Zd ZdZdZdZd Zed        ZdZ	dZ
ddZd Zd	 Zd
 Zy)StorezBase class for all StoresF c                 8     | j                   |i |}| |_        |S )z%Returns ``DataCls`` with args, kwargs)DataCls_store)selfr   r   datas       r   getdatazStore.getdata3   s#    t||T,V,r   c                 8     | j                   |i |}| |_        |S )zAReturns broker with *args, **kwargs from registered ``BrokerCls``)	BrokerClsr%   )r   r   r   brokers       r   	getbrokerzStore.getbroker9   s%     //r   Nc                    | j                   s6d| _         t        j                         | _        t	               | _        d | _        |s|j                  x| _        | _        | j
                  j                  |       | j                  3t        | j                  d      r| j                  j                  |       y y y ||| _        y y )NTdata_started)_startedcollectionsdequenotifslistdatasr+   _env_cerebroappendhasattrr.   )r&   r'   r+   s      r   startzStore.startC   s    }} DM%++-DKDJDK(,		1DMDIJJd#{{&4;;7KK,,T2 8 '  DK  r   c                      y r   r"   )r&   s    r   stopz
Store.stopU   s    r   c                 @    | j                   j                  |||f       y r   )r2   r7   )r&   msgr   r   s       r   put_notificationzStore.put_notificationX   s    Cv./r   c                     | j                   j                  d       t        | j                   j                  d      D cg c]  }| c}S c c}w )z(Return the pending "store" notificationsN)r2   r7   iterpopleft)r&   xs     r   get_notificationszStore.get_notifications[   s9    4  3 3T:;a;;;s   	A
)NN)r   r   r   r   r/   paramsr(   classmethodr,   r*   r$   r9   r;   r>   rC   r"   r   r   r!   r!   ,   sH    #HF   IG!$0<r   r!   )
__future__r   r   r   r   r0   backtrader.metabaser   backtrader.utils.py3r   r
   objectr!   r"   r   r   <module>rJ      s9   ** *  * /J 2<N=&1 2<r   