prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Add support for backup in timestream backup
  ### Describe the feature
  
  This will use AWS backup service to take time-stream backup.
  
  ### Extra information or context
  
  _No response_
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `c7n/resources/timestream.py`
  Content:
  ```
  1 from c7n.manager import resources
  2 from c7n.actions import Action
  3 from c7n.filters.kms import KmsRelatedFilter
  4 from c7n.query import DescribeSource, QueryResourceManager, TypeInfo
  5 from c7n.utils import local_session, type_schema
  6 from c7n.tags import (
  7     TagDelayedAction,
  8     TagActionFilter,
  9     Tag as TagAction,
  10     RemoveTag as RemoveTagAction
  11 )
  12 
  13 
  14 class DescribeTimestream(DescribeSource):
  15     def augment(self, resources):
  16         for r in resources:
  17             client = local_session(self.manager.session_factory).client('timestream-write')
  18             r['Tags'] = client.list_tags_for_resource(ResourceARN=r['Arn'])['Tags']
  19         return resources
  20 
  21 
  22 @resources.register('timestream-database')
  23 class TimestreamDatabase(QueryResourceManager):
  24     class resource_type(TypeInfo):
  25         service = 'timestream-write'
  26         arn_type = ''
  27         name = 'DatabaseName'
  28         id = arn = 'Arn'
  29         enum_spec = ('list_databases', 'Databases', {})
  30         permission_prefix = 'timestream'
  31         permissions = ('timestream:ListDatabases', )
  32         permissions_augment = ("timestream:ListTagsForResource",)
  33     source_mapping = {
  34         'describe': DescribeTimestream,
  35     }
  36 
  37 
  38 @resources.register('timestream-table')
  39 class TimestreamTable(QueryResourceManager):
  40     class resource_type(TypeInfo):
  41         service = 'timestream-write'
  42         arn_type = ''
  43         name = 'TableName'
  44         id = arn = 'Arn'
  45         enum_spec = ('list_tables', 'Tables', {})
  46         permission_prefix = 'timestream'
  47         permissions = ('timestream:ListTables', )
  48 
  49     source_mapping = {
  50         'describe': DescribeTimestream,
  51     }
  52 
  53 
  54 @TimestreamDatabase.action_registry.register('tag')
  55 @TimestreamTable.action_registry.register('tag')
  56 class TimestreamTag(TagAction):
  57 
  58     permissions = ('timestream:TagResource', )
  59 
  60     def process_resource_set(self, client, resource_set, tags):
  61         for r in resource_set:
  62             client.tag_resource(ResourceARN=r['Arn'], Tags=tags)
  63 
  64 
  65 @TimestreamDatabase.action_registry.register('remove-tag')
  66 @TimestreamTable.action_registry.register('remove-tag')
  67 class TimestreamRemoveTag(RemoveTagAction):
  68 
  69     permissions = ('timestream:UntagResource', )
  70 
  71     def process_resource_set(self, client, resource_set, tag_keys):
  72         for r in resource_set:
  73             client.untag_resource(ResourceARN=r['Arn'], TagKeys=tag_keys)
  74 
  75 
  76 TimestreamDatabase.action_registry.register('mark-for-op', TagDelayedAction)
  77 TimestreamTable.action_registry.register('mark-for-op', TagDelayedAction)
  78 
  79 TimestreamDatabase.filter_registry.register('marked-for-op', TagActionFilter)
  80 TimestreamTable.filter_registry.register('marked-for-op', TagActionFilter)
  81 
  82 
  83 @TimestreamTable.action_registry.register('delete')
  84 class TimestreamTableDelete(Action):
  85     """
  86     Deletes a timestream table
  87     """
  88 
  89     schema = type_schema('delete')
  90     permissions = ('timestream:DeleteTable', )
  91 
  92     def process(self, resources):
  93         client = local_session(self.manager.session_factory).client('timestream-write')
  94         for r in resources:
  95             try:
  96                 client.delete_table(
  97                     DatabaseName=r['DatabaseName'],
  98                     TableName=r['TableName']
  99                 )
  100             except client.exceptions.ResourceNotFoundException:
  101                 continue
  102 
  103 
  104 @TimestreamDatabase.action_registry.register('delete')
  105 class TimestreamDatabaseDelete(Action):
  106     """
  107     Deletes a timestream database
  108     """
  109 
  110     schema = type_schema('delete', force={'type': 'boolean', 'default': False})
  111     permissions = (
  112         'timestream:DeleteDatabase',
  113         'timestream:ListTables', 'timestream:DeleteTable', )
  114 
  115     def process(self, resources):
  116         client = local_session(self.manager.session_factory).client('timestream-write')
  117         for r in resources:
  118             try:
  119                 client.delete_database(
  120                     DatabaseName=r['DatabaseName'],
  121                 )
  122             except client.exceptions.ResourceNotFoundException:
  123                 continue
  124             except client.exceptions.ValidationException:
  125                 if not self.data.get('force', False):
  126                     self.log.error(
  127                         f'Unable to delete database:{r["DatabaseName"]}, '
  128                         'tables must be deleted first')
  129                     continue
  130                 tables = client.list_tables(DatabaseName=r['DatabaseName'])['Tables']
  131                 TimestreamTableDelete(
  132                     data={'type': 'delete'},
  133                     manager=self.manager,
  134                     log_dir=self.log_dir
  135                 ).process(tables)
  136                 client.delete_database(
  137                     DatabaseName=r['DatabaseName'],
  138                 )
  139 
  140 
  141 @TimestreamDatabase.filter_registry.register('kms-key')
  142 class KmsFilter(KmsRelatedFilter):
  143     RelatedIdsExpression = 'KmsKeyId'
  144
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/c7n/resources/timestream.py b/c7n/resources/timestream.py
  --- a/c7n/resources/timestream.py
  +++ b/c7n/resources/timestream.py
  @@ -9,6 +9,7 @@
       Tag as TagAction,
       RemoveTag as RemoveTagAction
   )
  +from c7n.filters.backup import ConsecutiveAwsBackupsFilter
   
   
   class DescribeTimestream(DescribeSource):
  @@ -138,6 +139,9 @@
                   )
   
   
  +TimestreamTable.filter_registry.register('consecutive-aws-backups', ConsecutiveAwsBackupsFilter)
  +
  +
   @TimestreamDatabase.filter_registry.register('kms-key')
   class KmsFilter(KmsRelatedFilter):
       RelatedIdsExpression = 'KmsKeyId'
  
verification_info: {"golden_diff": "diff --git a/c7n/resources/timestream.py b/c7n/resources/timestream.py\n--- a/c7n/resources/timestream.py\n+++ b/c7n/resources/timestream.py\n@@ -9,6 +9,7 @@\n     Tag as TagAction,\n     RemoveTag as RemoveTagAction\n )\n+from c7n.filters.backup import ConsecutiveAwsBackupsFilter\n \n \n class DescribeTimestream(DescribeSource):\n@@ -138,6 +139,9 @@\n                 )\n \n \n+TimestreamTable.filter_registry.register('consecutive-aws-backups', ConsecutiveAwsBackupsFilter)\n+\n+\n @TimestreamDatabase.filter_registry.register('kms-key')\n class KmsFilter(KmsRelatedFilter):\n     RelatedIdsExpression = 'KmsKeyId'\n", "issue": "Add support for backup in timestream backup\n### Describe the feature\n\nThis will use AWS backup service to take time-stream backup.\n\n### Extra information or context\n\n_No response_\n", "before_files": [{"content": "from c7n.manager import resources\nfrom c7n.actions import Action\nfrom c7n.filters.kms import KmsRelatedFilter\nfrom c7n.query import DescribeSource, QueryResourceManager, TypeInfo\nfrom c7n.utils import local_session, type_schema\nfrom c7n.tags import (\n    TagDelayedAction,\n    TagActionFilter,\n    Tag as TagAction,\n    RemoveTag as RemoveTagAction\n)\n\n\nclass DescribeTimestream(DescribeSource):\n    def augment(self, resources):\n        for r in resources:\n            client = local_session(self.manager.session_factory).client('timestream-write')\n            r['Tags'] = client.list_tags_for_resource(ResourceARN=r['Arn'])['Tags']\n        return resources\n\n\n@resources.register('timestream-database')\nclass TimestreamDatabase(QueryResourceManager):\n    class resource_type(TypeInfo):\n        service = 'timestream-write'\n        arn_type = ''\n        name = 'DatabaseName'\n        id = arn = 'Arn'\n        enum_spec = ('list_databases', 'Databases', {})\n        permission_prefix = 'timestream'\n        permissions = ('timestream:ListDatabases', )\n        permissions_augment = (\"timestream:ListTagsForResource\",)\n    source_mapping = {\n        'describe': DescribeTimestream,\n    }\n\n\n@resources.register('timestream-table')\nclass TimestreamTable(QueryResourceManager):\n    class resource_type(TypeInfo):\n        service = 'timestream-write'\n        arn_type = ''\n        name = 'TableName'\n        id = arn = 'Arn'\n        enum_spec = ('list_tables', 'Tables', {})\n        permission_prefix = 'timestream'\n        permissions = ('timestream:ListTables', )\n\n    source_mapping = {\n        'describe': DescribeTimestream,\n    }\n\n\n@TimestreamDatabase.action_registry.register('tag')\n@TimestreamTable.action_registry.register('tag')\nclass TimestreamTag(TagAction):\n\n    permissions = ('timestream:TagResource', )\n\n    def process_resource_set(self, client, resource_set, tags):\n        for r in resource_set:\n            client.tag_resource(ResourceARN=r['Arn'], Tags=tags)\n\n\n@TimestreamDatabase.action_registry.register('remove-tag')\n@TimestreamTable.action_registry.register('remove-tag')\nclass TimestreamRemoveTag(RemoveTagAction):\n\n    permissions = ('timestream:UntagResource', )\n\n    def process_resource_set(self, client, resource_set, tag_keys):\n        for r in resource_set:\n            client.untag_resource(ResourceARN=r['Arn'], TagKeys=tag_keys)\n\n\nTimestreamDatabase.action_registry.register('mark-for-op', TagDelayedAction)\nTimestreamTable.action_registry.register('mark-for-op', TagDelayedAction)\n\nTimestreamDatabase.filter_registry.register('marked-for-op', TagActionFilter)\nTimestreamTable.filter_registry.register('marked-for-op', TagActionFilter)\n\n\n@TimestreamTable.action_registry.register('delete')\nclass TimestreamTableDelete(Action):\n    \"\"\"\n    Deletes a timestream table\n    \"\"\"\n\n    schema = type_schema('delete')\n    permissions = ('timestream:DeleteTable', )\n\n    def process(self, resources):\n        client = local_session(self.manager.session_factory).client('timestream-write')\n        for r in resources:\n            try:\n                client.delete_table(\n                    DatabaseName=r['DatabaseName'],\n                    TableName=r['TableName']\n                )\n            except client.exceptions.ResourceNotFoundException:\n                continue\n\n\n@TimestreamDatabase.action_registry.register('delete')\nclass TimestreamDatabaseDelete(Action):\n    \"\"\"\n    Deletes a timestream database\n    \"\"\"\n\n    schema = type_schema('delete', force={'type': 'boolean', 'default': False})\n    permissions = (\n        'timestream:DeleteDatabase',\n        'timestream:ListTables', 'timestream:DeleteTable', )\n\n    def process(self, resources):\n        client = local_session(self.manager.session_factory).client('timestream-write')\n        for r in resources:\n            try:\n                client.delete_database(\n                    DatabaseName=r['DatabaseName'],\n                )\n            except client.exceptions.ResourceNotFoundException:\n                continue\n            except client.exceptions.ValidationException:\n                if not self.data.get('force', False):\n                    self.log.error(\n                        f'Unable to delete database:{r[\"DatabaseName\"]}, '\n                        'tables must be deleted first')\n                    continue\n                tables = client.list_tables(DatabaseName=r['DatabaseName'])['Tables']\n                TimestreamTableDelete(\n                    data={'type': 'delete'},\n                    manager=self.manager,\n                    log_dir=self.log_dir\n                ).process(tables)\n                client.delete_database(\n                    DatabaseName=r['DatabaseName'],\n                )\n\n\n@TimestreamDatabase.filter_registry.register('kms-key')\nclass KmsFilter(KmsRelatedFilter):\n    RelatedIdsExpression = 'KmsKeyId'\n", "path": "c7n/resources/timestream.py"}], "after_files": [{"content": "from c7n.manager import resources\nfrom c7n.actions import Action\nfrom c7n.filters.kms import KmsRelatedFilter\nfrom c7n.query import DescribeSource, QueryResourceManager, TypeInfo\nfrom c7n.utils import local_session, type_schema\nfrom c7n.tags import (\n    TagDelayedAction,\n    TagActionFilter,\n    Tag as TagAction,\n    RemoveTag as RemoveTagAction\n)\nfrom c7n.filters.backup import ConsecutiveAwsBackupsFilter\n\n\nclass DescribeTimestream(DescribeSource):\n    def augment(self, resources):\n        for r in resources:\n            client = local_session(self.manager.session_factory).client('timestream-write')\n            r['Tags'] = client.list_tags_for_resource(ResourceARN=r['Arn'])['Tags']\n        return resources\n\n\n@resources.register('timestream-database')\nclass TimestreamDatabase(QueryResourceManager):\n    class resource_type(TypeInfo):\n        service = 'timestream-write'\n        arn_type = ''\n        name = 'DatabaseName'\n        id = arn = 'Arn'\n        enum_spec = ('list_databases', 'Databases', {})\n        permission_prefix = 'timestream'\n        permissions = ('timestream:ListDatabases', )\n        permissions_augment = (\"timestream:ListTagsForResource\",)\n    source_mapping = {\n        'describe': DescribeTimestream,\n    }\n\n\n@resources.register('timestream-table')\nclass TimestreamTable(QueryResourceManager):\n    class resource_type(TypeInfo):\n        service = 'timestream-write'\n        arn_type = ''\n        name = 'TableName'\n        id = arn = 'Arn'\n        enum_spec = ('list_tables', 'Tables', {})\n        permission_prefix = 'timestream'\n        permissions = ('timestream:ListTables', )\n\n    source_mapping = {\n        'describe': DescribeTimestream,\n    }\n\n\n@TimestreamDatabase.action_registry.register('tag')\n@TimestreamTable.action_registry.register('tag')\nclass TimestreamTag(TagAction):\n\n    permissions = ('timestream:TagResource', )\n\n    def process_resource_set(self, client, resource_set, tags):\n        for r in resource_set:\n            client.tag_resource(ResourceARN=r['Arn'], Tags=tags)\n\n\n@TimestreamDatabase.action_registry.register('remove-tag')\n@TimestreamTable.action_registry.register('remove-tag')\nclass TimestreamRemoveTag(RemoveTagAction):\n\n    permissions = ('timestream:UntagResource', )\n\n    def process_resource_set(self, client, resource_set, tag_keys):\n        for r in resource_set:\n            client.untag_resource(ResourceARN=r['Arn'], TagKeys=tag_keys)\n\n\nTimestreamDatabase.action_registry.register('mark-for-op', TagDelayedAction)\nTimestreamTable.action_registry.register('mark-for-op', TagDelayedAction)\n\nTimestreamDatabase.filter_registry.register('marked-for-op', TagActionFilter)\nTimestreamTable.filter_registry.register('marked-for-op', TagActionFilter)\n\n\n@TimestreamTable.action_registry.register('delete')\nclass TimestreamTableDelete(Action):\n    \"\"\"\n    Deletes a timestream table\n    \"\"\"\n\n    schema = type_schema('delete')\n    permissions = ('timestream:DeleteTable', )\n\n    def process(self, resources):\n        client = local_session(self.manager.session_factory).client('timestream-write')\n        for r in resources:\n            try:\n                client.delete_table(\n                    DatabaseName=r['DatabaseName'],\n                    TableName=r['TableName']\n                )\n            except client.exceptions.ResourceNotFoundException:\n                continue\n\n\n@TimestreamDatabase.action_registry.register('delete')\nclass TimestreamDatabaseDelete(Action):\n    \"\"\"\n    Deletes a timestream database\n    \"\"\"\n\n    schema = type_schema('delete', force={'type': 'boolean', 'default': False})\n    permissions = (\n        'timestream:DeleteDatabase',\n        'timestream:ListTables', 'timestream:DeleteTable', )\n\n    def process(self, resources):\n        client = local_session(self.manager.session_factory).client('timestream-write')\n        for r in resources:\n            try:\n                client.delete_database(\n                    DatabaseName=r['DatabaseName'],\n                )\n            except client.exceptions.ResourceNotFoundException:\n                continue\n            except client.exceptions.ValidationException:\n                if not self.data.get('force', False):\n                    self.log.error(\n                        f'Unable to delete database:{r[\"DatabaseName\"]}, '\n                        'tables must be deleted first')\n                    continue\n                tables = client.list_tables(DatabaseName=r['DatabaseName'])['Tables']\n                TimestreamTableDelete(\n                    data={'type': 'delete'},\n                    manager=self.manager,\n                    log_dir=self.log_dir\n                ).process(tables)\n                client.delete_database(\n                    DatabaseName=r['DatabaseName'],\n                )\n\n\nTimestreamTable.filter_registry.register('consecutive-aws-backups', ConsecutiveAwsBackupsFilter)\n\n\n@TimestreamDatabase.filter_registry.register('kms-key')\nclass KmsFilter(KmsRelatedFilter):\n    RelatedIdsExpression = 'KmsKeyId'\n", "path": "c7n/resources/timestream.py"}]}