1010from moto .dynamodb .exceptions import (
1111 BackupNotFoundException ,
1212 ConditionalCheckFailed ,
13+ DeletionProtectedException ,
1314 ItemSizeTooLarge ,
1415 ItemSizeToUpdateTooLarge ,
1516 MockValidationException ,
@@ -71,6 +72,10 @@ def create_table(self, name: str, **params: Any) -> Table:
7172 def delete_table (self , name : str ) -> Table :
7273 if name not in self .tables :
7374 raise ResourceNotFoundException
75+ table_for_deletion = self .tables .get (name )
76+ if isinstance (table_for_deletion , Table ):
77+ if table_for_deletion .deletion_protection_enabled :
78+ raise DeletionProtectedException (name )
7479 return self .tables .pop (name )
7580
7681 def describe_endpoints (self ) -> List [Dict [str , Union [int , str ]]]:
@@ -137,6 +142,7 @@ def update_table(
137142 throughput : Dict [str , Any ],
138143 billing_mode : str ,
139144 stream_spec : Dict [str , Any ],
145+ deletion_protection_enabled : bool ,
140146 ) -> Table :
141147 table = self .get_table (name )
142148 if attr_definitions :
@@ -149,6 +155,10 @@ def update_table(
149155 table = self .update_table_billing_mode (name , billing_mode )
150156 if stream_spec :
151157 table = self .update_table_streams (name , stream_spec )
158+ if deletion_protection_enabled :
159+ table = self .update_table_deletion_protection_enabled (
160+ name , deletion_protection_enabled
161+ )
152162 return table
153163
154164 def update_table_throughput (self , name : str , throughput : Dict [str , int ]) -> Table :
@@ -161,6 +171,13 @@ def update_table_billing_mode(self, name: str, billing_mode: str) -> Table:
161171 table .billing_mode = billing_mode
162172 return table
163173
174+ def update_table_deletion_protection_enabled (
175+ self , name : str , deletion_protection_enabled : bool
176+ ) -> Table :
177+ table = self .tables [name ]
178+ table .deletion_protection_enabled = deletion_protection_enabled
179+ return table
180+
164181 def update_table_streams (
165182 self , name : str , stream_specification : Dict [str , Any ]
166183 ) -> Table :
0 commit comments