





'''simple docstring'''

from collections import Counter
from pathlib import Path
from typing import Optional, Tuple

import yaml







class __a (   yaml.SafeLoader			):





   def      UpperCAmelCase__     (					self				:			Optional[int]				,lowerCamelCase				:			List[str]    ):

      '''simple docstring'''

      __SCREAMING_SNAKE_CASE      							=       [self.constructed_objects[key_node] for key_node, _ in node.value]
      __SCREAMING_SNAKE_CASE      							=       [tuple(_lowercase    ) if isinstance(_lowercase				,_lowercase    ) else key for key in keys]
      __SCREAMING_SNAKE_CASE      							=       Counter(_lowercase    )
      __SCREAMING_SNAKE_CASE      							=       [key for key in counter if counter[key] > 1]
      if duplicate_keys:
         raise TypeError(f"""Got duplicate yaml keys: {duplicate_keys}"""    )





   def      UpperCAmelCase__     (					self				:			List[Any]				,lowerCamelCase				:			int				,lowerCamelCase				:			List[str]=False    ):

      '''simple docstring'''

      __SCREAMING_SNAKE_CASE      							=       super().construct_mapping(_lowercase				,deep=_lowercase    )
      self._check_no_duplicates_on_constructed_node(_lowercase    )
      return mapping





def 						__magic_name__       (							__UpperCAmelCase      )						->					Tuple[Optional[str], str]:

   '''simple docstring'''







   __SCREAMING_SNAKE_CASE      							=       list(readme_content.splitlines()      )
   if full_content and full_content[0] == "---" and "---" in full_content[1:]:
      __SCREAMING_SNAKE_CASE      							=       full_content[1:].index("""---"""      ) + 1
      __SCREAMING_SNAKE_CASE      							=       '\n'.join(full_content[1:sep_idx]      )
      return yamlblock, "\n".join(full_content[sep_idx + 1 :]      )

   return None, "\n".join(__UpperCAmelCase      )







class __a (   UpperCAmelCase_			):
   __UpperCamelCase   : Union[str, Any]	      =	{'train_eval_index'}  # train-eval-index in the YAML metadata





   @classmethod
   def      UpperCAmelCase__     (					cls				:			Optional[Any]				,lowerCamelCase				:			Optional[int]    ):

      '''simple docstring'''

      with open(_lowercase				,encoding="""utf-8"""    ) as readme_file:
         __SCREAMING_SNAKE_CASE      							=       _split_yaml_from_readme(readme_file.read()    )
      if yaml_string is not None:
         return cls.from_yaml_string(_lowercase    )
      else:
         return cls()





   def      UpperCAmelCase__     (					self				:			Dict				,lowerCamelCase				:			List[Any]    ):

      '''simple docstring'''

      if path.exists():
         with open(_lowercase				,encoding="""utf-8"""    ) as readme_file:
            __SCREAMING_SNAKE_CASE      							=       readme_file.read()
      else:
         __SCREAMING_SNAKE_CASE      							=       None
      __SCREAMING_SNAKE_CASE      							=       self._to_readme(_lowercase    )
      with open(_lowercase				,"""w"""				,encoding="""utf-8"""    ) as readme_file:
         readme_file.write(_lowercase    )





   def      UpperCAmelCase__     (					self				:			Union[str, Any]				,lowerCamelCase				:			Tuple = None    ):

      '''simple docstring'''

      if readme_content is not None:
         __SCREAMING_SNAKE_CASE      							=       _split_yaml_from_readme(_lowercase    )
         __SCREAMING_SNAKE_CASE      							=       '---\n' + self.to_yaml_string() + '---\n' + content
      else:
         __SCREAMING_SNAKE_CASE      							=       '---\n' + self.to_yaml_string() + '---\n'
      return full_content





   @classmethod
   def      UpperCAmelCase__     (					cls				:			Optional[int]				,lowerCamelCase				:			str    ):

      '''simple docstring'''

      __SCREAMING_SNAKE_CASE      							=       yaml.load(_lowercase				,Loader=_NoDuplicateSafeLoader    ) or {}

      # Convert the YAML keys to DatasetMetadata fields
      __SCREAMING_SNAKE_CASE      							=       {
          (key.replace("""-"""				,"""_"""    ) if key.replace("""-"""				,"""_"""    ) in cls._FIELDS_WITH_DASHES else key): value
          for key, value in metadata_dict.items()
      }
      return cls(**_lowercase    )





   def      UpperCAmelCase__     (					self				:			List[Any]    ):

      '''simple docstring'''

      return yaml.safe_dump(
          {
              (key.replace("""_"""				,"""-"""    ) if key in self._FIELDS_WITH_DASHES else key): value
              for key, value in self.items()
          }				,sort_keys=_lowercase				,allow_unicode=_lowercase				,encoding="""utf-8"""				,).decode("""utf-8"""    )





a        =						{
    "image-classification": [],
    "translation": [],
    "image-segmentation": [],
    "fill-mask": [],
    "automatic-speech-recognition": [],
    "token-classification": [],
    "sentence-similarity": [],
    "audio-classification": [],
    "question-answering": [],
    "summarization": [],
    "zero-shot-classification": [],
    "table-to-text": [],
    "feature-extraction": [],
    "other": [],
    "multiple-choice": [],
    "text-classification": [],
    "text-to-image": [],
    "text2text-generation": [],
    "zero-shot-image-classification": [],
    "tabular-classification": [],
    "tabular-regression": [],
    "image-to-image": [],
    "tabular-to-text": [],
    "unconditional-image-generation": [],
    "text-retrieval": [],
    "text-to-speech": [],
    "object-detection": [],
    "audio-to-audio": [],
    "text-generation": [],
    "conversational": [],
    "table-question-answering": [],
    "visual-question-answering": [],
    "image-to-text": [],
    "reinforcement-learning": [],
    "voice-activity-detection": [],
    "time-series-forecasting": [],
    "document-question-answering": [],
}


if __name__ == "__main__":
    from argparse import ArgumentParser

    a        =						ArgumentParser(usage="Validate the yaml metadata block of a README.md file.")
    ap.add_argument("readme_filepath")
    a        =						ap.parse_args()

    a        =						Path(args.readme_filepath)
    a        =						DatasetMetadata.from_readme(readme_filepath)
    print(dataset_metadata)
    dataset_metadata.to_readme(readme_filepath)









'''simple docstring'''

def 						__magic_name__       (							__UpperCAmelCase      )						->					bool:

   '''simple docstring'''







   if num < 0:
      return False

   __SCREAMING_SNAKE_CASE      							=       num
   __SCREAMING_SNAKE_CASE      							=       0
   while num > 0:
      __SCREAMING_SNAKE_CASE      							=       rev_num * 10 + (num % 10)
      num //= 10

   return num_copy == rev_num


if __name__ == "__main__":
    import doctest

    doctest.testmod()





