# SPDX-License-Identifier: MIT
values=[10,20,30]
i=iter(values)
print(iter(i) is i,i.__iter__() is i,bool(i),callable(i),isinstance(i,object))
print(next(i),i.__next__(),list(i),list(i))
print(next(i,-1),next(i,-2))
try:
    next(i)
except StopIteration as error:
    print(type(error).__name__,repr(error),str(error)=='')
values.append(40)
print(next(i,0))
mutable=[1,2]
cursor=iter(mutable)
print(next(cursor))
mutable.append(3)
print(list(cursor))
original=[4,5]
saved=iter(original)
original=[99]
print(list(saved),original)
print(list(iter((1,2,3))),list(iter('aé🙂')),list(iter(b'\x00\xffA')))
print(next(iter(()),'empty'),next(iter([]),'empty'))
large=iter(range(10**50,10**50+10,3))
print(next(large),next(large),list(large))
print(list(enumerate(['a','b'],start=-2)))
print(list(enumerate(iterable=['a','b'],start=True)))
print(list(enumerate((7,8),10**50)))
print(list(zip([1,2,3],['a','b'])),list(zip()),list(enumerate(())))
a=iter([1,2,3,4])
z=zip(a,())
print(next(z,'done'),next(z,'done'),next(a))
a2=iter([1,2,3,4])
e=enumerate(zip(a2,()))
print(next(e,'done'),next(e,'done'),next(a2))
same=iter([1,2,3,4,5])
print(list(zip(same,same)),next(same,0))
probe=iter([0,0,3,4])
print(any(probe),next(probe))
probe2=iter([1,2,0,4])
print(all(probe2),next(probe2))
member=iter([1,2,3,4])
print(2 in member,next(member),9 not in member,next(member,0))
print(sum(iter(range(5))),min(iter([3,1,2])),max(iter([3,1,2])))
print(set(iter('abaéaba'))=={'a','b','é'})
result=[9]
result.extend(iter((1,2)))
print(result)
for index,value in enumerate(['a','b','c']):
    if index==1:
        continue
    print(index,value)
else:
    print('complete')
persistent=iter([1,2,3])
for number in persistent:
    print(number)
    break
print(next(persistent))
print(type(iter([1])).__name__,type(iter((1,))).__name__,type(iter('a')).__name__,type(iter(b'a')).__name__)
print(type(enumerate(())).__name__,type(zip()).__name__)
read=next
build=iter
print(read(build([7])))
print(dict(zip(['a','b'],[1,2])))
result+=iter((3,4))
print(result)
empty_probe=iter([1,2,3])
print(min(zip(empty_probe,()),default='empty'),next(empty_probe))
print([number*2 for number in iter(range(4))])
shifted=[1,2,3]
shifted_reader=iter(shifted)
print(next(shifted_reader))
del shifted[0]
print(next(shifted_reader),next(shifted_reader,0))
print(i is i,i==i,i is iter(values),i==iter(values))
print(list(iter(range(True,4,True))),list(iter(range(5,-2,-2))))
