code: def _iter_config_props(cls):
          
          props = inspect.getmembers(cls, lambda a: isinstance(a, ConfigProperty))
          for attr_name, config_prop in props:
              yield attr_name, config_prop
docs: Iterate over all ConfigProperty attributes, yielding (attr_name, config_property)