# Path: hypebot/core/params_lib.py
# def _ParseChannel(channel):
# def _ParseChannels(channels):
#   def __init__(self, defaults=None):
#   def __str__(self):
#   def Override(self, params):
#   def _AssignValueConvertDict(self, key, value):
#   def _ParseDict(self, params):
#   def __setattr__(self, key, value):
#   def get(self, key, default_value=None):  # pylint: disable=invalid-name
#   def AsDict(self):
#   def Lock(self):
#   def _RaiseIfLocked(self):
# def MergeParams(defaults, *overrides):
# class HypeParams(object):
#   SPECIAL_ATTRS = ['_locked']
#   HAS_DYNAMIC_ATTRIBUTES = True


from typing import Text
from hypebot.core import params_lib

        # Parameters shared between all subclasses.
        'owner': 'HypeBot',

        # Parameters specific to different registered names/subclass.
        'CAR': {
            'wheels': 4,
        },
        'BUS': {
            'passengers': 60,
        },
    }

    Args:
      params: Parameters.
      *args: Additional arguments passed to the subclass' ctor.
      **kwargs: Keyword arguments passed to the subclass' ctor.

    Returns:
      Newly constructed instance of subclass registered to params.name.
    """
    name = params.type
    subclass_params = params.get(name, {})
    # Remove keys that are registered names and the special name key.
    params = params.AsDict()
    for key in list(params.keys()):
      if key in self._registrar.keys() or key == 'type':
        del params[key]

    # Recreate params with the subclass specific params raised to the top level.

# Path: hypebot/core/params_lib.py
# def _ParseChannel(channel):
# def _ParseChannels(channels):
#   def __init__(self, defaults=None):
#   def __str__(self):
#   def Override(self, params):
#   def _AssignValueConvertDict(self, key, value):
#   def _ParseDict(self, params):
#   def __setattr__(self, key, value):
#   def get(self, key, default_value=None):  # pylint: disable=invalid-name
#   def AsDict(self):
#   def Lock(self):
#   def _RaiseIfLocked(self):
# def MergeParams(defaults, *overrides):
# class HypeParams(object):
#   SPECIAL_ATTRS = ['_locked']
#   HAS_DYNAMIC_ATTRIBUTES = True


# Path: hypebot/core/factory_lib.py
from typing import Text
from hypebot.core import params_lib


        # Parameters shared between all subclasses.
        'owner': 'HypeBot',

        # Parameters specific to different registered names/subclass.
        'CAR': {
            'wheels': 4,
        },
        'BUS': {
            'passengers': 60,
        },
    }

    Args:
      params: Parameters.
      *args: Additional arguments passed to the subclass' ctor.
      **kwargs: Keyword arguments passed to the subclass' ctor.

    Returns:
      Newly constructed instance of subclass registered to params.name.
    """
    name = params.type
    subclass_params = params.get(name, {})
    # Remove keys that are registered names and the special name key.
    params = params.AsDict()
    for key in list(params.keys()):
      if key in self._registrar.keys() or key == 'type':
        del params[key]

    # Recreate params with the subclass specific params raised to the top level.

    params = params_lib.HypeParams(params)