@@ -2466,32 +2466,55 @@ def update_model_card(self, model_card: Union[ModelCard, ModelPackageModelCard])
24662466 desc_model_package = sagemaker_session .sagemaker_client .describe_model_package (
24672467 ModelPackageName = self .model_package_arn
24682468 )
2469+ if hasattr (model_card , "model_package_details" ):
2470+ model_card .model_package_details = None
24692471 update_model_card_req = model_card ._create_request_args ()
2470- if update_model_card_req ["ModelCardStatus" ] is not None :
2471- if (
2472- desc_model_package ["ModelCard" ]["ModelCardStatus" ]
2473- == update_model_card_req ["ModelCardStatus" ]
2474- ):
2475- del update_model_card_req ["ModelCardStatus" ]
2476-
24772472 if update_model_card_req .get ("ModelCardName" ) is not None :
24782473 del update_model_card_req ["ModelCardName" ]
2479- if update_model_card_req .get ("Content" ) is not None :
2480- previous_content_hash = _hash_content_str (
2481- desc_model_package ["ModelCard" ]["ModelCardContent" ]
2482- )
2483- current_content_hash = _hash_content_str (update_model_card_req ["Content" ])
2484- if (
2485- previous_content_hash == current_content_hash
2486- or update_model_card_req .get ("Content" ) == "{}"
2487- or update_model_card_req .get ("Content" ) == "null"
2488- ):
2489- del update_model_card_req ["Content" ]
2490- else :
2491- update_model_card_req ["ModelCardContent" ] = update_model_card_req ["Content" ]
2492- del update_model_card_req ["Content" ]
2493- update_model_package_args = {
2494- "ModelPackageArn" : self .model_package_arn ,
2495- "ModelCard" : update_model_card_req ,
2496- }
2497- sagemaker_session .sagemaker_client .update_model_package (** update_model_package_args )
2474+ if update_model_card_req ["Content" ] is not None :
2475+ if "model_package_details" in update_model_card_req ["Content" ]:
2476+ update_model_card_req ["Content" ].pop ("model_package_details" , None )
2477+ update_model_card_req ["ModelCardContent" ] = update_model_card_req ["Content" ]
2478+ del update_model_card_req ["Content" ]
2479+
2480+ if "ModelCard" in desc_model_package :
2481+ if update_model_card_req ["ModelCardStatus" ] is not None :
2482+ if (
2483+ desc_model_package ["ModelCard" ]["ModelCardStatus" ]
2484+ != update_model_card_req ["ModelCardStatus" ]
2485+ ):
2486+ new_mc_mp_req = update_model_card_req
2487+ del new_mc_mp_req ["ModelCardContent" ]
2488+ update_model_package_args = {
2489+ "ModelPackageArn" : self .model_package_arn ,
2490+ "ModelCard" : new_mc_mp_req ,
2491+ }
2492+ sagemaker_session .sagemaker_client .update_model_package (
2493+ ** update_model_package_args
2494+ )
2495+
2496+ if update_model_card_req .get ("ModelCardContent" ) is not None :
2497+ previous_content_hash = _hash_content_str (
2498+ desc_model_package ["ModelCard" ]["ModelCardContent" ]
2499+ )
2500+ current_content_hash = _hash_content_str (update_model_card_req ["ModelCardContent" ])
2501+ if not (
2502+ previous_content_hash == current_content_hash
2503+ or update_model_card_req .get ("ModelCardContent" ) == "{}"
2504+ or update_model_card_req .get ("ModelCardContent" ) == "null"
2505+ ):
2506+ new_mc_mp_req = update_model_card_req
2507+ del new_mc_mp_req ["ModelCardStatus" ]
2508+ update_model_package_args = {
2509+ "ModelPackageArn" : self .model_package_arn ,
2510+ "ModelCard" : new_mc_mp_req ,
2511+ }
2512+ sagemaker_session .sagemaker_client .update_model_package (
2513+ ** update_model_package_args
2514+ )
2515+ else :
2516+ update_model_package_args = {
2517+ "ModelPackageArn" : self .model_package_arn ,
2518+ "ModelCard" : update_model_card_req ,
2519+ }
2520+ sagemaker_session .sagemaker_client .update_model_package (** update_model_package_args )
0 commit comments