code: def test_rcparams_reset_after_fail():
      # There was previously a bug that meant that if rc_context failed and
      # raised an exception due to issues in the supplied rc parameters, the
      # global rc parameters were left in a modified state.
      with mpl.rc_context(rc={"text.usetex": False}):
          assert mpl.rcParams["text.usetex"] is False
          with pytest.raises(KeyError):
              with mpl.rc_context(
                  rc={"text.usetex": True, "test.blah": True}
              ):
                  pass
          assert mpl.rcParams["text.usetex"] is False
  
imports: import copy
  import os
  import subprocess
  import sys
  from unittest import mock
  from cycler import cycler, Cycler
  import pytest
  import matplotlib
  from matplotlib import _api, _c_internal_utils
  import matplotlib.pyplot
  import matplotlib.colors
  import numpy
  from matplotlib.rcsetup import validate_bool, validate_color, validate_colorlist, _validate_color_or_linecolor, validate_cycler, validate_float, validate_fontstretch, validate_fontweight, validate_hatch, validate_hist_bins, validate_int, validate_markevery, validate_stringlist, validate_sketch, _validate_linestyle, _listify_validator
label_desc: Use image node_id 20 for calling a global function with example usage: test_rcparams_reset_after_fail() without return types