def filter(self, **kwargs):
context = str(self.context)<EOL>request_url = build_url_endpoint(self.ENDPOINT, context)<EOL>request_params = dict(self.request_params)<EOL>for fltr, value in kwargs.items():<EOL><INDENT>decoded_fltr = fltr.replace('<STR_LIT>', '<STR_LIT:.>').replace('<STR_LIT:_>', '<STR_LIT:->')<EOL>if decoded_fltr not in self.FILTER_VALIDATOR.keys():<EOL><INDENT>raise UrlSyntaxError(<EOL>'<STR_LIT>' % (<EOL>str(decoded_fltr),<EOL>'<STR_LIT:U+002CU+0020>'.join(self.FILTER_VALIDATOR.keys())<EOL>)<EOL>)<EOL><DEDENT>if self.FILTER_VALIDATOR[decoded_fltr] is not None:<EOL><INDENT>self.FILTER_VALIDATOR[decoded_fltr](str(value))<EOL><DEDENT>if '<STR_LIT>' not in request_params:<EOL><INDENT>request_params['<STR_LIT>'] = decoded_fltr + '<STR_LIT::>' + str(value)<EOL><DEDENT>else:<EOL><INDENT>request_params['<STR_LIT>'] += '<STR_LIT:U+002C>' + decoded_fltr + '<STR_LIT::>' + str(value)<EOL><DEDENT><DEDENT>return self.__class__(request_url, request_params, context, self.etiquette)<EOL>
This method retrieve an iterable object that implements the method
__iter__. The arguments given will compose the parameters in the
request url.

This method can be used compounded and recursively with query, filter,
order, sort and facet methods.

kwargs: valid FILTER_VALIDATOR arguments.

return: iterable object of Works metadata

Example:
    >>> from crossref.restful import Works
    >>> works = Works()
    >>> query = works.filter(has_funder='true', has_license='true')
    >>> for item in query:
    ...     print(item['title'])
    ...
    ['Design of smiling-face-shaped band-notched UWB antenna']
    ['Phase I clinical and pharmacokinetic study of PM01183 (a tetrahydroisoquinoline, Lurbinectedin) in combination with gemcitabine in patients with advanced solid tumors']
    ...