code: def test_namespace_access(self):
      try:
          self.assertEqual(
              ps.options.compute.max_rows,
              ps.get_option("compute.max_rows"),
          )
          ps.options.compute.max_rows = 0
          self.assertEqual(ps.options.compute.max_rows, 0)
          self.assertTrue(isinstance(ps.options.compute, DictWrapper))
  
          wrapper = ps.options.compute
          self.assertEqual(
              wrapper.max_rows, ps.get_option("compute.max_rows")
          )
          wrapper.max_rows = 1000
          self.assertEqual(ps.options.compute.max_rows, 1000)
  
          self.assertRaisesRegex(
              config.OptionError,
              "No such option",
              lambda: ps.options.compu,
          )
          self.assertRaisesRegex(
              config.OptionError,
              "No such option",
              lambda: ps.options.compute.max,
          )
          self.assertRaisesRegex(
              config.OptionError,
              "No such option",
              lambda: ps.options.max_rows1,
          )
  
          with self.assertRaisesRegex(
              config.OptionError, "No such option"
          ):
              ps.options.compute.max = 0
          with self.assertRaisesRegex(
              config.OptionError, "No such option"
          ):
              ps.options.compute = 0
          with self.assertRaisesRegex(
              config.OptionError, "No such option"
          ):
              ps.options.com = 0
      finally:
          ps.reset_option("compute.max_rows")
  
file_path: spark/python/pyspark/pandas/tests/test_config.py
imports: from pyspark import pandas
  from pyspark.pandas import config
  from pyspark.pandas.config import Option, DictWrapper
  from pyspark.testing.pandasutils import PandasOnSparkTestCase
label_desc: Use image node_id 8 for calling the ConfigTestsMixin obj's underlying member method code with example usage: obj.test_namespace_access() without return types