Implicit Exception Context

def parse_config(raw):
    try:
        return int(raw)
    except ValueError:
        raise RuntimeError(f"invalid config value: {raw!r}")

parse_config("nope")

This crashes with two tracebacks shown. Select all statements that are true about this chain.

A

The original ValueError is inaccessible once RuntimeError is raised: only its message text survives in the new traceback.

B

The RuntimeError's __context__ is automatically set to the ValueError instance, even though from was never used.

C

Python prints During handling of the above exception, another exception occurred: between the two tracebacks.

D

The RuntimeError's __cause__ is set to the ValueError instance, identical to using raise ... from e.