code: def test_hyper():
      raises(TypeError, lambda: hyper(1, 2, z))
  
      assert hyper((2, 1), (1,), z) == hyper(Tuple(1, 2), Tuple(1), z)
      assert hyper((2, 1, 2), (1, 2, 1, 3), z) == hyper((2,), (1, 3), z)
      u = hyper((2, 1, 2), (1, 2, 1, 3), z, evaluate=False)
      assert u.ap == Tuple(1, 2, 2)
      assert u.bq == Tuple(1, 1, 2, 3)
  
      h = hyper((1, 2), (3, 4, 5), z)
      assert h.ap == Tuple(1, 2)
      assert h.bq == Tuple(3, 4, 5)
      assert h.argument == z
      assert h.is_commutative is True
      h = hyper((2, 1), (4, 3, 5), z)
      assert h.ap == Tuple(1, 2)
      assert h.bq == Tuple(3, 4, 5)
      assert h.argument == z
      assert h.is_commutative is True
  
      # just a few checks to make sure that all arguments go where they should
      assert tn(hyper(Tuple(), Tuple(), z), exp(z), z)
      assert tn(z * hyper((1, 1), Tuple(2), -z), log(1 + z), z)
  
      # differentiation
      h = hyper(
          (randcplx(), randcplx(), randcplx()),
          (randcplx(), randcplx()),
          z,
      )
      assert td(h, z)
  
      a1, a2, b1, b2, b3 = symbols("a1:3, b1:4")
      assert hyper((a1, a2), (b1, b2, b3), z).diff(z) == a1 * a2 / (
          b1 * b2 * b3
      ) * hyper((a1 + 1, a2 + 1), (b1 + 1, b2 + 1, b3 + 1), z)
  
      # differentiation wrt parameters is not supported
      assert hyper([z], [], z).diff(z) == Derivative(
          hyper([z], [], z), z
      )
  
      # hyper is unbranched wrt parameters
      from sympy.functions.elementary.complexes import polar_lift
  
      assert hyper(
          [polar_lift(z)], [polar_lift(k)], polar_lift(x)
      ) == hyper([z], [k], polar_lift(x))
  
      # hyper does not automatically evaluate anyway, but the test is to make
      # sure that the evaluate keyword is accepted
      assert hyper((1, 2), (1,), z, evaluate=False).func is hyper
  
imports: from sympy.core.containers import Tuple
  from sympy.core.function import Derivative
  from sympy.core.numbers import I, Rational, oo, pi
  from sympy.core.singleton import S
  from sympy.core.symbol import symbols
  from sympy.functions.elementary.exponential import exp, log
  from sympy.functions.elementary.miscellaneous import sqrt
  from sympy.functions.elementary.trigonometric import cos
  from sympy.functions.special.gamma_functions import gamma
  from sympy.functions.special.hyper import appellf1, hyper, meijerg
  from sympy.series.order import O
  from sympy.abc import x, z, k
  from sympy.series.limits import limit
  from sympy.testing.pytest import raises, slow
  from sympy.core.random import random_complex_number, verify_numerically, test_derivative_numerically
label_desc: Use image node_id 2 for calling a global function with example usage: test_hyper() without return types