

import subprocess
from argparse import ArgumentParser
from typing import List, Union

from huggingface_hub.hf_api import HfFolder, create_repo, whoami
from requests.exceptions import HTTPError

from . import BaseTransformersCLICommand
class    A_				( __lowerCamelCase  ):


				'''simple docstring'''






				@staticmethod
				def        lowerCAmelCase_  (lowercase__					)       -> str:
								__UpperCAmelCase			   =     parser.add_parser('''login'''       , help='''Log in using the same credentials as on huggingface.co'''					)
								login_parser.set_defaults(func=lambda lowercase__					: LoginCommand(_UpperCamelCase					)					)
								__UpperCAmelCase			   =     parser.add_parser('''whoami'''       , help='''Find out which huggingface.co account you are logged in as.'''					)
								whoami_parser.set_defaults(func=lambda lowercase__					: WhoamiCommand(_UpperCamelCase					)					)
								__UpperCAmelCase			   =     parser.add_parser('''logout'''       , help='''Log out'''					)
								logout_parser.set_defaults(func=lambda lowercase__					: LogoutCommand(_UpperCamelCase					)					)

								# new system: git-based repo system
								__UpperCAmelCase			   =     parser.add_parser(
								    '''repo'''       , help='''Deprecated: use `huggingface-cli` instead. Commands to interact with your huggingface.co repos.'''       , )
								__UpperCAmelCase			   =     repo_parser.add_subparsers(
								    help='''Deprecated: use `huggingface-cli` instead. huggingface.co repos related commands'''					)
								__UpperCAmelCase			   =     repo_subparsers.add_parser(
								    '''create'''       , help='''Deprecated: use `huggingface-cli` instead. Create a new repo on huggingface.co'''					)
								repo_create_parser.add_argument(
								    '''name'''       , type=_UpperCamelCase       , help='''Name for your model\'s repo. Will be namespaced under your username to build the model id.'''       , )
								repo_create_parser.add_argument('''--organization'''       , type=_UpperCamelCase       , help='''Optional: organization namespace.'''					)
								repo_create_parser.add_argument('''-y'''       , '''--yes'''       , action='''store_true'''       , help='''Optional: answer Yes to the prompt'''					)
								repo_create_parser.set_defaults(func=lambda lowercase__					: RepoCreateCommand(_UpperCamelCase					)					)






class    A_				:


				'''simple docstring'''






				a__       							=    "\u001b[1m"
				a__       							=    "\u001b[31m"
				a__       							=    "\u001b[90m"
				a__       							=    "\u001b[0m"


				@classmethod
				def        lowerCAmelCase_  (cls       , lowercase__					)       -> Optional[int]:
								return F'''{cls._bold}{s}{cls._reset}'''


				@classmethod
				def        lowerCAmelCase_  (cls       , lowercase__					)       -> Optional[Any]:
								return F'''{cls._bold}{cls._red}{s}{cls._reset}'''






				@classmethod
				def        lowerCAmelCase_  (cls       , lowercase__					)       -> List[str]:
								return F'''{cls._gray}{s}{cls._reset}'''






def  __a    (				SCREAMING_SNAKE_CASE    ,				SCREAMING_SNAKE_CASE ) ->       int:






				'''simple docstring'''
				__UpperCAmelCase			   =     [max(len(str(__UpperCamelCase ) ) for x in col ) for col in zip(*__UpperCamelCase    ,				__UpperCamelCase )]
				__UpperCAmelCase			   =     ('''{{:{}}} ''' * len(__UpperCamelCase )).format(*__UpperCamelCase )
				__UpperCAmelCase			   =     []
				lines.append(row_format.format(*__UpperCamelCase ) )
				lines.append(row_format.format(*['''-''' * w for w in col_widths] ) )
				for row in rows:
								lines.append(row_format.format(*__UpperCamelCase ) )
				return "\n".join(__UpperCamelCase )
class    A_				:


				'''simple docstring'''






				def __init__(self       , lowercase__					)       -> str:
								__UpperCAmelCase			   =     args






class    A_				( __lowerCamelCase  ):


				'''simple docstring'''






				def        lowerCAmelCase_  (self					)       -> Tuple:
								print(
								    ANSI.red(
								        '''ERROR! `huggingface-cli login` uses an outdated login mechanism '''
								        '''that is not compatible with the Hugging Face Hub backend anymore. '''
								        '''Please use `huggingface-cli login instead.'''					)					)






class    A_				( __lowerCamelCase  ):


				'''simple docstring'''






				def        lowerCAmelCase_  (self					)       -> Tuple:
								print(
								    ANSI.red(
								        '''WARNING! `transformers-cli whoami` is deprecated and will be removed in v5. Please use '''
								        '''`huggingface-cli whoami` instead.'''					)					)
								__UpperCAmelCase			   =     HfFolder.get_token()
								if token is None:
												print('''Not logged in'''					)
												exit()
								try:
												__UpperCAmelCase   ,       __UpperCAmelCase			   =     whoami(_UpperCamelCase					)
												print(_UpperCamelCase					)
												if orgs:
																print(ANSI.bold('''orgs: '''					)       , ''','''.join(_UpperCamelCase					)					)
								except HTTPError as e:
												print(_UpperCamelCase					)
												print(ANSI.red(e.response.text					)					)
												exit(1					)






class    A_				( __lowerCamelCase  ):


				'''simple docstring'''






				def        lowerCAmelCase_  (self					)       -> Dict:
								print(
								    ANSI.red(
								        '''ERROR! `transformers-cli logout` uses an outdated logout mechanism '''
								        '''that is not compatible with the Hugging Face Hub backend anymore. '''
								        '''Please use `huggingface-cli logout instead.'''					)					)






class    A_				( __lowerCamelCase  ):


				'''simple docstring'''






				def        lowerCAmelCase_  (self					)       -> int:
								print(
								    ANSI.red(
								        '''WARNING! Managing repositories through transformers-cli is deprecated. '''
								        '''Please use `huggingface-cli` instead.'''					)					)
								__UpperCAmelCase			   =     HfFolder.get_token()
								if token is None:
												print('''Not logged in'''					)
												exit(1					)
								try:
												__UpperCAmelCase			   =     subprocess.check_output(['''git''', '''--version''']					).decode('''utf-8'''					)
												print(ANSI.gray(stdout.strip()					)					)
								except FileNotFoundError:
												print('''Looks like you do not have git installed, please install.'''					)

								try:
												__UpperCAmelCase			   =     subprocess.check_output(['''git-lfs''', '''--version''']					).decode('''utf-8'''					)
												print(ANSI.gray(stdout.strip()					)					)
								except FileNotFoundError:
												print(
												    ANSI.red(
												        '''Looks like you do not have git-lfs installed, please install.'''
												        ''' You can install from https://git-lfs.github.com/.'''
												        ''' Then run `git lfs install` (you only have to do this once).'''					)					)
								print(''''''					)

								__UpperCAmelCase   ,       __UpperCAmelCase			   =     whoami(_UpperCamelCase					)
								__UpperCAmelCase			   =     self.args.organization if self.args.organization is not None else user
								__UpperCAmelCase			   =     F'''{namespace}/{self.args.name}'''
								print(F'''You are about to create {ANSI.bold(_UpperCamelCase					)}'''					)

								if not self.args.yes:
												__UpperCAmelCase			   =     input('''Proceed? [Y/n] '''					).lower()
												if not (choice == "" or choice == "y" or choice == "yes"):
																print('''Abort'''					)
																exit()
								try:
												__UpperCAmelCase			   =     create_repo(_UpperCamelCase       , name=self.args.name       , organization=self.args.organization					)
								except HTTPError as e:
												print(_UpperCamelCase					)
												print(ANSI.red(e.response.text					)					)
												exit(1					)
								print('''\nYour repo now lives at:'''					)
								print(F'''  {ANSI.bold(_UpperCamelCase					)}'''					)
								print('''\nYou can clone it locally with the command below, and commit/push as usual.'''					)
								print(F'''\n  git clone {url}'''					)
								print(''''''					)







from dataclasses import dataclass
from typing import Callable, Optional

import datasets
@dataclass
class    A_				( datasets.BuilderConfig  ):


    '''simple docstring'''






    a__       							=    None
    a__       							=    None
    a__       							=    None


    def        lowerCAmelCase_  (self					)       -> Dict:
        assert self.generator is not None, "generator must be specified"

        if self.gen_kwargs is None:
            __UpperCAmelCase			   =     {}






class    A_				( datasets.GeneratorBasedBuilder  ):


    '''simple docstring'''






    a__       							=    GeneratorConfig


    def        lowerCAmelCase_  (self					)       -> Dict:
        return datasets.DatasetInfo(features=self.config.features					)


    def        lowerCAmelCase_  (self       , lowercase__					)       -> List[str]:
        return [datasets.SplitGenerator(name=datasets.Split.TRAIN       , gen_kwargs=self.config.gen_kwargs					)]






    def        lowerCAmelCase_  (self       , **lowercase__					)       -> str:
        for idx, ex in enumerate(self.config.generator(**lowercase__					)					):
            yield idx, ex




