--- ../tests/UriTest.php	2026-07-13 21:53:08.076721476 +0300
+++ ../tests/UriTest.php	2026-07-13 21:57:44.878804947 +0300
@@ -7,6 +7,7 @@
 use GuzzleHttp\Psr7\Exception\MalformedUriException;
 use GuzzleHttp\Psr7\Uri;
 use PHPUnit\Framework\TestCase;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Psr\Http\Message\UriInterface;
 
 /**
@@ -51,9 +52,7 @@
         self::assertSame('https://user:pass@example.com:8080/path/123?q=abc#test', (string) $uri);
     }
 
-    /**
-     * @dataProvider getValidUris
-     */
+    #[DataProvider('getValidUris')]
     public function testValidUrisStayValid(string $input): void
     {
         $uri = new Uri($input);
@@ -61,9 +60,7 @@
         self::assertSame($input, (string) $uri);
     }
 
-    /**
-     * @dataProvider getValidUris
-     */
+    #[DataProvider('getValidUris')]
     public function testFromParts(string $input): void
     {
         $uri = Uri::fromParts(parse_url($input));
@@ -100,9 +97,7 @@
         ];
     }
 
-    /**
-     * @dataProvider getInvalidUris
-     */
+    #[DataProvider('getInvalidUris')]
     public function testInvalidUrisThrowException(string $invalidUri): void
     {
         $this->expectException(MalformedUriException::class);
@@ -156,9 +151,7 @@
         self::assertSame('http://[::1]/x%0A', (string) new Uri("http://[::1]/x\n"));
     }
 
-    /**
-     * @dataProvider getAmbiguousBracketedIpLiteralSuffixes
-     */
+    #[DataProvider('getAmbiguousBracketedIpLiteralSuffixes')]
     public function testParseRejectsAmbiguousBracketedIpLiteralSuffix(string $uri): void
     {
         $this->expectException(MalformedUriException::class);
@@ -181,9 +174,7 @@
         new Uri("http://[v1.a\x7Fb]/");
     }
 
-    /**
-     * @dataProvider getValidBracketedIpLiteralUris
-     */
+    #[DataProvider('getValidBracketedIpLiteralUris')]
     public function testParsePreservesValidBracketedIpLiteral(string $uri, string $host): void
     {
         self::assertSame($host, (new Uri($uri))->getHost());
@@ -198,9 +189,7 @@
         yield 'ipvfuture' => ['http://[v1.abc]/', '[v1.abc]'];
     }
 
-    /**
-     * @dataProvider getPathNoSchemeReferencesWithColonInLaterSegment
-     */
+    #[DataProvider('getPathNoSchemeReferencesWithColonInLaterSegment')]
     public function testParsesPathNoSchemeReferenceWithColonInLaterSegment(string $input, string $path, string $query = '', string $fragment = '', ?string $expectedString = null): void
     {
         $uri = new Uri($input);
@@ -230,9 +219,7 @@
         ];
     }
 
-    /**
-     * @dataProvider getNonPathNoSchemeReferencesWithColon
-     */
+    #[DataProvider('getNonPathNoSchemeReferencesWithColon')]
     public function testNonPathNoSchemeReferencesWithColonKeepExistingParsing(string $input, string $scheme, string $authority, string $host, ?int $port, string $path, string $query, string $fragment): void
     {
         $uri = new Uri($input);
@@ -292,9 +279,7 @@
         (new Uri())->withHost([]);
     }
 
-    /**
-     * @dataProvider getInvalidHostsWithControlCharacters
-     */
+    #[DataProvider('getInvalidHostsWithControlCharacters')]
     public function testHostMustRejectControlCharacters(string $host): void
     {
         $this->expectException(\InvalidArgumentException::class);
@@ -311,9 +296,7 @@
         yield 'ascii 0x7F' => ['example'.chr(0x7F).'com'];
     }
 
-    /**
-     * @dataProvider invalidHostViaWithHostProvider
-     */
+    #[DataProvider('invalidHostViaWithHostProvider')]
     public function testWithHostRejectsInvalidHost(string $host): void
     {
         $this->expectException(\InvalidArgumentException::class);
@@ -334,9 +317,7 @@
         yield ["a\x01b"];
     }
 
-    /**
-     * @dataProvider invalidHostViaParseProvider
-     */
+    #[DataProvider('invalidHostViaParseProvider')]
     public function testParseRejectsInvalidHost(string $host): void
     {
         $this->expectException(\InvalidArgumentException::class);
@@ -422,9 +403,7 @@
         self::assertSame('x://0:0@0/0?0#0', (string) $uri);
     }
 
-    /**
-     * @dataProvider getPortTestCases
-     */
+    #[DataProvider('getPortTestCases')]
     public function testIsDefaultPort(string $scheme, ?int $port, bool $isDefaultPort): void
     {
         $uri = $this->createMock(UriInterface::class);
@@ -780,9 +759,7 @@
         ];
     }
 
-    /**
-     * @dataProvider uriComponentsEncodingProvider
-     */
+    #[DataProvider('uriComponentsEncodingProvider')]
     public function testUriComponentsGetEncodedProperly(string $input, string $path, string $query, string $fragment, string $output): void
     {
         $uri = new Uri($input);
@@ -955,9 +932,7 @@
         self::assertSame('frag', $uri->getFragment());
     }
 
-    /**
-     * @dataProvider getUrisWithIpv6EmbeddedIpv4Literals
-     */
+    #[DataProvider('getUrisWithIpv6EmbeddedIpv4Literals')]
     public function testCanParseIpv6LiteralsWithEmbeddedIpv4(string $uri, string $expectedUri, string $expectedHost, ?int $expectedPort): void
     {
         $parsed = new Uri($uri);
@@ -1019,9 +994,7 @@
         ];
     }
 
-    /**
-     * @dataProvider unparseableIpv6AuthorityFormsNowRejectedProvider
-     */
+    #[DataProvider('unparseableIpv6AuthorityFormsNowRejectedProvider')]
     public function testUnparseableIpv6AuthorityFormFailsClosed(string $url): void
     {
         $this->expectException(\InvalidArgumentException::class);
@@ -1047,9 +1020,7 @@
         self::assertSame('http://[gggg::1]/', (string) $u);
     }
 
-    /**
-     * @dataProvider acceptedBracketHostProvider
-     */
+    #[DataProvider('acceptedBracketHostProvider')]
     public function testParseAndWithHostAgreeOnBracketHost(string $host, string $expected): void
     {
         self::assertSame($expected, (new Uri("http://$host/"))->getHost());
