try:
    Exception().__cause__
except AttributeError:
    print("SKIP")
    raise SystemExit

def print_exc_info(e):
    print("exception", type(e), e.args)
    print("context", type(e.__context__), e.__suppress_context__)
    print("cause", type(e.__cause__))

try:
    try:
        1/0
    except Exception as inner:
        raise RuntimeError() from inner
except Exception as e:
    print_exc_info(e)
print()

try:
    try:
        1/0
    except Exception as inner:
        raise RuntimeError() from OSError()
except Exception as e:
    print_exc_info(e)
print()


try:
    try:
        1/0
    except Exception as inner:
        raise RuntimeError()
except Exception as e:
    print_exc_info(e)
print()

try:
    try:
        1/0
    except Exception as inner:
        raise RuntimeError() from None
except Exception as e:
    print_exc_info(e)

try:
    try:
        raise RuntimeError()
    except Exception as inner:
        1/0
except Exception as e:
    print_exc_info(e)
