
    j(                        d dl mZ d dlmZ d dlmZ d dlmZ h dZ ed           G d d	                      Z	ddZ
dS )    )annotations)	dataclass)Mapping)	BotConfig>   DAIUSDFRAXTUSDUSDCUSDEUSDPUSDTFDUSDPYUSDSTABLET)frozenc                  "    e Zd ZU ded<   dd	Zd
S )MarketUniverseFilterr   cfgcoinstr
volume_24hfloatreturnboolc                   t          |                                                                          }|r|                    d          rdS |                    dd                              dd                                          sdS |t          v rdS || j        j        v rdS | j        j	        r|| j        j	        vrdS t          |pd          t          | j        j                  k    S )N@F- _        )r   upperstrip
startswithreplaceisalnumSTABLE_OR_INDEX_NAMESr   	blacklistallowed_coinsr   min_volume_24h)selfr   r   symbols       market_universe.pyallowedzMarketUniverseFilter.allowed   s    T""((** 	**3// 	5~~c2&&..sB77??AA 	5***5TX'''58! 	fDH4J&J&J5Z&3''51H+I+III    N)r   r   r   r   r   r   )__name__
__module____qualname____annotations__r.    r/   r-   r   r      s9         NNNJ J J J J Jr/   r   volumesMapping[str, float]r   r   r   	list[str]c                    t          |          fd|                                 D             }|                    d            d |d t          |j                           D             S )Nc                    g | ]i\  }}                     t          |          t          |pd                     7t          |                                          t          |pd           fjS )r!   )r.   r   r   r"   ).0r   volumefilts      r-   
<listcomp>z%select_scan_coins.<locals>.<listcomp>"   st       D&<<D		53#7#788	T		E&-C001  r/   c                $    | d          | d         fS )N   r   r4   )items    r-   <lambda>z#select_scan_coins.<locals>.<lambda>'   s    DG8T!W"5 r/   )keyc                    g | ]\  }}|S r4   r4   )r:   r   r    s      r-   r=   z%select_scan_coins.<locals>.<listcomp>(   s    CCCWT1DCCCr/   )r   itemssortintmax_scan_coins)r5   r   r.   r<   s      @r-   select_scan_coinsrH       s    $$D   #MMOO  G
 LL55L666CC(A#c.@*A*A(A BCCCCr/   N)r5   r6   r   r   r   r7   )
__future__r   dataclassesr   typingr   configr   r'   r   rH   r4   r/   r-   <module>rM      s    " " " " " " ! ! ! ! ! !               
 $J J J J J J J J$D D D D D Dr/   