code: def test_configuration_inheritance(self):
      class A(Configurable):
          property_a = Property()
  
      class B(A):
          property_b = Property()
  
      class C(B):
          property_c = Property()
  
      class D(A):
          property_d = Property()
  
      self.assertEqual(sorted(A.options.keys()), ["property_a"])
      self.assertEqual(
          sorted(B.options.keys()), ["property_a", "property_b"]
      )
      self.assertEqual(
          sorted(D.options.keys()), ["property_a", "property_d"]
      )
      self.assertEqual(
          sorted(C.options.keys()),
          ["property_a", "property_b", "property_c"],
      )
  
file_path: neupy/tests/core/test_configs.py
imports: from abc import abstractmethod
  from neupy.core.config import Configurable, ConfigurableABC
  from neupy.core.properties import Property
  from base import BaseTestCase
label_desc: Use image node_id 1 for calling the ConfigsTestCase obj's underlying member method code with example usage: obj.test_configuration_inheritance() without return types