def _signed_query_string(self, params):

        if not isinstance(params, types.DictType):
            raise TypeError("'params' argument must be a dict, not %s" % type(params).__name__)

        params = params.copy()

        # Add required API parameters
        params['api_nonce'] = str(random.randint(0, 99999999)).zfill(8)
        params['api_timestamp'] = int(time.time())
        params['api_key'] = self._key
        params['api_kit'] = self._kit_version

        if 'api_format' not in params:
            # Use serialised Python format for the API output,
            # otherwise use format specified in the call() params.
            params['api_format'] = 'py'

        # Construct Signature Base String
        sbs = self.query_string(params, sort=True)

        # Generate signature
        api_signature = hashlib.sha1(sbs + self._secret).hexdigest()

        return sbs + '&api_signature=' + api_signature
Tests the absence of the correct closing tag.
dataset/ETHPy150Open rmnl/clack/clack/account_client.py/API._signed_query_string--crossover with--dataset/ETHPy150Open dgouldin/django-modernizr/modernizr/tests.py/ModernizrMiddlewareTest.test_no_tag