Skip to content

Allow Guzzle 8 (0.9.1) - #15

Merged
heliocosta-dev merged 1 commit into
mainfrom
release/0.9.1
Oct 21, 2026
Merged

heliocosta-dev merged 1 commit into
mainfrom
release/0.9.1

Conversation

@heliocosta-dev

Copy link
Copy Markdown
Member

#4 widened guzzlehttp/guzzle to ^7.5 || ^8.0, which changes what users can install. This bumps the version so it can ship as v0.9.1.

  • composer.json version and HttpClient::VERSION (sent in the User-Agent) move to 0.9.1, and the User-Agent test follows. Packagist skips a tag whose composer.json version doesn't match it.
  • The README's install note now says "Requires PHP 8.1+ and Guzzle 7.5+ or 8."

Why Guzzle 8 is safe here. I read Guzzle 8's UPGRADING notes against what the SDK uses:

  • Client and ClientInterface::request(), which are unchanged.
  • GuzzleException in the catch, which still catches every transfer failure, and Guzzle's own InvalidArgumentException, including a json_encode failure.
  • The request options headers, http_errors, timeout, connect_timeout, query and json. The SDK passes them strings, a bool, floats and flat scalar arrays, which pass Guzzle 8's new option validation. query still goes through http_build_query.

None of the removed APIs are used: the namespaced functions, Utils::jsonEncode/jsonDecode, ClientInterface::getConfig(), Client::__call() and the per-request handler option. Guzzle 8 needs PHP ^7.4, below the SDK's ^8.1.

Checks:

  • CI on build(deps): update guzzlehttp/guzzle requirement from ^7.5 to ^7.5 || ^8.0 #4 resolved Guzzle 8.3.0 (psr7 3.2.0, promises 3.1.0) on PHP 8.2, 8.3 and 8.4. Pest and PHPStan level 8 passed.
  • Locally, a smoke test through the real cURL transport behaved the same on Guzzle 8.3.0 and 7.16.0 for these cases:
    • a 401 on GET and on a JSON POST (invalid_api_key);
    • a refused connection;
    • a connect timeout;
    • an invalid UTF-8 body. Each refused-request case became ErrorException application_error.
  • This branch passes Pest (94 passed, 2 E2E skipped) on PHP 8.2 (pest 2) and 8.4 (pest 5), and Pint and PHPStan.

Once this merges, the annotated tag v0.9.1 goes on its merge commit.

🤖 Generated with Claude Code

guzzlehttp/guzzle now reads ^7.5 || ^8.0, so a project can install the SDK
next to Guzzle 8. The SDK uses only Client, ClientInterface::request(),
GuzzleException and the headers, http_errors, timeout, connect_timeout,
query and json request options, none of which Guzzle 8 changes for the
values the SDK passes. Guzzle 8 needs PHP ^7.4, below the SDK's ^8.1.

- composer.json version and HttpClient::VERSION (the User-Agent) move to
  0.9.1, so Packagist accepts the v0.9.1 tag.
- The README's install note names the supported Guzzle majors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@heliocosta-dev
heliocosta-dev merged commit 27c02c6 into main Oct 21, 2026
4 checks passed
@heliocosta-dev
heliocosta-dev deleted the release/0.9.1 branch October 21, 2026 23:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant