
    D%jl                     T    d dl mZ d dlmZmZmZ d dlmZmZ d dlm	Z	 d Z
d Zd ZdS )	    )Decimal)datetimetimezone	timedelta)CoinMarketContextMarketContextSnapshot)DataQualityGatec                     t          dt          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          j        t          j                  t          d	          d
d          }|                    |            t          di |S )NWLD55z1.1z1.0z0.0501000000z1.2z0.95FT)coinrsisma_fastsma_slowatrfundingvolumemid
spread_pct	timestampreliability_score
stale_datal2_available )dictr   r   nowr   utcupdater   )	overridesbases     tests/test_data_quality_gate.py_ctxr$      s    QVFOOWS\\'):L:LRYZ_R`R`6??hl8<.H.H\cdj\k\kt	  D 	KK	$$t$$$    c                  V   t          dt          d                    } t          t          j        t
          j                  t          d          z
            }|                     |          j	        du sJ d|                     |          j
        v sJ d	|                     t          d
                    j
        v sJ d|                     t          t          d                              j
        v sJ d|                     t                      d          j
        v sJ d S )N<   z0.20)max_age_secondsmax_spread_pct   )minutes)r   Fstale_contextmissing_l2_book)r   spread_too_widez0.30)r   api_degradedT)degraded_mode_active)r	   r   r$   r   r   r   r   r   evaluateallowedreasons)gateolds     r#   Ktest_data_quality_gate_blocks_stale_missing_l2_high_spread_and_api_degradedr6      s   2gfooNNND
hl33i6J6J6JJ
K
K
KC==%....dmmC0088888d.F.F.F G G OOOOOdgfoo.N.N.N O O WWWWWT]]466]MMUUUUUUUr%   c                     t          j        d dD                       } |                     d          j        dk    sJ |                     d          j        dk    sJ t	          g d                              | j                  sJ d S )Nc                 .    g | ]}t          |           S ))r   )r$   ).0cs     r#   
<listcomp>zLtest_market_snapshot_contains_core_and_research_universe.<locals>.<listcomp>   s2      5N  5N  5NaTq\\\  5N  5N  5Nr%   )	BTCETHSOLLINKr   SUIENABCHHYPEr   r@   )r<   r=   r>   r?   r   r@   rA   rB   )r   from_coin_contextsgetr   setissubsetcoins)snaps    r#   8test_market_snapshot_contains_core_and_research_universerJ      s     3  5N  5N  LM  5N  5N  5N  O  OD88E??5((((88E??5((((HHHIIRRSWS]^^^^^^^r%   N)decimalr   r   r   r   src.market.contextr   r   src.risk.data_quality_gater	   r$   r6   rJ   r   r%   r#   <module>rN      s          2 2 2 2 2 2 2 2 2 2 G G G G G G G G 6 6 6 6 6 6% % %V V V_ _ _ _ _r%   