tests/gateway/test_send_retry.py::TestIsRetryableError::test_none_is_not_retryable tests/gateway/test_send_retry.py::TestIsRetryableError::test_empty_string_is_not_retryable tests/gateway/test_send_retry.py::TestIsRetryableError::test_known_pattern_is_retryable[connecterror] tests/gateway/test_send_retry.py::TestIsRetryableError::test_known_pattern_is_retryable[connectionerror] tests/gateway/test_send_retry.py::TestIsRetryableError::test_known_pattern_is_retryable[connectionreset] tests/gateway/test_send_retry.py::TestIsRetryableError::test_known_pattern_is_retryable[connectionrefused] tests/gateway/test_send_retry.py::TestIsRetryableError::test_known_pattern_is_retryable[connecttimeout] tests/gateway/test_send_retry.py::TestIsRetryableError::test_known_pattern_is_retryable[network] tests/gateway/test_send_retry.py::TestIsRetryableError::test_known_pattern_is_retryable[broken pipe] tests/gateway/test_send_retry.py::TestIsRetryableError::test_known_pattern_is_retryable[remotedisconnected] tests/gateway/test_send_retry.py::TestIsRetryableError::test_known_pattern_is_retryable[eoferror] tests/gateway/test_send_retry.py::TestIsRetryableError::test_permission_error_not_retryable tests/gateway/test_send_retry.py::TestIsRetryableError::test_bad_request_not_retryable tests/gateway/test_send_retry.py::TestIsRetryableError::test_case_insensitive tests/gateway/test_send_retry.py::TestIsRetryableError::test_timeout_not_retryable tests/gateway/test_send_retry.py::TestIsRetryableError::test_timed_out_not_retryable tests/gateway/test_send_retry.py::TestIsRetryableError::test_connect_timeout_is_retryable tests/gateway/test_send_retry.py::TestIsTimeoutError::test_none_is_not_timeout tests/gateway/test_send_retry.py::TestIsTimeoutError::test_empty_is_not_timeout tests/gateway/test_send_retry.py::TestIsTimeoutError::test_timed_out tests/gateway/test_send_retry.py::TestIsTimeoutError::test_read_timeout tests/gateway/test_send_retry.py::TestIsTimeoutError::test_write_timeout tests/gateway/test_send_retry.py::TestIsTimeoutError::test_connect_timeout_not_flagged tests/gateway/test_send_retry.py::TestIsTimeoutError::test_connection_error_not_timeout tests/gateway/test_send_retry.py::TestSendWithRetrySuccess::test_success_first_attempt tests/gateway/test_send_retry.py::TestSendWithRetrySuccess::test_returns_message_id tests/gateway/test_send_retry.py::TestSendWithRetryNetworkRetry::test_retries_on_connect_error_and_succeeds tests/gateway/test_send_retry.py::TestSendWithRetryNetworkRetry::test_timeout_not_retried_to_prevent_duplicates tests/gateway/test_send_retry.py::TestSendWithRetryNetworkRetry::test_connect_timeout_still_retried tests/gateway/test_send_retry.py::TestSendWithRetryNetworkRetry::test_retryable_flag_respected tests/gateway/test_send_retry.py::TestSendWithRetryNetworkRetry::test_network_to_nonnetwork_transition_falls_back_to_plaintext tests/gateway/test_send_retry.py::TestSendWithRetryExhausted::test_sends_user_notice_after_exhaustion tests/gateway/test_send_retry.py::TestSendWithRetryExhausted::test_notice_send_exception_doesnt_propagate tests/gateway/test_send_retry.py::TestSendWithRetryFallback::test_non_network_error_falls_back_immediately tests/gateway/test_send_retry.py::TestSendWithRetryFallback::test_fallback_failure_logged_but_not_raised 35 tests collected in 0.20s