|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | import json | 
					
						
						|  | import os | 
					
						
						|  | import tempfile | 
					
						
						|  | import unittest | 
					
						
						|  |  | 
					
						
						|  | from transformers.modelcard import ModelCard, TrainingSummary | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | class ModelCardTester(unittest.TestCase): | 
					
						
						|  | def setUp(self): | 
					
						
						|  | self.inputs_dict = { | 
					
						
						|  | "model_details": { | 
					
						
						|  | "Organization": "testing", | 
					
						
						|  | "Model date": "today", | 
					
						
						|  | "Model version": "v2.1, Developed by Test Corp in 2019.", | 
					
						
						|  | "Architecture": "Convolutional Neural Network.", | 
					
						
						|  | }, | 
					
						
						|  | "metrics": "BLEU and ROUGE-1", | 
					
						
						|  | "evaluation_data": { | 
					
						
						|  | "Datasets": {"BLEU": "My-great-dataset-v1", "ROUGE-1": "My-short-dataset-v2.1"}, | 
					
						
						|  | "Preprocessing": "See details on https://arxiv.org/pdf/1810.03993.pdf", | 
					
						
						|  | }, | 
					
						
						|  | "training_data": { | 
					
						
						|  | "Dataset": "English Wikipedia dump dated 2018-12-01", | 
					
						
						|  | "Preprocessing": ( | 
					
						
						|  | "Using SentencePiece vocabulary of size 52k tokens. See details on" | 
					
						
						|  | " https://arxiv.org/pdf/1810.03993.pdf" | 
					
						
						|  | ), | 
					
						
						|  | }, | 
					
						
						|  | "quantitative_analyses": {"BLEU": 55.1, "ROUGE-1": 76}, | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  | def test_model_card_common_properties(self): | 
					
						
						|  | modelcard = ModelCard.from_dict(self.inputs_dict) | 
					
						
						|  | self.assertTrue(hasattr(modelcard, "model_details")) | 
					
						
						|  | self.assertTrue(hasattr(modelcard, "intended_use")) | 
					
						
						|  | self.assertTrue(hasattr(modelcard, "factors")) | 
					
						
						|  | self.assertTrue(hasattr(modelcard, "metrics")) | 
					
						
						|  | self.assertTrue(hasattr(modelcard, "evaluation_data")) | 
					
						
						|  | self.assertTrue(hasattr(modelcard, "training_data")) | 
					
						
						|  | self.assertTrue(hasattr(modelcard, "quantitative_analyses")) | 
					
						
						|  | self.assertTrue(hasattr(modelcard, "ethical_considerations")) | 
					
						
						|  | self.assertTrue(hasattr(modelcard, "caveats_and_recommendations")) | 
					
						
						|  |  | 
					
						
						|  | def test_model_card_to_json_string(self): | 
					
						
						|  | modelcard = ModelCard.from_dict(self.inputs_dict) | 
					
						
						|  | obj = json.loads(modelcard.to_json_string()) | 
					
						
						|  | for key, value in self.inputs_dict.items(): | 
					
						
						|  | self.assertEqual(obj[key], value) | 
					
						
						|  |  | 
					
						
						|  | def test_model_card_to_json_file(self): | 
					
						
						|  | model_card_first = ModelCard.from_dict(self.inputs_dict) | 
					
						
						|  |  | 
					
						
						|  | with tempfile.TemporaryDirectory() as tmpdirname: | 
					
						
						|  | filename = os.path.join(tmpdirname, "modelcard.json") | 
					
						
						|  | model_card_first.to_json_file(filename) | 
					
						
						|  | model_card_second = ModelCard.from_json_file(filename) | 
					
						
						|  |  | 
					
						
						|  | self.assertEqual(model_card_second.to_dict(), model_card_first.to_dict()) | 
					
						
						|  |  | 
					
						
						|  | def test_model_card_from_and_save_pretrained(self): | 
					
						
						|  | model_card_first = ModelCard.from_dict(self.inputs_dict) | 
					
						
						|  |  | 
					
						
						|  | with tempfile.TemporaryDirectory() as tmpdirname: | 
					
						
						|  | model_card_first.save_pretrained(tmpdirname) | 
					
						
						|  | model_card_second = ModelCard.from_pretrained(tmpdirname) | 
					
						
						|  |  | 
					
						
						|  | self.assertEqual(model_card_second.to_dict(), model_card_first.to_dict()) | 
					
						
						|  |  | 
					
						
						|  | def test_model_summary_modelcard_base_metadata(self): | 
					
						
						|  | metadata = TrainingSummary("Model name").create_metadata() | 
					
						
						|  | self.assertTrue("library_name" in metadata) | 
					
						
						|  | self.assertTrue(metadata["library_name"] == "transformers") | 
					
						
						|  |  |