code: def test__getitem__AdvancedSubtensor():
      # Make sure we get `AdvancedSubtensor`s for basic indexing operations
      x = matrix("x")
      i = ivector("i")
  
      # This is a `__getitem__` call that's redirected to `_tensor_py_operators.take`
      z = x[i]
      op_types = [
          type(node.op)
          for node in pytensor.graph.basic.io_toposort([x, i], [z])
      ]
      assert op_types[-1] == AdvancedSubtensor
  
      # This should index nothing (i.e. return an empty copy of `x`)
      # We check that the index is empty
      z = x[[]]
      op_types = [
          type(node.op)
          for node in pytensor.graph.basic.io_toposort([x, i], [z])
      ]
      assert op_types == [AdvancedSubtensor]
      assert isinstance(z.owner.inputs[1], TensorConstant)
  
      z = x[:, i]
      op_types = [
          type(node.op)
          for node in pytensor.graph.basic.io_toposort([x, i], [z])
      ]
      assert op_types == [MakeSlice, AdvancedSubtensor]
  
      z = x[..., i, None]
      op_types = [
          type(node.op)
          for node in pytensor.graph.basic.io_toposort([x, i], [z])
      ]
      assert op_types == [MakeSlice, AdvancedSubtensor]
  
      z = x[i, None]
      op_types = [
          type(node.op)
          for node in pytensor.graph.basic.io_toposort([x, i], [z])
      ]
      assert op_types[-1] == AdvancedSubtensor
  
imports: from copy import copy
  import numpy
  import pytest
  from numpy.testing import assert_array_equal, assert_equal, assert_string_equal
  import pytensor
  import tests.unittest_tools
  from pytensor.compile import DeepCopyOp
  from pytensor.compile.mode import get_default_mode
  from pytensor.graph.basic import Constant, equal_computations
  from pytensor.tensor import get_vector_length
  from pytensor.tensor.basic import constant
  from pytensor.tensor.elemwise import DimShuffle
  from pytensor.tensor.math import dot, eq, matmul
  from pytensor.tensor.shape import Shape
  from pytensor.tensor.subtensor import AdvancedSubtensor, Subtensor, inc_subtensor, set_subtensor
  from pytensor.tensor.type import TensorType, cscalar, dmatrix, dscalar, dvector, iscalar, ivector, matrices, matrix, scalar, tensor3
  from pytensor.tensor.type_other import MakeSlice, NoneConst
  from pytensor.tensor.variable import DenseTensorConstant, DenseTensorVariable, TensorConstant, TensorVariable
  from tests.tensor.utils import random
label_desc: Use image node_id 8 for calling a global function with example usage: test__getitem__AdvancedSubtensor() without return types