code: def make_resource_handle(self, resource_key, **variables):
          
          if variables.get("repository_type", self.name()) != self.name():
              raise ResourceError("repository_type mismatch - requested %r, "
                                  "repository_type is %r"
                                  % (variables["repository_type"], self.name()))
  
          variables["repository_type"] = self.name()
  
          if variables.get("location", self.location) != self.location:
              raise ResourceError("location mismatch - requested %r, repository "
                                  "location is %r" % (variables["location"],
                                                      self.location))
          variables["location"] = self.location
  
          resource_cls = self.pool.get_resource_class(resource_key)
          variables = resource_cls.normalize_variables(variables)
          return ResourceHandle(resource_key, variables)
docs: Create a `ResourceHandle`
  
          Nearly all `ResourceHandle` creation should go through here, because it
          gives the various resource classes a chance to normalize / standardize
          the resource handles, to improve caching / comparison / etc.