

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_				( _a  ):


    '''simple docstring'''






    @staticmethod
    def        lowerCAmelCase_  (lowercase__					)       -> Optional[Any]:
        __UpperCAmelCase			   =     parser.add_parser('''login'''       , help='''Log in using the same credentials as on huggingface.co'''					)
        login_parser.set_defaults(func=lambda lowercase__					: LoginCommand(lowercase__					)					)
        __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(lowercase__					)					)
        __UpperCAmelCase			   =     parser.add_parser('''logout'''       , help='''Log out'''					)
        logout_parser.set_defaults(func=lambda lowercase__					: LogoutCommand(lowercase__					)					)

        # 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=lowercase__       , 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=lowercase__       , 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(lowercase__					)					)






class    A_				:


    '''simple docstring'''






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


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


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






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






def  __a    (				SCREAMING_SNAKE_CASE    ,				SCREAMING_SNAKE_CASE ) ->       str:






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


    '''simple docstring'''






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






class    A_				( _a  ):


    '''simple docstring'''






    def        lowerCAmelCase_  (self					)       -> str:
        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_				( _a  ):


    '''simple docstring'''






    def        lowerCAmelCase_  (self					)       -> Union[str, Any]:
        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(lowercase__					)
            print(lowercase__					)
            if orgs:
                print(ANSI.bold('''orgs: '''					)       , ''','''.join(lowercase__					)					)
        except HTTPError as e:
            print(lowercase__					)
            print(ANSI.red(e.response.text					)					)
            exit(1					)






class    A_				( _a  ):


    '''simple docstring'''






    def        lowerCAmelCase_  (self					)       -> Any:
        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_				( _a  ):


    '''simple docstring'''






    def        lowerCAmelCase_  (self					)       -> Optional[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(lowercase__					)
        __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(lowercase__					)}'''					)

        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(lowercase__       , name=self.args.name       , organization=self.args.organization					)
        except HTTPError as e:
            print(lowercase__					)
            print(ANSI.red(e.response.text					)					)
            exit(1					)
        print('''\nYour repo now lives at:'''					)
        print(F'''  {ANSI.bold(lowercase__					)}'''					)
        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




