def make_resource_handle(self, resource_key, **variables):
if variables.get("<STR_LIT>", self.name()) != self.name():<EOL><INDENT>raise ResourceError("<STR_LIT>"<EOL>"<STR_LIT>"<EOL>% (variables["<STR_LIT>"], self.name()))<EOL><DEDENT>variables["<STR_LIT>"] = self.name()<EOL>if variables.get("<STR_LIT:location>", self.location) != self.location:<EOL><INDENT>raise ResourceError("<STR_LIT>"<EOL>"<STR_LIT>" % (variables["<STR_LIT:location>"],<EOL>self.location))<EOL><DEDENT>variables["<STR_LIT:location>"] = self.location<EOL>resource_cls = self.pool.get_resource_class(resource_key)<EOL>variables = resource_cls.normalize_variables(variables)<EOL>return ResourceHandle(resource_key, variables)<EOL>
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.