code: def test_Tuple():
      t = (1, 2, 3, 4)
      st = Tuple(*t)
      assert set(sympify(t)) == set(st)
      assert len(t) == len(st)
      assert set(sympify(t[:2])) == set(st[:2])
      assert isinstance(st[:], Tuple)
      assert st == Tuple(1, 2, 3, 4)
      assert st.func(*st.args) == st
      p, q, r, s = symbols("p q r s")
      t2 = (p, q, r, s)
      st2 = Tuple(*t2)
      assert st2.atoms() == set(t2)
      assert st == st2.subs({p: 1, q: 2, r: 3, s: 4})
      # issue 5505
      assert all(isinstance(arg, Basic) for arg in st.args)
      assert Tuple(p, 1).subs(p, 0) == Tuple(0, 1)
      assert Tuple(p, Tuple(p, 1)).subs(p, 0) == Tuple(0, Tuple(0, 1))
  
      assert Tuple(t2) == Tuple(Tuple(*t2))
      assert Tuple.fromiter(t2) == Tuple(*t2)
      assert Tuple.fromiter(x for x in range(4)) == Tuple(0, 1, 2, 3)
      assert st2.fromiter(st2.args) == st2
  
imports: from collections import defaultdict
  from sympy.core.basic import Basic
  from sympy.core.containers import Dict, Tuple
  from sympy.core.numbers import Integer
  from sympy.core.kind import NumberKind
  from sympy.matrices.kind import MatrixKind
  from sympy.core.singleton import S
  from sympy.core.symbol import symbols
  from sympy.core.sympify import sympify
  from sympy.matrices.dense import Matrix
  from sympy.sets.sets import FiniteSet
  from sympy.core.containers import tuple_wrapper, TupleKind
  from sympy.core.expr import unchanged
  from sympy.core.function import Function, Lambda
  from sympy.core.relational import Eq
  from sympy.testing.pytest import raises
  from sympy.utilities.iterables import is_sequence, iterable
  from sympy.abc import x, y
label_desc: Use image node_id 1 for calling a global function with example usage: test_Tuple() without return types