nodes: 0, module; 1, function_definition; 2, function_name:get; 3, parameters; 4, block; 5, identifier:self; 6, identifier:now; 7, expression_statement; 8, expression_statement; 9, return_statement; 10, comment:"""
          Get a bucket key to compact.  If none are available, returns
          None.  This uses a Lua script to ensure that the bucket key is
          popped off the sorted set in an atomic fashion.
  
          :param now: The current time, as a float.  Used to ensure the
                      bucket key has been aged sufficiently to be
                      quiescent.
  
          :returns: A bucket key ready for compaction, or None if no
                    bucket keys are available or none have aged
                    sufficiently.
          """; 11, assignment; 12, conditional_expression:items[0] if items else None; 13, identifier:items; 14, call; 15, subscript; 16, identifier:items; 17, None; 18, attribute; 19, argument_list; 20, identifier:items; 21, integer:0; 22, identifier:self; 23, identifier:script; 24, keyword_argument; 25, keyword_argument; 26, identifier:keys; 27, list; 28, identifier:args; 29, list; 30, attribute; 31, binary_operator:now - self.min_age; 32, identifier:self; 33, identifier:key; 34, identifier:now; 35, attribute; 36, identifier:self; 37, identifier:min_age
code: def get(self, now):
          """
          Get a bucket key to compact.  If none are available, returns
          None.  This uses a Lua script to ensure that the bucket key is
          popped off the sorted set in an atomic fashion.
  
          :param now: The current time, as a float.  Used to ensure the
                      bucket key has been aged sufficiently to be
                      quiescent.
  
          :returns: A bucket key ready for compaction, or None if no
                    bucket keys are available or none have aged
                    sufficiently.
          """
  
          items = self.script(keys=[self.key], args=[now - self.min_age])
          return items[0] if items else None