code: def filter_solvers(solvers, requirements):
      
      for solver in solvers:
          for req, value in iteritems(requirements):
              if (req in ('integer', 'quadratic', 'rational', 'name') and
                      (req not in solver or solver[req] != value)):
                  break
          else:
              yield solver
docs: Yield solvers that fullfil the requirements.