docs: def _extract_services_list_helper(services):
      """Extract a OrderedDict of {service: [ports]} of the supplied services
      for use by the other functions.
  
      The services object can either be:
        - None : no services were passed (an empty dict is returned)
        - a list of strings
        - A dictionary (optionally OrderedDict) {service_name: {'service': ..}}
        - An array of [{'service': service_name, ...}, ...]
  
      @param services: see above
      @returns OrderedDict(service: [ports], ...)
      """
      if services is None:
          return {}
      if isinstance(services, dict):
          services = services.values()
      # either extract the list of services from the dictionary, or if
      # it is a simple string, use that. i.e. works with mixed lists.
      _s = OrderedDict()
      for s in services:
          if isinstance(s, dict) and 'service' in s:
              _s[s['service']] = s.get('ports', [])
          if isinstance(s, str):
              _s[s] = []
      return _s