
    j                    T    d dl mZ d dlZd dlmc mZ d dlm	Z	m
Z
 d	dZd	dZd	dZdS )
    )annotationsN)BaselinePriceCacheshould_log_errorreturnNonec            
     l	   g dfd} t          d          }|j        }d}d	} |||| 
          }d}||k    }|s!t          j        d|fd||f          dt	          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          t          j        |          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          dz  }dd|iz  }	t          t          j	        |	                    d x}x}x}x}x}}|j        }d}d} |||| 
          }d}||k    }|s!t          j        d|fd||f          dt	          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          t          j        |          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          dz  }dd|iz  }	t          t          j	        |	                    d x}x}x}x}x}}|j        }d}d} |||| 
          }d}||k    }|s!t          j        d|fd||f          dt	          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          t          j        |          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          dz  }dd|iz  }	t          t          j	        |	                    d x}x}x}x}x}}ddg}
|
k    }|st          j        d|fd|
f          dt	          j                    v st          j                  rt          j                  ndt          j        |
          dz  }dd|iz  }t          t          j	        |                    d x}}
d S )Ncoinstrr   floatc                R                         |            dt                    z   S )N      Y@)appendlen)r	   callss    R/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_market_data_cache.pyfetcherzAtest_baseline_price_cache_reuses_value_until_ttl.<locals>.fetcher	   s&    Ts5zz!!    <   ttl_secondsBTCi  now_tsr   g     @Y@==zk%(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s, now_ts=%(py6)s, fetcher=%(py7)s)
} == %(py12)scacher   py0py2py4py6py7py9py12assert %(py14)spy14i  i%  g     Y@)z%(py0)s == %(py3)sr   )r   py3zassert %(py5)spy5)r	   r
   r   r   )
r   get
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)r   r   @py_assert1@py_assert3@py_assert5@py_assert8@py_assert11@py_assert10@py_format13@py_format15@py_assert2@py_format4@py_format6r   s                @r   0test_baseline_price_cache_reuses_value_until_ttlr>      sf   E" " " " " " 2...E9BUB4B99U4999BUB9UBBBBBBBBBB9UBBBBBBBBBBBB5BBBBB5BBBBBB9BBBBUBBBB4BBBBBBBBBBBBBBBBBBBBBB9BBBBUBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB9BUB4B99U4999BUB9UBBBBBBBBBB9UBBBBBBBBBBBB5BBBBB5BBBBBB9BBBBUBBBB4BBBBBBBBBBBBBBBBBBBBBB9BBBBUBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB9BUB4B99U4999BUB9UBBBBBBBBBB9UBBBBBBBBBBBB5BBBBB5BBBBBB9BBBBUBBBB4BBBBBBBBBBBBBBBBBBBBBB9BBBBUBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBEN"5N""""""""""5N""""""""""""5"""""5""""""N"""""""""""""""""""""""""""r   c            
       
 dt          d          g
d
fd} t          d	          }|j        }d
}d} ||||           }d}||k    }|s!t          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          t          j        |          dt          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          dz  }dd|iz  }	t          t          j
        |	                    d x}x}x}x}x}}|j        }d
}d} ||||           }d}||k    }|s!t          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          t          j        |          dt          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          dz  }dd|iz  }	t          t          j
        |	                    d x}x}x}x}x}}d S )Nr   znetwork down_coinr
   r   r   c                `                         d          }t          |t                    r||S )Nr   )pop
isinstance	Exception)r@   valuevaluess     r   r   zNtest_baseline_price_cache_keeps_previous_value_on_fetch_error.<locals>.fetcher   s.    

1eY'' 	Kr   
   r   ETH   r   r   r   r   r   r   r&   r'      )r@   r
   r   r   )RuntimeErrorr   r*   r+   r,   r-   r.   r/   r0   r1   r2   )r   r   r3   r4   r5   r6   r7   r8   r9   r:   rF   s             @r   =test_baseline_price_cache_keeps_previous_value_on_fetch_errorrL      s7   \.112F      2...E9?U?1?99U1g666?%?6%??????????6%????????????5?????5??????9????U????1???????????g?????g??????6????%?????????????????????????????????9@U@2@99U2w777@5@75@@@@@@@@@@75@@@@@@@@@@@@5@@@@@5@@@@@@9@@@@U@@@@2@@@@@@@@@@@w@@@@@w@@@@@@7@@@@5@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@r   c            
         i } d}d}d}t          ||| |          }d}||u }|s+t          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          d	t          j                    v st          j        |           rt          j        |           nd	t          j        |          t          j        |          t          j        |          d
z  }dd|iz  }t          t          j        |                    d x}x}x}x}x}}d}d}d}t          ||| |          }d}||u }|s+t          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          d	t          j                    v st          j        |           rt          j        |           nd	t          j        |          t          j        |          t          j        |          d
z  }dd|iz  }t          t          j        |                    d x}x}x}x}x}}d}d}d}t          ||| |          }d}||u }|s+t          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          d	t          j                    v st          j        |           rt          j        |           nd	t          j        |          t          j        |          t          j        |          d
z  }dd|iz  }t          t          j        |                    d x}x}x}x}x}}d S )Nr   r   r   )r   last_loginterval_secondsT)is)zm%(py9)s
{%(py9)s = %(py0)s(%(py2)s, now_ts=%(py4)s, last_log=%(py5)s, interval_seconds=%(py7)s)
} is %(py12)sr   rN   )r   r    r!   r)   r#   r$   r%   r&   r'   rG   F=   )	r   r+   r,   r-   r.   r/   r0   r1   r2   )	rN   r3   r4   @py_assert6r6   r7   r8   r9   r:   s	            r   1test_should_log_error_throttles_repeated_messagesrS   $   s   !#H!\!\QS\E!hQSTTT\X\\TX\\\\\\\\\\\TX\\\\\\\\\\\\\\\\\\\\\\\\E\\\\!\\\\\\\\\\\h\\\\\h\\\\\\QS\\\\T\\\\X\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\!^"^RT^E"xRTUUU^Y^^UY^^^^^^^^^^^UY^^^^^^^^^^^^^^^^^^^^^^^^E^^^^"^^^^^^^^^^^x^^^^^x^^^^^^RT^^^^U^^^^Y^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!]"]RT]E"xRTUUU]Y]]UY]]]]]]]]]]]UY]]]]]]]]]]]]]]]]]]]]]]]]E]]]]"]]]]]]]]]]]x]]]]]x]]]]]]RT]]]]U]]]]Y]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]r   )r   r   )
__future__r   builtinsr-   _pytest.assertion.rewrite	assertionrewriter+   market_data_cacher   r   r>   rL   rS    r   r   <module>r[      s    " " " " " "               B B B B B B B B# # # #A A A A^ ^ ^ ^ ^ ^r   