§
    D‹%j  ã                   óF   — d dl Zd dlmc mZ d dlmZmZm	Z	 d„ Z
d„ Zd„ ZdS )é    N)ÚApiHealthMonitorÚRequestBudgetÚRetryPolicyc                  ó,  — t          d¬¦  «        } |                      t          d¦  «        ¦  «         |                      t          d¦  «        ¦  «         |                      ¦   «          |                      ¦   «          |                      ¦   «         d         }d}||k    }|slt          j        d|fd||f¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                      ¦   «         d         }d}||k    }|slt          j        d|fd||f¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                      ¦   «         d         }d}||k    }|slt          j        d|fd||f¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                      ¦   «         d         }d}||k    }|slt          j        d|fd||f¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}| j        }d}||u }|sªt          j        d|fd||f¦  «        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}}d S )Né   )Úmax_stale_context_countz429 Too Many RequestszNo route to hostÚapi_429_count©ú==©z%(py1)s == %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6Úno_route_countÚws_reconnect_countÚstale_context_countT©Úis)z<%(py2)s
{%(py2)s = %(py0)s.degraded_mode_active
} is %(py5)sÚh)Úpy0Úpy2Úpy5zassert %(py7)sÚpy7)r   Úrecord_errorÚ	ExceptionÚOSErrorÚrecord_ws_reconnectÚrecord_stale_contextÚreportÚ
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanationÚdegraded_mode_activeÚ@py_builtinsÚlocalsÚ_should_repr_global_name)
r   Ú@py_assert0Ú@py_assert3Ú@py_assert2Ú@py_format5Ú@py_format7Ú@py_assert1Ú@py_assert4Ú@py_format6Ú@py_format8s
             úK/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_api_health.pyÚ<test_api_health_records_429_no_route_stale_and_degraded_moder5      s  € Ý°Ð3Ñ3Ô3€AØ‡N‚N•9Ð4Ñ5Ô5Ñ6Ô6Ð6Ø‡N‚N•7Ð-Ñ.Ô.Ñ/Ô/Ð/Ø×ÒÑÔÐØ×ÒÑÔÐØ8Š8‰:Œ:oÔ&Ð+¨!Ð+Ð&¨!Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð&¨!Ð+Ñ+Ô+Õ+Ô+Ð&Ñ+Ô+Õ+Ô+¨!Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ø8Š8‰:Œ:Ð&Ô'Ð,¨1Ð,Ð'¨1Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð'¨1Ð,Ñ,Ô,Õ,Ô,Ð'Ñ,Ô,Õ,Ô,¨1Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø8Š8‰:Œ:Ð*Ô+Ð0¨qÐ0Ð+¨qÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð+¨qÐ0Ñ0Ô0Õ0Ô0Ð+Ñ0Ô0Õ0Ô0¨qÑ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ø8Š8‰:Œ:Ð+Ô,Ð1°Ð1Ð,°Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð,°Ð1Ñ1Ô1Õ1Ô1Ð,Ñ1Ô1Õ1Ô1°Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÔ!Ð) TÐ)Ð! TÐ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð! TÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆ1Ñ)Ô)Ð)Õ)Ô)ˆ1Ñ)Ô)Ð)Ð)Õ)Ô)Ð!Ñ)Ô)Õ)Ô) TÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ó    c                  óà  — t          dd¬¦  «        } | j        }d} ||¬¦  «        }d}||u }|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        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}x}}| j        }d} ||¬¦  «        }d}||u }|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        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}x}}| j        }d} ||¬¦  «        }d}||u }|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        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}x}}| j        }d} ||¬¦  «        }d}||u }|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        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}x}}d S )Né   é<   )Úmax_requestsÚwindow_secondsiè  )ÚnowTr   )zO%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.allow
}(now=%(py4)s)
} is %(py9)sÚb)r   r   r   r   Úpy9zassert %(py11)sÚpy11ié  iê  Fi%  )
r   Úallowr"   r#   r(   r)   r*   r$   r%   r&   )r=   r0   r,   Ú@py_assert5Ú@py_assert8Ú@py_assert7Ú@py_format10Ú@py_format12s           r4   Ú-test_request_budget_blocks_aggressive_pollingrF      s–  € Ý 1°RÐ8Ñ8Ô8€AØŒ7Ð$tÐ$ˆ7ˆ7tÐÑÔÐ$ Ð$Ð Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆ1Ñ$Ô$Ð$Õ$Ô$ˆ1Ñ$Ô$Ð$Ð$Õ$Ô$ˆ7Ñ$Ô$Õ$Ô$tÑ$Ô$Õ$Ô$ÐÑ$Ô$Õ$Ô$ Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØŒ7Ð$tÐ$ˆ7ˆ7tÐÑÔÐ$ Ð$Ð Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆ1Ñ$Ô$Ð$Õ$Ô$ˆ1Ñ$Ô$Ð$Ð$Õ$Ô$ˆ7Ñ$Ô$Õ$Ô$tÑ$Ô$Õ$Ô$ÐÑ$Ô$Õ$Ô$ Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØŒ7Ð%tÐ%ˆ7ˆ7tÐÑÔÐ% Ð%Ð Ð%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆ1Ñ%Ô%Ð%Õ%Ô%ˆ1Ñ%Ô%Ð%Ð%Õ%Ô%ˆ7Ñ%Ô%Õ%Ô%tÑ%Ô%Õ%Ô%ÐÑ%Ô%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØŒ7Ð$tÐ$ˆ7ˆ7tÐÑÔÐ$ Ð$Ð Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆ1Ñ$Ô$Ð$Õ$Ô$ˆ1Ñ$Ô$Ð$Ð$Õ$Ô$ˆ7Ñ$Ô$Õ$Ô$tÑ$Ô$Õ$Ô$ÐÑ$Ô$Õ$Ô$ Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$r6   c                  ó^  ‡— t          ddd¬¦  «        Šˆfd„t          d¦  «        D ¦   «         } g d¢}| |k    }|slt          j        d|fd	| |f¦  «        t          j        | ¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x} x}}d S )Nç      à?é
   r   )Ú
base_delayÚ	max_delayÚjitterc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS © )Údelay_for_attempt)Ú.0ÚiÚps     €r4   ú
<listcomp>zBtest_retry_policy_exponential_backoff_sequence.<locals>.<listcomp>   s'   ø€ Ð5Ð5Ð5 qˆA×Ò Ñ"Ô"Ð5Ð5Ð5r6   é   )rH   g      ð?g       @g      @r
   r   r   r   r   )r   Úranger"   r#   r$   r%   r&   )r+   r,   r-   r.   r/   rR   s        @r4   Ú.test_retry_policy_exponential_backoff_sequencerV      så   ø€ Ý˜s¨b¸Ð;Ñ;Ô;€AØ5Ð5Ð5Ð5­E°!©H¬HÐ5Ñ5Ô5ÐMÐ9MÐ9MÐ9MÐMÐ5Ð9MÒMÐMÐMÐMÕMÔMÐMÐMÐMÐMÐ5Ð9MÐMÑMÔMÕMÔMÐ5ÑMÔMÕMÔMÐ9MÑMÔMÐMÐMÑMÐMÐMÐMÐMÐMÑMÐMÕMÕMÔMÐMÑMÔMÑMÔMÐMÐMÐMÐMÐMÐMÐMÐMÐMr6   )Úbuiltinsr(   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter"   Úsrc.hyperliquid.api_healthr   r   r   r5   rF   rV   rN   r6   r4   ú<module>r\      sz   ðØ  € € € € € € € € € € € € Ð SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ Sð
*ð 
*ð 
*ð%ð %ð %ðNð Nð Nð Nð Nr6   