code: def test_inheritable_local_property(self):
      self.sc.setLocalProperty("a", "hi")
      expected = []
  
      def get_inner_local_prop():
          expected.append(self.sc.getLocalProperty("b"))
  
      def get_outer_local_prop():
          expected.append(self.sc.getLocalProperty("a"))
          self.sc.setLocalProperty("b", "hello")
          t2 = InheritableThread(target=get_inner_local_prop)
          t2.start()
          t2.join()
  
      t1 = InheritableThread(target=get_outer_local_prop)
      t1.start()
      t1.join()
  
      self.assertEqual(self.sc.getLocalProperty("b"), None)
      self.assertEqual(expected, ["hi", "hello"])
  
file_path: spark/python/pyspark/tests/test_pin_thread.py
imports: import os
  import time
  import threading
  import unittest
  from pyspark import SparkContext, SparkConf, InheritableThread
label_desc: Use image node_id 7 for calling the PinThreadTests obj's underlying member method code with example usage: obj.test_inheritable_local_property() without return types