docs: def get_resource_solvers(self, resource):
          """Returns the resource solvers that can solve the given resource.
  
          Arguments
          ---------
          resource : dataql.resources.Resource
              An instance of a subclass of ``Resource`` for which we want to get the solver
              classes that can solve it.
  
          Returns
          -------
          list
              The list of resource solvers instances that can solve the given resource.
  
          Raises
          ------
          dataql.solvers.exceptions.SolverNotFound
              When no solver is able to solve the given resource.
  
          Example
          -------
  
          >>> from dataql.resources import Field, List
          >>> registry = Registry()
          >>> registry.get_resource_solvers(Field(name='foo'))
          [<AttributeSolver>]
          >>> registry.get_resource_solvers(List(name='foo'))
          [<ListSolver>]
          >>> registry.get_resource_solvers(None) # doctest: +ELLIPSIS
          Traceback (most recent call last):
          dataql.solvers.exceptions.SolverNotFound: No solvers found for this kind of object:...
  
          """
  
          solvers_classes = [s for s in self.resource_solver_classes if s.can_solve(resource)]
  
          if solvers_classes:
              solvers = []
  
              for solver_class in solvers_classes:
  
                  # Put the solver instance in the cache if not cached yet.
                  if solver_class not in self._resource_solvers_cache:
                      self._resource_solvers_cache[solver_class] = solver_class(self)
  
                  solvers.append(self._resource_solvers_cache[solver_class])
  
              return solvers
  
          raise SolverNotFound(self, resource)