@property
def specs(self):
    'List of concretized specs satisfying the initial\n        abstract request.\n        '
    if self._concrete_specs:
        return self._concrete_specs
    msg = 'cannot compute specs ["satisfiable" is not True ]'
    assert self.satisfiable, msg
    self._concrete_specs = []
    best = min(self.answers)
    (opt, _, answer) = best
    for input_spec in self.abstract_specs:
        key = input_spec.name
        if input_spec.virtual:
            providers = [spec.name for spec in answer.values() if spec.package.provides(key)]
            key = providers[0]
        self._concrete_specs.append(answer[key])
    return self._concrete_specs
List of concretized specs satisfying the initial
abstract request.
@property
def specs(self):
    'List of concretized specs satisfying the initial\n        abstract request.\n        '
    if self._concrete_specs:
        return self._concrete_specs
    msg = 'cannot compute specs ["satisfiable" is not True ]'
    assert self.satisfiable, msg
    self._concrete_specs = []
    best = min(self.answers)
    (opt, _, answer) = best
    for input_spec in self.abstract_specs:
        key = input_spec.name
        if input_spec.virtual:
            providers = [spec.name for spec in answer.values() if spec.package.provides(key)]
            key = providers[0]
        self._concrete_specs.append(answer[key])
    return self._concrete_specs