

# Copyright 2023 The HuggingFace Inc. team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import re

from ..utils import cached_file


# docstyle-ignore
lowerCAmelCase__	   = """
Human: <<task>>

Assistant: """


lowerCAmelCase__	   = """huggingface-tools/default-prompts"""
lowerCAmelCase__	   = {"""chat""": """chat_prompt_template.txt""", """run""": """run_prompt_template.txt"""}



def 					lowerCAmelCase__							(	SCREAMING_SNAKE_CASE_:							int	,       SCREAMING_SNAKE_CASE_:							List[str]	,       SCREAMING_SNAKE_CASE_:							List[str]="run"      )			->      Optional[Any]:




				'''simple docstring'''





				if prompt_or_repo_id is None:
								A__        =			DEFAULT_PROMPTS_REPO

				# prompt is considered a repo ID when it does not contain any kind of space
				if re.search("\\s"	,       SCREAMING_SNAKE_CASE_      ) is not None:
								return prompt_or_repo_id

				A__        =			cached_file(
				    SCREAMING_SNAKE_CASE_	,       PROMPT_FILES[mode]	,       repo_type="dataset"	,       user_agent={"agent": agent_name}      )
				with open(SCREAMING_SNAKE_CASE_	,       "r"	,       encoding="utf-8"      ) as f:
								return f.read()




from typing import Union

import fire
import torch
from tqdm import tqdm



def 					lowerCAmelCase__							(	SCREAMING_SNAKE_CASE_:							str	,       SCREAMING_SNAKE_CASE_:							str = "cpu"	,       SCREAMING_SNAKE_CASE_:							Union[str, None] = None      )			->      None:




				'''simple docstring'''





				A__        =			torch.load(SCREAMING_SNAKE_CASE_	,       map_location=SCREAMING_SNAKE_CASE_      )
				for k, v in tqdm(state_dict.items()      ):
								if not isinstance(SCREAMING_SNAKE_CASE_	,       torch.Tensor      ):
												raise TypeError("FP16 conversion only works on paths that are saved state dicts, like pytorch_model.bin"      )
								A__        =			v.half()
				if save_path is None:  # overwrite src_path
								A__        =			src_path
				torch.save(SCREAMING_SNAKE_CASE_	,       SCREAMING_SNAKE_CASE_      )


if __name__ == "__main__":
	fire.Fire(convert)

