





'''simple docstring'''
# Copyright 2022 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.

import argparse
import os
import platform

import numpy as np
import psutil
import torch

from accelerate import __version__ as version
from accelerate.commands.config import default_config_file, load_config_from_file

from ..utils import is_npu_available, is_xpu_available
def 				lowercase__   (   __lowercase						:  Optional[int]=None     ) ->      Union[str, Any]:



       """simple docstring"""






       if subparsers is not None:
              __UpperCamelCase       =  subparsers.add_parser('env'     )
       else:
              __UpperCamelCase       =  argparse.ArgumentParser('Accelerate env command'     )

       parser.add_argument(
           '--config_file'				,  default=__lowercase				,  help='The config file to use for the default values in the launching script.'     )

       if subparsers is not None:
              parser.set_defaults(func=__lowercase     )
       return parser
def 				lowercase__   (   __lowercase						:  Optional[int]     ) ->      Any:



       """simple docstring"""






       __UpperCamelCase       =  torch.__version__
       __UpperCamelCase       =  torch.cuda.is_available()
       __UpperCamelCase       =  is_xpu_available()
       __UpperCamelCase       =  is_npu_available()

       __UpperCamelCase       =  'Not found'
       # Get the default from the config file.
       if args.config_file is not None or os.path.isfile(__lowercase     ):
              __UpperCamelCase       =  load_config_from_file(args.config_file     ).to_dict()

       __UpperCamelCase       =  {
           '`Accelerate` version': version,
           'Platform': platform.platform(),
           'Python version': platform.python_version(),
           'Numpy version': np.__version__,
           'PyTorch version (GPU?)': F'''{pt_version} ({pt_cuda_available})''',
           'PyTorch XPU available': str(__lowercase     ),
           'PyTorch NPU available': str(__lowercase     ),
           'System RAM': F'''{psutil.virtual_memory().total / 1024 ** 3:.2f} GB''',
       }
       if pt_cuda_available:
              __UpperCamelCase       =  torch.cuda.get_device_name()

       print('\nCopy-and-paste the text below in your GitHub issue\n'     )
       print('\n'.join([F'''- {prop}: {val}''' for prop, val in info.items()]     )     )

       print('- `Accelerate` default config:' if args.config_file is None else '- `Accelerate` config passed:'     )
       __UpperCamelCase       =  (
           '\n'.join([F'''\t- {prop}: {val}''' for prop, val in accelerate_config.items()]     )
           if isinstance(__lowercase				,  __lowercase     )
           else F'''\t{accelerate_config}'''
       )
       print(__lowercase     )

       __UpperCamelCase       =  accelerate_config

       return info
def 				lowercase__   (   ) ->      int:



       """simple docstring"""






       __UpperCamelCase       =  env_command_parser()
       __UpperCamelCase       =  parser.parse_args()
       env_command(__lowercase     )
       return 0


if __name__ == "__main__":
    raise SystemExit(main())







'''simple docstring'''
import pytest

from datasets.splits import SplitDict, SplitInfo
from datasets.utils.py_utils import asdict
@pytest.mark.parametrize(
    'split_dict'				,  [
        SplitDict(),
        SplitDict({'train': SplitInfo(name='train'				,  num_bytes=1337				,  num_examples=42				,  dataset_name='my_dataset'     )}     ),
        SplitDict({'train': SplitInfo(name='train'				,  num_bytes=1337				,  num_examples=42     )}     ),
        SplitDict({'train': SplitInfo()}     ),
    ]				,  )
def 				lowercase__   (   __lowercase						:  SplitDict     ) ->      int:



       """simple docstring"""






       __UpperCamelCase       =  split_dict._to_yaml_list()
       assert len(__lowercase     ) == len(__lowercase     )
       __UpperCamelCase       =  SplitDict._from_yaml_list(__lowercase     )
       for split_name, split_info in split_dict.items():
              # dataset_name field is deprecated, and is therefore not part of the YAML dump
              __UpperCamelCase       =  None
              # the split name of split_dict takes over the name of the split info object
              __UpperCamelCase       =  split_name
       assert split_dict == reloaded


@pytest.mark.parametrize(
    'split_info'				,  [SplitInfo(), SplitInfo(dataset_name=__lowercase     ), SplitInfo(dataset_name='my_dataset'     )]     )
def 				lowercase__   (   __lowercase						:  Dict     ) ->      Any:



       """simple docstring"""






       __UpperCamelCase       =  asdict(SplitDict({'train': split_info}     )     )
       assert "dataset_name" in split_dict_asdict["train"]
       assert split_dict_asdict["train"]["dataset_name"] == split_info.dataset_name
