class_docstr: Test the config system.
class_docstr_tok: ["Test","the","config","system","."]
docstr: Verify that changing one option changes another, dependent one.
  
  This also implicitly tests simple and complex ConfigOptions as well as
  get_option() and set_option().
code: def test_get_set_and_complex_config_options(self):
      """Verify that changing one option changes another, dependent one.
  
      This also implicitly tests simple and complex ConfigOptions as well as
      get_option() and set_option().
      """
      # Some useful variables.
      DUMMY_VAL_1, DUMMY_VAL_2, DUMMY_VAL_3 = (
          "Steven",
          "Vincent",
          "Buscemi",
      )
  
      # Set up both options.
      config._create_option(
          "_test.independentOption",
          description="This option can change at will",
          default_val=DUMMY_VAL_1,
      )
  
      @config._create_option("_test.dependentOption")
      def _test_dependent_option():
          """Depend on the value of _test.independentOption."""
          return config.get_option("_test.independentOption")
  
      config.get_config_options(force_reparse=True)
  
      # Check that the default values are good.
      self.assertEqual(
          config.get_option("_test.independentOption"), DUMMY_VAL_1
      )
      self.assertEqual(
          config.get_option("_test.dependentOption"), DUMMY_VAL_1
      )
      self.assertEqual(
          config.get_where_defined("_test.independentOption"),
          ConfigOption.DEFAULT_DEFINITION,
      )
      self.assertEqual(
          config.get_where_defined("_test.dependentOption"),
          ConfigOption.DEFAULT_DEFINITION,
      )
  
      # Override the independent option. Both update!
      config.set_option("_test.independentOption", DUMMY_VAL_2)
      self.assertEqual(
          config.get_option("_test.independentOption"), DUMMY_VAL_2
      )
      self.assertEqual(
          config.get_option("_test.dependentOption"), DUMMY_VAL_2
      )
      self.assertEqual(
          config.get_where_defined("_test.independentOption"),
          config._USER_DEFINED,
      )
      self.assertEqual(
          config.get_where_defined("_test.dependentOption"),
          ConfigOption.DEFAULT_DEFINITION,
      )
  
      # Override the dependent option. Only that updates!
      config.set_option("_test.dependentOption", DUMMY_VAL_3)
      self.assertEqual(
          config.get_option("_test.independentOption"), DUMMY_VAL_2
      )
      self.assertEqual(
          config.get_option("_test.dependentOption"), DUMMY_VAL_3
      )
      self.assertEqual(
          config.get_where_defined("_test.independentOption"),
          config._USER_DEFINED,
      )
      self.assertEqual(
          config.get_where_defined("_test.dependentOption"),
          config._USER_DEFINED,
      )
  
imports: import copy
  import os
  import textwrap
  import unittest
  from unittest.mock import MagicMock, mock_open, patch
  import pytest
  from parameterized import parameterized
  from streamlit import config, env_util
  from streamlit.config_option import ConfigOption
  from streamlit.errors import StreamlitAPIException
label_desc: Use image node_id 13 for calling the ConfigTest obj's underlying member method code with example usage: obj.test_get_set_and_complex_config_options() and returns: config