code: def lifecycle_rules(self):
          
          info = self._properties.get("lifecycle", {})
          for rule in info.get("rule", ()):
              action_type = rule["action"]["type"]
              if action_type == "Delete":
                  yield LifecycleRuleDelete.from_api_repr(rule)
              elif action_type == "SetStorageClass":
                  yield LifecycleRuleSetStorageClass.from_api_repr(rule)
              else:
                  raise ValueError("Unknown lifecycle rule: {}".format(rule))
docs: Retrieve or set lifecycle rules configured for this bucket.
  
          See https://cloud.google.com/storage/docs/lifecycle and
               https://cloud.google.com/storage/docs/json_api/v1/buckets
  
          .. note::
  
             The getter for this property returns a list which contains
             *copies* of the bucket's lifecycle rules mappings.  Mutating the
             list or one of its dicts has no effect unless you then re-assign
             the dict via the setter.  E.g.:
  
             >>> rules = bucket.lifecycle_rules
             >>> rules.append({'origin': '/foo', ...})
             >>> rules[1]['rule']['action']['type'] = 'Delete'
             >>> del rules[0]
             >>> bucket.lifecycle_rules = rules
             >>> bucket.update()
  
          :setter: Set lifestyle rules for this bucket.
          :getter: Gets the lifestyle rules for this bucket.
  
          :rtype: generator(dict)
          :returns: A sequence of mappings describing each lifecycle rule.