@@ -978,8 +978,10 @@ def _create_table(
978978 session : boto3 .Session = _utils .ensure_session (session = boto3_session )
979979 client_glue : boto3 .client = _utils .client (service_name = "glue" , session = session )
980980 exist : bool = does_table_exist (database = database , table = table , boto3_session = session )
981- if mode not in ("overwrite" , "append" ): # pragma: no cover
982- raise exceptions .InvalidArgument (f"{ mode } is not a valid mode. It must be 'overwrite' or 'append'." )
981+ if mode not in ("overwrite" , "append" , "overwrite_partitions" ): # pragma: no cover
982+ raise exceptions .InvalidArgument (
983+ f"{ mode } is not a valid mode. It must be 'overwrite', 'append' or 'overwrite_partitions'."
984+ )
983985 if (exist is True ) and (mode == "overwrite" ):
984986 skip_archive : bool = not catalog_versioning
985987 partitions_values : List [List [str ]] = list (
@@ -989,7 +991,7 @@ def _create_table(
989991 DatabaseName = database , TableName = table , PartitionsToDelete = [{"Values" : v } for v in partitions_values ]
990992 )
991993 client_glue .update_table (DatabaseName = database , TableInput = table_input , SkipArchive = skip_archive )
992- elif (exist is True ) and (mode == "append" ) and (parameters is not None ):
994+ elif (exist is True ) and (mode in ( "append" , "overwrite_partitions" ) ) and (parameters is not None ):
993995 upsert_table_parameters (parameters = parameters , database = database , table = table , boto3_session = session )
994996 elif exist is False :
995997 client_glue .create_table (DatabaseName = database , TableInput = table_input )
0 commit comments