def request(self, method, *parts, **options):
if len(parts) != <NUM_LIT:0>:<EOL><INDENT>return self.__call__(*parts).request(method=method, **options)<EOL><DEDENT>else:<EOL><INDENT>if '<STR_LIT:url>' not in options:<EOL><INDENT>options['<STR_LIT:url>'] = self.url()<EOL><DEDENT>for key, value in six.iteritems(self.config):<EOL><INDENT>if value is not None:<EOL><INDENT>if isinstance(value, dict):<EOL><INDENT>copy = value.copy()<EOL>if options.get(key):<EOL><INDENT>copy.update(options[key])<EOL><DEDENT>options[key] = copy<EOL><DEDENT>else:<EOL><INDENT>options.setdefault(key, value)<EOL><DEDENT><DEDENT><DEDENT>return self._parent.request(method=method, **options)<EOL><DEDENT>
Requests a URL and returns a *Bunched* response.

        This method basically wraps the request method of the requests
        module and adds a `path` and `debug` option.

        :param method: The request method, e.g. 'get', 'post', etc.
        :param parts: (optional) Additional path parts to append to the URL
        :param options: (optional) Arguments that will be passed to
            the `requests.request` method
        :return: :class:`Bunch` object from JSON-parsed response