# SPDX-License-Identifier: MIT
# Independently authored Python tuple/value-sharing cases.
empty = ()
single = (7,)
t = ("é", 10 ** 30, True, None, b"\xff")
print(empty, tuple(), single, t)
print(len(empty), len(t), bool(empty), bool(single))
print(t[0], t[-1], t[2], single[0])
alias = tuple(t)
print(alias is t, t == alias, single != (8,), (1, 2) == (1, 2), (1,) == (1, 2))
print(single + ("two",), ((), (1, (2,))))
def pair(a, b):
    return a + b, "sum", [a, b]
total, label, values = pair(3, 4)
print(total, label, values)
wrapped = (values,)
values.append(8)
print(wrapped[0])
nums = (10, 20, 30)
for index in [-3, -1, 0, 2]:
    print(nums[index])
try:
    index = 3
    print(nums[index])
except IndexError:
    print("bounds")
try:
    t[0] = "changed"
except TypeError:
    print("immutable", t[0])
def nested():
    return (1, 2), (3, 4)
(a, b), (c, d) = nested()
print(a, b, c, d)
print([(x, x * x) for x in range(4)])
pairs = [("Ada", 3), ("Lin", 4)]
for name, number in pairs:
    print(name, number)
for number in (8, 9, 10):
    print(number)
try:
    x, y = single
except ValueError:
    print("too few")
try:
    x, = 1, 2
except ValueError:
    print("too many")
