code: def test_rotate_y(self, device, dtype):
      sample = torch.tensor(
          [
              [
                  [
                      [
                          [0.0, 0.0, 0.0],
                          [0.0, 2.0, 0.0],
                          [0.0, 0.0, 0.0],
                      ],
                      [
                          [0.0, 0.0, 0.0],
                          [0.0, 1.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],
                      ],
                  ]
              ]
          ],
          device=device,
          dtype=dtype,
      )
  
      expected = torch.tensor(
          [
              [
                  [
                      [
                          [0.0, 0.0, 0.0],
                          [0.0, 0.0, 0.0],
                          [0.0, 0.0, 0.0],
                      ],
                      [
                          [0.0, 0.0, 0.0],
                          [2.0, 1.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],
                      ],
                  ]
              ]
          ],
          device=device,
          dtype=dtype,
      )
  
      _, _, D, H, W = sample.shape
      center = torch.tensor(
          [[(W - 1) / 2, (H - 1) / 2, (D - 1) / 2]],
          device=device,
          dtype=dtype,
      )
  
      angles = torch.tensor(
          [[0.0, 90.0, 0.0]], device=device, dtype=dtype
      )
  
      scales: torch.Tensor = torch.ones_like(
          angles, device=device, dtype=dtype
      )
      P = proj.get_projective_transform(center, angles, scales)
      output = proj.warp_affine3d(sample, P, (3, 3, 3))
      assert_close(output, expected, rtol=1e-4, atol=1e-4)
  
imports: import pytest
  import torch
  from torch.autograd import gradcheck
  import kornia
  import kornia.geometry.transform
  import kornia.testing
  from kornia.testing import assert_close
  from kornia.utils.helpers import _torch_inverse_cast
label_desc: Use image node_id 6 for calling the TestWarpAffine3d obj's underlying member method code with example usage: obj.test_rotate_y(device, dtype) without return types