'Returns a list of this project\'s services filtered
by the provided list of names, or all services if service_names is None
or [].
If include_deps is specified, returns a list including the dependencies for
service_names, in order of dependency.
Preserves the original order of self.services where possible,
reordering as needed to resolve dependencies.
Raises NoSuchService if any of the named services do not exist.'

def get_services(self, service_names=None, include_deps=False):

    if ((service_names is None) or (len(service_names) == 0)):
        service_names = self.service_names
    unsorted = [self.get_service(name) for name in service_names]
    services = [s for s in self.services if (s in unsorted)]
    if include_deps:
        services = reduce(self._inject_deps, services, [])
    uniques = []
    [uniques.append(s) for s in services if (s not in uniques)]
    return uniques
