nodes: 0, module; 1, function_definition; 2, function_name:sort_url_qsl; 3, parameters; 4, block; 5, identifier:cls; 6, identifier:raw_url; 7, dictionary_splat_pattern; 8, expression_statement; 9, expression_statement; 10, expression_statement; 11, return_statement; 12, identifier:kwargs; 13, comment:"""Do nothing but sort the params of url.
  
              raw_url: the raw url to be sorted; 
              kwargs: (optional) same kwargs for ``sorted``.
          """; 14, assignment; 15, assignment; 16, call; 17, identifier:parsed_url; 18, call; 19, identifier:qsl; 20, call; 21, attribute; 22, argument_list; 23, identifier:urlparse; 24, argument_list; 25, identifier:parse_qsl; 26, argument_list; 27, identifier:cls; 28, identifier:_join_url; 29, identifier:parsed_url; 30, call; 31, identifier:raw_url; 32, attribute; 33, identifier:sorted; 34, argument_list; 35, identifier:parsed_url; 36, identifier:query; 37, identifier:qsl; 38, dictionary_splat; 39, identifier:kwargs
code: def sort_url_qsl(cls, raw_url, **kwargs):
          """Do nothing but sort the params of url.
  
              raw_url: the raw url to be sorted; 
              kwargs: (optional) same kwargs for ``sorted``.
          """
          parsed_url = urlparse(raw_url)
          qsl = parse_qsl(parsed_url.query)
          return cls._join_url(parsed_url, sorted(qsl, **kwargs))