code: def load_steps_impl(self, registry, path, module_names=None):
          
  
          if not module_names:
              module_names = ['steps']
  
          path = os.path.abspath(path)
  
          for module_name in module_names:
              mod = self.modules.get((path, module_name))
  
              if mod is None:
                  #log.debug("Looking for step def module '%s' in %s" % (module_name, path))
                  cwd = os.getcwd()
                  if cwd not in sys.path:
                      sys.path.append(cwd)
  
                  try:
                      actual_module_name = os.path.basename(module_name)
                      complete_path = os.path.join(path, os.path.dirname(module_name))
                      info = imp.find_module(actual_module_name, [complete_path])
                  except ImportError:
                      #log.debug("Did not find step defs module '%s' in %s" % (module_name, path))
                      return
                  
                  try:
                      # Modules have to be loaded with unique names or else problems arise
                      mod = imp.load_module("stepdefs_" + str(self.module_counter), *info)
                  except:
                      exc = sys.exc_info()
                      raise StepImplLoadException(exc)
  
                  self.module_counter += 1
                  self.modules[(path, module_name)] = mod
  
              for item_name in dir(mod):
                  item = getattr(mod, item_name)
                  if isinstance(item, StepImpl):
                      registry.add_step(item.step_type, item)
                  elif isinstance(item, HookImpl):
                      registry.add_hook(item.cb_type, item)
                  elif isinstance(item, NamedTransformImpl):
                      registry.add_named_transform(item)
                  elif isinstance(item, TransformImpl):
                      registry.add_transform(item)
docs: Load the step implementations at the given path, with the given module names. If
          module_names is None then the module 'steps' is searched by default.