
import os
import sys
import tempfile
import unittest
import unittest.mock as mock
from pathlib import Path

from huggingface_hub import HfFolder, delete_repo
from huggingface_hub.file_download import http_get
from requests.exceptions import HTTPError

from transformers import (
    AlbertTokenizer,
    AutoTokenizer,
    BertTokenizer,
    BertTokenizerFast,
    GPTaTokenizerFast,
    is_tokenizers_available,
)
from transformers.testing_utils import TOKEN, USER, is_staging_test, require_tokenizers
from transformers.tokenization_utils import Trie


sys.path.append(str(Path(__file__).parent.parent / '''utils'''))

from test_module.custom_tokenization import CustomTokenizer  # noqa E402


if is_tokenizers_available():
			from test_module.custom_tokenization_fast import CustomTokenizerFast




class     _SCREAMING_SNAKE_CASE     (      unittest.TestCase						):



	def     SCREAMING_SNAKE_CASE_(    self )				->       Union[str, Any]:
					# A mock response for an HTTP head request to emulate server down
					lowerCamelCase_						=			mock.Mock()
					lowerCamelCase_						=			500
					lowerCamelCase_						=			{}
					lowerCamelCase_						=			HTTPError
					lowerCamelCase_						=			{}

					# Download this model to make sure it's in the cache.
					lowerCamelCase_						=			BertTokenizer.from_pretrained("hf-internal-testing/tiny-random-bert" )

					# Under the mock environment we get a 500 error when trying to reach the tokenizer.
					with mock.patch("requests.Session.request"						,  return_value=lowercase ) as mock_head:
									lowerCamelCase_						=			BertTokenizer.from_pretrained("hf-internal-testing/tiny-random-bert" )
									# This check we did call the fake head request
									mock_head.assert_called()



	@require_tokenizers
	def     SCREAMING_SNAKE_CASE_(    self )				->       Tuple:
					# A mock response for an HTTP head request to emulate server down
					lowerCamelCase_						=			mock.Mock()
					lowerCamelCase_						=			500
					lowerCamelCase_						=			{}
					lowerCamelCase_						=			HTTPError
					lowerCamelCase_						=			{}

					# Download this model to make sure it's in the cache.
					lowerCamelCase_						=			GPTaTokenizerFast.from_pretrained("gpt2" )

					# Under the mock environment we get a 500 error when trying to reach the tokenizer.
					with mock.patch("requests.Session.request"						,  return_value=lowercase ) as mock_head:
									lowerCamelCase_						=			GPTaTokenizerFast.from_pretrained("gpt2" )
									# This check we did call the fake head request
									mock_head.assert_called()



	def     SCREAMING_SNAKE_CASE_(    self )				->       Any:
					# This test is for deprecated behavior and can be removed in v5
					try:
									lowerCamelCase_						=			tempfile.mktemp()
									with open(lowercase						,  "wb" ) as f:
													http_get("https://huggingface.co/albert-base-v1/resolve/main/spiece.model"						,  lowercase )

									lowerCamelCase_						=			AlbertTokenizer.from_pretrained(lowercase )
					finally:
									os.remove(lowercase )

					# Supporting this legacy load introduced a weird bug where the tokenizer would load local files if they are in
					# the current folder and have the right name.
					if os.path.isfile("tokenizer.json" ):
									# We skip the test if the user has a `tokenizer.json` in this folder to avoid deleting it.
									return
					try:
									with open("tokenizer.json"						,  "wb" ) as f:
													http_get("https://huggingface.co/hf-internal-testing/tiny-random-bert/blob/main/tokenizer.json"						,  lowercase )
									lowerCamelCase_						=			AutoTokenizer.from_pretrained("hf-internal-testing/tiny-random-gpt2" )
									# The tiny random BERT has a vocab size of 1024, tiny gpt2 as a vocab size of 1000
									self.assertEqual(tokenizer.vocab_size						,  1000 )
									# Tokenizer should depend on the remote checkpoint, not the local tokenizer.json file.

					finally:
									os.remove("tokenizer.json" )



	def     SCREAMING_SNAKE_CASE_(    self )				->       int:
					# This test is for deprecated behavior and can be removed in v5
					lowerCamelCase_						=			AlbertTokenizer.from_pretrained("https://huggingface.co/albert-base-v1/resolve/main/spiece.model" )




@is_staging_test
class     _SCREAMING_SNAKE_CASE     (      unittest.TestCase						):
	lowerCAmelCase__         = ['[UNK]', '[CLS]', '[SEP]', '[PAD]', '[MASK]', 'bla', 'blou']



	@classmethod
	def     SCREAMING_SNAKE_CASE_(    cls )				->       Tuple:
					lowerCamelCase_						=			TOKEN
					HfFolder.save_token(lowercase )



	@classmethod
	def     SCREAMING_SNAKE_CASE_(    cls )				->       Dict:
					try:
									delete_repo(token=cls._token						,  repo_id="test-tokenizer" )
					except HTTPError:
									pass

					try:
									delete_repo(token=cls._token						,  repo_id="valid_org/test-tokenizer-org" )
					except HTTPError:
									pass

					try:
									delete_repo(token=cls._token						,  repo_id="test-dynamic-tokenizer" )
					except HTTPError:
									pass



	def     SCREAMING_SNAKE_CASE_(    self )				->       List[str]:
					with tempfile.TemporaryDirectory() as tmp_dir:
									lowerCamelCase_						=			os.path.join(lowercase						,  "vocab.txt" )
									with open(lowercase						,  "w"						,  encoding="utf-8" ) as vocab_writer:
													vocab_writer.write("".join([x + "\n" for x in self.vocab_tokens] ) )
									lowerCamelCase_						=			BertTokenizer(lowercase )

					tokenizer.push_to_hub("test-tokenizer"						,  use_auth_token=self._token )
					lowerCamelCase_						=			BertTokenizer.from_pretrained(f'{USER}/test-tokenizer' )
					self.assertDictEqual(new_tokenizer.vocab						,  tokenizer.vocab )

					# Reset repo
					delete_repo(token=self._token						,  repo_id="test-tokenizer" )

					# Push to hub via save_pretrained
					with tempfile.TemporaryDirectory() as tmp_dir:
									tokenizer.save_pretrained(lowercase						,  repo_id="test-tokenizer"						,  push_to_hub=lowercase						,  use_auth_token=self._token )

					lowerCamelCase_						=			BertTokenizer.from_pretrained(f'{USER}/test-tokenizer' )
					self.assertDictEqual(new_tokenizer.vocab						,  tokenizer.vocab )



	def     SCREAMING_SNAKE_CASE_(    self )				->       Union[str, Any]:
					with tempfile.TemporaryDirectory() as tmp_dir:
									lowerCamelCase_						=			os.path.join(lowercase						,  "vocab.txt" )
									with open(lowercase						,  "w"						,  encoding="utf-8" ) as vocab_writer:
													vocab_writer.write("".join([x + "\n" for x in self.vocab_tokens] ) )
									lowerCamelCase_						=			BertTokenizer(lowercase )

					tokenizer.push_to_hub("valid_org/test-tokenizer-org"						,  use_auth_token=self._token )
					lowerCamelCase_						=			BertTokenizer.from_pretrained("valid_org/test-tokenizer-org" )
					self.assertDictEqual(new_tokenizer.vocab						,  tokenizer.vocab )

					# Reset repo
					delete_repo(token=self._token						,  repo_id="valid_org/test-tokenizer-org" )

					# Push to hub via save_pretrained
					with tempfile.TemporaryDirectory() as tmp_dir:
									tokenizer.save_pretrained(
									    lowercase						,  repo_id="valid_org/test-tokenizer-org"						,  push_to_hub=lowercase						,  use_auth_token=self._token )

					lowerCamelCase_						=			BertTokenizer.from_pretrained("valid_org/test-tokenizer-org" )
					self.assertDictEqual(new_tokenizer.vocab						,  tokenizer.vocab )



	@require_tokenizers
	def     SCREAMING_SNAKE_CASE_(    self )				->       str:
					CustomTokenizer.register_for_auto_class()
					with tempfile.TemporaryDirectory() as tmp_dir:
									lowerCamelCase_						=			os.path.join(lowercase						,  "vocab.txt" )
									with open(lowercase						,  "w"						,  encoding="utf-8" ) as vocab_writer:
													vocab_writer.write("".join([x + "\n" for x in self.vocab_tokens] ) )
									lowerCamelCase_						=			CustomTokenizer(lowercase )

					# No fast custom tokenizer
					tokenizer.push_to_hub("test-dynamic-tokenizer"						,  use_auth_token=self._token )

					lowerCamelCase_						=			AutoTokenizer.from_pretrained(f'{USER}/test-dynamic-tokenizer'						,  trust_remote_code=lowercase )
					# Can't make an isinstance check because the new_model.config is from the CustomTokenizer class of a dynamic module
					self.assertEqual(tokenizer.__class__.__name__						,  "CustomTokenizer" )

					# Fast and slow custom tokenizer
					CustomTokenizerFast.register_for_auto_class()
					with tempfile.TemporaryDirectory() as tmp_dir:
									lowerCamelCase_						=			os.path.join(lowercase						,  "vocab.txt" )
									with open(lowercase						,  "w"						,  encoding="utf-8" ) as vocab_writer:
													vocab_writer.write("".join([x + "\n" for x in self.vocab_tokens] ) )

									lowerCamelCase_						=			BertTokenizerFast.from_pretrained(lowercase )
									bert_tokenizer.save_pretrained(lowercase )
									lowerCamelCase_						=			CustomTokenizerFast.from_pretrained(lowercase )

					tokenizer.push_to_hub("test-dynamic-tokenizer"						,  use_auth_token=self._token )

					lowerCamelCase_						=			AutoTokenizer.from_pretrained(f'{USER}/test-dynamic-tokenizer'						,  trust_remote_code=lowercase )
					# Can't make an isinstance check because the new_model.config is from the FakeConfig class of a dynamic module
					self.assertEqual(tokenizer.__class__.__name__						,  "CustomTokenizerFast" )
					lowerCamelCase_						=			AutoTokenizer.from_pretrained(
					    f'{USER}/test-dynamic-tokenizer'						,  use_fast=lowercase						,  trust_remote_code=lowercase )
					# Can't make an isinstance check because the new_model.config is from the FakeConfig class of a dynamic module
					self.assertEqual(tokenizer.__class__.__name__						,  "CustomTokenizer" )




class     _SCREAMING_SNAKE_CASE     (      unittest.TestCase						):



	def     SCREAMING_SNAKE_CASE_(    self )				->       List[Any]:
					lowerCamelCase_						=			Trie()
					trie.add("Hello 友達" )
					self.assertEqual(trie.data						,  {"H": {"e": {"l": {"l": {"o": {" ": {"友": {"達": {"": 1}}}}}}}}} )
					trie.add("Hello" )
					trie.data
					self.assertEqual(trie.data						,  {"H": {"e": {"l": {"l": {"o": {"": 1, " ": {"友": {"達": {"": 1}}}}}}}}} )



	def     SCREAMING_SNAKE_CASE_(    self )				->       int:
					lowerCamelCase_						=			Trie()
					self.assertEqual(trie.split("[CLS] This is a extra_id_100" )						,  ["[CLS] This is a extra_id_100"] )
					trie.add("[CLS]" )
					trie.add("extra_id_1" )
					trie.add("extra_id_100" )
					self.assertEqual(trie.split("[CLS] This is a extra_id_100" )						,  ["[CLS]", " This is a ", "extra_id_100"] )



	def     SCREAMING_SNAKE_CASE_(    self )				->       int:
					lowerCamelCase_						=			Trie()
					trie.add("A" )
					self.assertEqual(trie.split("ABC" )						,  ["A", "BC"] )
					self.assertEqual(trie.split("BCA" )						,  ["BC", "A"] )



	def     SCREAMING_SNAKE_CASE_(    self )				->       Any:
					lowerCamelCase_						=			Trie()
					trie.add("TOKEN]" )
					trie.add("[SPECIAL_TOKEN]" )
					self.assertEqual(trie.split("This is something [SPECIAL_TOKEN]" )						,  ["This is something ", "[SPECIAL_TOKEN]"] )



	def     SCREAMING_SNAKE_CASE_(    self )				->       str:
					lowerCamelCase_						=			Trie()
					trie.add("A" )
					trie.add("P" )
					trie.add("[SPECIAL_TOKEN]" )
					self.assertEqual(trie.split("This is something [SPECIAL_TOKEN]" )						,  ["This is something ", "[SPECIAL_TOKEN]"] )



	def     SCREAMING_SNAKE_CASE_(    self )				->       List[str]:
					lowerCamelCase_						=			Trie()
					trie.add("AB" )
					trie.add("B" )
					trie.add("C" )
					self.assertEqual(trie.split("ABC" )						,  ["AB", "C"] )



	def     SCREAMING_SNAKE_CASE_(    self )				->       str:
					lowerCamelCase_						=			Trie()
					trie.add("ABC" )
					trie.add("B" )
					trie.add("CD" )
					self.assertEqual(trie.split("ABCD" )						,  ["ABC", "D"] )



	def     SCREAMING_SNAKE_CASE_(    self )				->       Dict:
					# Even if the offsets are wrong, we necessarily output correct string
					# parts.
					lowerCamelCase_						=			Trie()
					lowerCamelCase_						=			trie.cut_text("ABC"						,  [0, 0, 2, 1, 2, 3] )
					self.assertEqual(lowercase						,  ["AB", "C"] )




import argparse
import json
from pathlib import Path

import requests
import torch
from huggingface_hub import hf_hub_download
from PIL import Image

from transformers import YolosConfig, YolosForObjectDetection, YolosImageProcessor
from transformers.utils import logging


logging.set_verbosity_info()
__A				=logging.get_logger(__name__)





def 			lowerCamelCase_ (				lowerCamelCase__    ):
				lowerCamelCase_						=			YolosConfig()

				# size of the architecture
				if "yolos_ti" in yolos_name:
								lowerCamelCase_						=			1_9_2
								lowerCamelCase_						=			7_6_8
								lowerCamelCase_						=			1_2
								lowerCamelCase_						=			3
								lowerCamelCase_						=			[8_0_0, 1_3_3_3]
								lowerCamelCase_						=			False
				elif yolos_name == "yolos_s_dWr":
								lowerCamelCase_						=			3_3_0
								lowerCamelCase_						=			1_4
								lowerCamelCase_						=			6
								lowerCamelCase_						=			1_3_2_0
				elif "yolos_s" in yolos_name:
								lowerCamelCase_						=			3_8_4
								lowerCamelCase_						=			1_5_3_6
								lowerCamelCase_						=			1_2
								lowerCamelCase_						=			6
				elif "yolos_b" in yolos_name:
								lowerCamelCase_						=			[8_0_0, 1_3_4_4]

				lowerCamelCase_						=			9_1
				lowerCamelCase_						=			"huggingface/label-files"
				lowerCamelCase_						=			"coco-detection-id2label.json"
				lowerCamelCase_						=			json.load(open(hf_hub_download(lowerCamelCase__	, lowerCamelCase__	, repo_type="dataset"    )	, "r"    )    )
				lowerCamelCase_						=			{int(lowerCamelCase__    ): v for k, v in idalabel.items()}
				lowerCamelCase_						=			idalabel
				lowerCamelCase_						=			{v: k for k, v in idalabel.items()}

				return config





def 			lowerCamelCase_ (				lowerCamelCase__	, lowerCamelCase__	, lowerCamelCase__ = False    ):
				for i in range(config.num_hidden_layers    ):
								# read in weights + bias of input projection layer (in timm, this is a single matrix + bias)
								lowerCamelCase_						=			state_dict.pop(F'blocks.{i}.attn.qkv.weight'    )
								lowerCamelCase_						=			state_dict.pop(F'blocks.{i}.attn.qkv.bias'    )
								# next, add query, keys and values (in that order) to the state dict
								lowerCamelCase_						=			in_proj_weight[: config.hidden_size, :]
								lowerCamelCase_						=			in_proj_bias[: config.hidden_size]
								lowerCamelCase_						=			in_proj_weight[
								    config.hidden_size : config.hidden_size * 2, :
								]
								lowerCamelCase_						=			in_proj_bias[
								    config.hidden_size : config.hidden_size * 2
								]
								lowerCamelCase_						=			in_proj_weight[-config.hidden_size :, :]
								lowerCamelCase_						=			in_proj_bias[-config.hidden_size :]





def 			lowerCamelCase_ (				lowerCamelCase__    ):
				if "backbone" in name:
								lowerCamelCase_						=			name.replace("backbone"	, "vit"    )
				if "cls_token" in name:
								lowerCamelCase_						=			name.replace("cls_token"	, "embeddings.cls_token"    )
				if "det_token" in name:
								lowerCamelCase_						=			name.replace("det_token"	, "embeddings.detection_tokens"    )
				if "mid_pos_embed" in name:
								lowerCamelCase_						=			name.replace("mid_pos_embed"	, "encoder.mid_position_embeddings"    )
				if "pos_embed" in name:
								lowerCamelCase_						=			name.replace("pos_embed"	, "embeddings.position_embeddings"    )
				if "patch_embed.proj" in name:
								lowerCamelCase_						=			name.replace("patch_embed.proj"	, "embeddings.patch_embeddings.projection"    )
				if "blocks" in name:
								lowerCamelCase_						=			name.replace("blocks"	, "encoder.layer"    )
				if "attn.proj" in name:
								lowerCamelCase_						=			name.replace("attn.proj"	, "attention.output.dense"    )
				if "attn" in name:
								lowerCamelCase_						=			name.replace("attn"	, "attention.self"    )
				if "norm1" in name:
								lowerCamelCase_						=			name.replace("norm1"	, "layernorm_before"    )
				if "norm2" in name:
								lowerCamelCase_						=			name.replace("norm2"	, "layernorm_after"    )
				if "mlp.fc1" in name:
								lowerCamelCase_						=			name.replace("mlp.fc1"	, "intermediate.dense"    )
				if "mlp.fc2" in name:
								lowerCamelCase_						=			name.replace("mlp.fc2"	, "output.dense"    )
				if "class_embed" in name:
								lowerCamelCase_						=			name.replace("class_embed"	, "class_labels_classifier"    )
				if "bbox_embed" in name:
								lowerCamelCase_						=			name.replace("bbox_embed"	, "bbox_predictor"    )
				if "vit.norm" in name:
								lowerCamelCase_						=			name.replace("vit.norm"	, "vit.layernorm"    )

				return name





def 			lowerCamelCase_ (				lowerCamelCase__	, lowerCamelCase__    ):
				for key in orig_state_dict.copy().keys():
								lowerCamelCase_						=			orig_state_dict.pop(lowerCamelCase__    )

								if "qkv" in key:
												lowerCamelCase_						=			key.split("."    )
												lowerCamelCase_						=			int(key_split[2]    )
												lowerCamelCase_						=			model.vit.encoder.layer[layer_num].attention.attention.all_head_size
												if "weight" in key:
																lowerCamelCase_						=			val[:dim, :]
																lowerCamelCase_						=			val[
																    dim : dim * 2, :
																]
																lowerCamelCase_						=			val[-dim:, :]
												else:
																lowerCamelCase_						=			val[:dim]
																lowerCamelCase_						=			val[dim : dim * 2]
																lowerCamelCase_						=			val[-dim:]
								else:
												lowerCamelCase_						=			val

				return orig_state_dict





def 			lowerCamelCase_ (				):
				lowerCamelCase_						=			"http://images.cocodataset.org/val2017/000000039769.jpg"
				lowerCamelCase_						=			Image.open(requests.get(lowerCamelCase__	, stream=lowerCamelCase__    ).raw    )
				return im





@torch.no_grad()
def 			lowerCamelCase_ (				lowerCamelCase__	, lowerCamelCase__	, lowerCamelCase__	, lowerCamelCase__ = False    ):
				lowerCamelCase_						=			get_yolos_config(lowerCamelCase__    )

				# load original state_dict
				lowerCamelCase_						=			torch.load(lowerCamelCase__	, map_location="cpu"    )["model"]

				# load 🤗 model
				lowerCamelCase_						=			YolosForObjectDetection(lowerCamelCase__    )
				model.eval()
				lowerCamelCase_						=			convert_state_dict(lowerCamelCase__	, lowerCamelCase__    )
				model.load_state_dict(lowerCamelCase__    )

				# Check outputs on an image, prepared by YolosImageProcessor
				lowerCamelCase_						=			8_0_0 if yolos_name != "yolos_ti" else 5_1_2
				lowerCamelCase_						=			YolosImageProcessor(format="coco_detection"	, size=lowerCamelCase__    )
				lowerCamelCase_						=			image_processor(images=prepare_img()	, return_tensors="pt"    )
				lowerCamelCase_						=			model(**lowerCamelCase__    )
				lowerCamelCase_	,    lowerCamelCase_						=			outputs.logits, outputs.pred_boxes

				lowerCamelCase_	,    lowerCamelCase_						=			None, None
				if yolos_name == "yolos_ti":
								lowerCamelCase_						=			torch.tensor(
								    [[-39.50_22, -11.98_20, -17.68_88], [-29.95_74, -9.97_69, -17.76_91], [-42.32_81, -20.72_00, -30.62_94]]    )
								lowerCamelCase_						=			torch.tensor(
								    [[0.40_21, 0.08_36, 0.79_79], [0.01_84, 0.26_09, 0.03_64], [0.17_81, 0.20_04, 0.20_95]]    )
				elif yolos_name == "yolos_s_200_pre":
								lowerCamelCase_						=			torch.tensor(
								    [[-24.02_48, -10.30_24, -14.82_90], [-42.03_92, -16.82_00, -27.43_34], [-27.27_43, -11.81_54, -18.71_48]]    )
								lowerCamelCase_						=			torch.tensor(
								    [[0.25_59, 0.54_55, 0.47_06], [0.29_89, 0.72_79, 0.18_75], [0.77_32, 0.40_17, 0.44_62]]    )
				elif yolos_name == "yolos_s_300_pre":
								lowerCamelCase_						=			torch.tensor(
								    [[-36.22_20, -14.43_85, -23.54_57], [-35.69_70, -14.75_83, -21.39_35], [-31.59_39, -13.60_42, -16.80_49]]    )
								lowerCamelCase_						=			torch.tensor(
								    [[0.76_14, 0.23_16, 0.47_28], [0.71_68, 0.44_95, 0.38_55], [0.49_96, 0.14_66, 0.99_96]]    )
				elif yolos_name == "yolos_s_dWr":
								lowerCamelCase_						=			torch.tensor(
								    [[-42.86_68, -24.10_49, -41.16_90], [-34.74_56, -14.12_74, -24.91_94], [-33.78_98, -12.19_46, -25.64_95]]    )
								lowerCamelCase_						=			torch.tensor(
								    [[0.55_87, 0.27_73, 0.06_05], [0.50_04, 0.30_14, 0.99_94], [0.49_99, 0.15_48, 0.99_94]]    )
				elif yolos_name == "yolos_base":
								lowerCamelCase_						=			torch.tensor(
								    [[-40.60_64, -24.30_84, -32.64_47], [-55.19_90, -30.77_19, -35.58_77], [-51.43_11, -33.35_07, -35.64_62]]    )
								lowerCamelCase_						=			torch.tensor(
								    [[0.55_55, 0.27_94, 0.06_55], [0.90_49, 0.26_64, 0.18_94], [0.91_83, 0.19_84, 0.16_35]]    )
				else:
								raise ValueError(F'Unknown yolos_name: {yolos_name}'    )

				assert torch.allclose(logits[0, :3, :3]	, lowerCamelCase__	, atol=1e-4    )
				assert torch.allclose(pred_boxes[0, :3, :3]	, lowerCamelCase__	, atol=1e-4    )

				Path(lowerCamelCase__    ).mkdir(exist_ok=lowerCamelCase__    )
				print(F'Saving model {yolos_name} to {pytorch_dump_folder_path}'    )
				model.save_pretrained(lowerCamelCase__    )
				print(F'Saving image processor to {pytorch_dump_folder_path}'    )
				image_processor.save_pretrained(lowerCamelCase__    )

				if push_to_hub:
								lowerCamelCase_						=			{
								    "yolos_ti": "yolos-tiny",
								    "yolos_s_200_pre": "yolos-small",
								    "yolos_s_300_pre": "yolos-small-300",
								    "yolos_s_dWr": "yolos-small-dwr",
								    "yolos_base": "yolos-base",
								}

								print("Pushing to the hub..."    )
								lowerCamelCase_						=			model_mapping[yolos_name]
								image_processor.push_to_hub(lowerCamelCase__	, organization="hustvl"    )
								model.push_to_hub(lowerCamelCase__	, organization="hustvl"    )


if __name__ == "__main__":
			__A				=argparse.ArgumentParser()
			# Required parameters
			parser.add_argument(
			    '''--yolos_name''',
			    default='''yolos_s_200_pre''',
			    type=str,
			    help=(
			        '''Name of the YOLOS model you\'d like to convert. Should be one of \'yolos_ti\', \'yolos_s_200_pre\','''
			        ''' \'yolos_s_300_pre\', \'yolos_s_dWr\', \'yolos_base\'.'''
			    ),
			)
			parser.add_argument(
			    '''--checkpoint_path''', default=None, type=str, help='''Path to the original state dict (.pth file).'''
			)
			parser.add_argument(
			    '''--pytorch_dump_folder_path''', default=None, type=str, help='''Path to the output PyTorch model directory.'''
			)
			parser.add_argument(
			    '''--push_to_hub''', action='''store_true''', help='''Whether or not to push the converted model to the 🤗 hub.'''
			)

			__A				=parser.parse_args()
			convert_yolos_checkpoint(args.yolos_name, args.checkpoint_path, args.pytorch_dump_folder_path, args.push_to_hub)


