nodes: 0, module; 1, function_definition; 2, function_name:pbar_strings; 3, parameters; 4, block; 5, identifier:files; 6, default_parameter; 7, dictionary_splat_pattern; 8, expression_statement; 9, return_statement; 10, identifier:desc; 11, string; 12, identifier:kwargs; 13, comment:"""Wrapper for `tqdm` progress bar which also sorts list of strings
      """; 14, call; 15, identifier:tqdm; 16, argument_list; 17, call; 18, keyword_argument; 19, keyword_argument; 20, dictionary_splat; 21, identifier:sorted; 22, argument_list; 23, identifier:desc; 24, parenthesized_expression; 25, identifier:dynamic_ncols; 26, True; 27, identifier:kwargs; 28, identifier:files; 29, keyword_argument; 30, binary_operator:'<' + str(datetime.now().strftime("%Y-%m-%d %H:%M:%S")) + '> ' +
                desc; 31, identifier:key; 32, lambda; 33, binary_operator:'<' + str(datetime.now().strftime("%Y-%m-%d %H:%M:%S")) + '> '; 34, identifier:desc; 35, lambda_parameters; 36, call; 37, binary_operator:'<' + str(datetime.now().strftime("%Y-%m-%d %H:%M:%S")); 38, string; 39, identifier:s; 40, attribute; 41, argument_list; 42, string; 43, call; 44, string_content:>; 45, identifier:s; 46, identifier:lower; 47, string_content:<; 48, identifier:str; 49, argument_list; 50, call; 51, attribute; 52, argument_list; 53, call; 54, identifier:strftime; 55, string:"%Y-%m-%d %H:%M:%S"; 56, attribute; 57, argument_list; 58, identifier:datetime; 59, identifier:now
code: def pbar_strings(files, desc='', **kwargs):
      """Wrapper for `tqdm` progress bar which also sorts list of strings
      """
      return tqdm(
          sorted(files, key=lambda s: s.lower()),
          desc=('<' + str(datetime.now().strftime("%Y-%m-%d %H:%M:%S")) + '> ' +
                desc),
          dynamic_ncols=True,
          **kwargs)