nodes: 0, module; 1, function_definition; 2, function_name:bzpopmin; 3, parameters; 4, block; 5, identifier:self; 6, identifier:keys; 7, default_parameter; 8, expression_statement; 9, if_statement; 10, expression_statement; 11, expression_statement; 12, return_statement; 13, identifier:timeout; 14, integer:0; 15, comment:"""
          ZPOPMIN a value off of the first non-empty sorted set
          named in the ``keys`` list.
  
          If none of the sorted sets in ``keys`` has a value to ZPOPMIN,
          then block for ``timeout`` seconds, or until a member gets added
          to one of the sorted sets.
  
          If timeout is 0, then block indefinitely.
          """; 16, comparison_operator:timeout is None; 17, block; 18, assignment; 19, call; 20, call; 21, identifier:timeout; 22, None; 23, expression_statement; 24, identifier:keys; 25, call; 26, attribute; 27, argument_list; 28, attribute; 29, argument_list; 30, assignment; 31, identifier:list_or_args; 32, argument_list; 33, identifier:keys; 34, identifier:append; 35, identifier:timeout; 36, identifier:self; 37, identifier:execute_command; 38, string; 39, list_splat; 40, identifier:timeout; 41, integer:0; 42, identifier:keys; 43, None; 44, string_content:BZPOPMIN; 45, identifier:keys
code: def bzpopmin(self, keys, timeout=0):
          """
          ZPOPMIN a value off of the first non-empty sorted set
          named in the ``keys`` list.
  
          If none of the sorted sets in ``keys`` has a value to ZPOPMIN,
          then block for ``timeout`` seconds, or until a member gets added
          to one of the sorted sets.
  
          If timeout is 0, then block indefinitely.
          """
          if timeout is None:
              timeout = 0
          keys = list_or_args(keys, None)
          keys.append(timeout)
          return self.execute_command('BZPOPMIN', *keys)