@@ -842,6 +842,50 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
842
842
assert response .retries_taken == failures_before_success
843
843
assert int (response .http_request .headers .get ("x-stainless-retry-count" )) == failures_before_success
844
844
845
+ @pytest .mark .parametrize ("failures_before_success" , [0 , 2 , 4 ])
846
+ @mock .patch ("finch._base_client.BaseClient._calculate_retry_timeout" , _low_retry_timeout )
847
+ @pytest .mark .respx (base_url = base_url )
848
+ def test_omit_retry_count_header (self , client : Finch , failures_before_success : int , respx_mock : MockRouter ) -> None :
849
+ client = client .with_options (max_retries = 4 )
850
+
851
+ nb_retries = 0
852
+
853
+ def retry_handler (_request : httpx .Request ) -> httpx .Response :
854
+ nonlocal nb_retries
855
+ if nb_retries < failures_before_success :
856
+ nb_retries += 1
857
+ return httpx .Response (500 )
858
+ return httpx .Response (200 )
859
+
860
+ respx_mock .get ("/employer/directory" ).mock (side_effect = retry_handler )
861
+
862
+ response = client .hris .directory .with_raw_response .list (extra_headers = {"x-stainless-retry-count" : Omit ()})
863
+
864
+ assert len (response .http_request .headers .get_list ("x-stainless-retry-count" )) == 0
865
+
866
+ @pytest .mark .parametrize ("failures_before_success" , [0 , 2 , 4 ])
867
+ @mock .patch ("finch._base_client.BaseClient._calculate_retry_timeout" , _low_retry_timeout )
868
+ @pytest .mark .respx (base_url = base_url )
869
+ def test_overwrite_retry_count_header (
870
+ self , client : Finch , failures_before_success : int , respx_mock : MockRouter
871
+ ) -> None :
872
+ client = client .with_options (max_retries = 4 )
873
+
874
+ nb_retries = 0
875
+
876
+ def retry_handler (_request : httpx .Request ) -> httpx .Response :
877
+ nonlocal nb_retries
878
+ if nb_retries < failures_before_success :
879
+ nb_retries += 1
880
+ return httpx .Response (500 )
881
+ return httpx .Response (200 )
882
+
883
+ respx_mock .get ("/employer/directory" ).mock (side_effect = retry_handler )
884
+
885
+ response = client .hris .directory .with_raw_response .list (extra_headers = {"x-stainless-retry-count" : "42" })
886
+
887
+ assert response .http_request .headers .get ("x-stainless-retry-count" ) == "42"
888
+
845
889
@pytest .mark .parametrize ("failures_before_success" , [0 , 2 , 4 ])
846
890
@mock .patch ("finch._base_client.BaseClient._calculate_retry_timeout" , _low_retry_timeout )
847
891
@pytest .mark .respx (base_url = base_url )
@@ -1679,6 +1723,54 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
1679
1723
assert response .retries_taken == failures_before_success
1680
1724
assert int (response .http_request .headers .get ("x-stainless-retry-count" )) == failures_before_success
1681
1725
1726
+ @pytest .mark .parametrize ("failures_before_success" , [0 , 2 , 4 ])
1727
+ @mock .patch ("finch._base_client.BaseClient._calculate_retry_timeout" , _low_retry_timeout )
1728
+ @pytest .mark .respx (base_url = base_url )
1729
+ @pytest .mark .asyncio
1730
+ async def test_omit_retry_count_header (
1731
+ self , async_client : AsyncFinch , failures_before_success : int , respx_mock : MockRouter
1732
+ ) -> None :
1733
+ client = async_client .with_options (max_retries = 4 )
1734
+
1735
+ nb_retries = 0
1736
+
1737
+ def retry_handler (_request : httpx .Request ) -> httpx .Response :
1738
+ nonlocal nb_retries
1739
+ if nb_retries < failures_before_success :
1740
+ nb_retries += 1
1741
+ return httpx .Response (500 )
1742
+ return httpx .Response (200 )
1743
+
1744
+ respx_mock .get ("/employer/directory" ).mock (side_effect = retry_handler )
1745
+
1746
+ response = await client .hris .directory .with_raw_response .list (extra_headers = {"x-stainless-retry-count" : Omit ()})
1747
+
1748
+ assert len (response .http_request .headers .get_list ("x-stainless-retry-count" )) == 0
1749
+
1750
+ @pytest .mark .parametrize ("failures_before_success" , [0 , 2 , 4 ])
1751
+ @mock .patch ("finch._base_client.BaseClient._calculate_retry_timeout" , _low_retry_timeout )
1752
+ @pytest .mark .respx (base_url = base_url )
1753
+ @pytest .mark .asyncio
1754
+ async def test_overwrite_retry_count_header (
1755
+ self , async_client : AsyncFinch , failures_before_success : int , respx_mock : MockRouter
1756
+ ) -> None :
1757
+ client = async_client .with_options (max_retries = 4 )
1758
+
1759
+ nb_retries = 0
1760
+
1761
+ def retry_handler (_request : httpx .Request ) -> httpx .Response :
1762
+ nonlocal nb_retries
1763
+ if nb_retries < failures_before_success :
1764
+ nb_retries += 1
1765
+ return httpx .Response (500 )
1766
+ return httpx .Response (200 )
1767
+
1768
+ respx_mock .get ("/employer/directory" ).mock (side_effect = retry_handler )
1769
+
1770
+ response = await client .hris .directory .with_raw_response .list (extra_headers = {"x-stainless-retry-count" : "42" })
1771
+
1772
+ assert response .http_request .headers .get ("x-stainless-retry-count" ) == "42"
1773
+
1682
1774
@pytest .mark .parametrize ("failures_before_success" , [0 , 2 , 4 ])
1683
1775
@mock .patch ("finch._base_client.BaseClient._calculate_retry_timeout" , _low_retry_timeout )
1684
1776
@pytest .mark .respx (base_url = base_url )
0 commit comments