code: def test_edge_level_temporal_hetero_neighbor_loader():
      edge_index = torch.tensor(
          [
              [0, 1, 1, 2, 2, 3, 3, 4],
              [1, 0, 2, 1, 3, 2, 4, 3],
          ]
      )
      edge_time = torch.arange(edge_index.size(1))
  
      data = HeteroData()
      data["A"].num_nodes = 5
      data["A", "A"].edge_index = edge_index
      data["A", "A"].edge_time = edge_time
  
      loader = NeighborLoader(
          data,
          num_neighbors=[-1, -1],
          input_nodes="A",
          input_time=torch.tensor([4, 4, 4, 4, 4]),
          time_attr="edge_time",
          batch_size=1,
      )
  
      for batch in loader:
          assert (
              batch["A", "A"].edge_time.numel()
              == batch["A", "A"].num_edges
          )
          if batch["A", "A"].edge_time.numel() > 0:
              assert batch["A", "A"].edge_time.max() <= 4
  
imports: import os.path
  import numpy
  import pytest
  import torch
  import torch_geometric.typing
  from torch_geometric import EdgeIndex
  from torch_geometric.data import Data, HeteroData
  from torch_geometric.loader import NeighborLoader
  from torch_geometric.nn import GraphConv, to_hetero
  from torch_geometric.sampler.base import SubgraphType
  from torch_geometric.testing import MyFeatureStore, MyGraphStore, get_random_edge_index, get_random_tensor_frame, onlyLinux, onlyNeighborSampler, onlyOnline, withCUDA, withPackage
  from torch_geometric.typing import WITH_EDGE_TIME_NEIGHBOR_SAMPLE, WITH_PYG_LIB, WITH_TORCH_SPARSE, WITH_WEIGHTED_NEIGHBOR_SAMPLE, TensorFrame
  from torch_geometric.utils import is_undirected, sort_edge_index, to_torch_csr_tensor, to_undirected
label_desc: Use image node_id 19 for calling a global function with example usage: test_edge_level_temporal_hetero_neighbor_loader() without return types