





# Copyright 2021 The HuggingFace 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.

from argparse import ArgumentParser

from accelerate.commands.config import get_config_parser
from accelerate.commands.env import env_command_parser
from accelerate.commands.launch import launch_command_parser
from accelerate.commands.test import test_command_parser
from accelerate.commands.tpu import tpu_command_parser



def 				lowerCAmelCase_ (							):
    UpperCamelCase__:	Optional[Any]					=     ArgumentParser("Accelerate CLI tool"    ,usage="accelerate <command> [<args>]"    ,allow_abbrev=A_)
    UpperCamelCase__:	int					=     parser.add_subparsers(help="accelerate command helpers")

    # Register commands
    get_config_parser(subparsers=A_)
    env_command_parser(subparsers=A_)
    launch_command_parser(subparsers=A_)
    tpu_command_parser(subparsers=A_)
    test_command_parser(subparsers=A_)

    # Let's go
    UpperCamelCase__:	str					=     parser.parse_args()

    if not hasattr(A_    ,"func"):
        parser.print_help()
        exit(1)

    # Run
    args.func(A_)


if __name__ == "__main__":
   main()








from .dependency_versions_table import deps
from .utils.versions import require_version, require_version_core


# define which module versions we always want to check at run time
# (usually the ones defined in `install_requires` in setup.py)
#
# order specific notes:
# - tqdm must be checked before tokenizers

A__:    Union[str, Any]  	=	[
    '''python''',
    '''tqdm''',
    '''regex''',
    '''requests''',
    '''packaging''',
    '''filelock''',
    '''numpy''',
    '''tokenizers''',
    '''huggingface-hub''',
    '''safetensors''',
    '''accelerate''',
    '''pyyaml''',
]

for pkg in pkgs_to_check_at_runtime:
   if pkg in deps:
      if pkg == "tokenizers":
         # must be loaded here, or else tqdm check may fail
         from .utils import is_tokenizers_available

         if not is_tokenizers_available():
            continue  # not required, check version only if installed
      elif pkg == "accelerate":
         # must be loaded here, or else tqdm check may fail
         from .utils import is_accelerate_available

         # Maybe switch to is_torch_available in the future here so that Accelerate is hard dep of
         # Transformers with PyTorch
         if not is_accelerate_available():
            continue  # not required, check version only if installed

      require_version_core(deps[pkg])
   else:
      raise ValueError(f"can't find {pkg} in {deps.keys()}, check dependency_versions_table.py")



def 				lowerCAmelCase_ (							A_    ,A_=None):
    require_version(deps[pkg]    ,A_)

