# coding=utf-8
# Copyright 2020 The HuggingFace Inc. team.
#
# 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.

# this script dumps information about the environment

import os
import sys

import transformers


_lowercase:	int       			=		'''3'''

print('''Python version:''', sys.version)
print('''transformers version:''', transformers.__version__)

try:
				import torch

				print('''Torch version:''', torch.__version__)
				print('''Cuda available:''', torch.cuda.is_available())
				print('''Cuda version:''', torch.version.cuda)
				print('''CuDNN version:''', torch.backends.cudnn.version())
				print('''Number of GPUs available:''', torch.cuda.device_count())
				print('''NCCL version:''', torch.cuda.nccl.version())
except ImportError:
				print('''Torch version:''', None)

try:
				import deepspeed

				print('''DeepSpeed version:''', deepspeed.__version__)
except ImportError:
				print('''DeepSpeed version:''', None)

try:
				import tensorflow as tf

				print('''TensorFlow version:''', tf.__version__)
				print('''TF GPUs available:''', bool(tf.config.list_physical_devices('''GPU''')))
				print('''Number of TF GPUs available:''', len(tf.config.list_physical_devices('''GPU''')))
except ImportError:
				print('''TensorFlow version:''', None)







import functools






def _lowerCamelCase  (		snake_case     , snake_case  ):

							# Validation
							if not isinstance(snake_case     , snake_case  ) or not all(isinstance(snake_case     , snake_case  ) for day in days  ):
														raise ValueError('The parameter days should be a list of integers'  )

							if len(snake_case  ) != 3 or not all(isinstance(snake_case     , snake_case  ) for cost in costs  ):
														raise ValueError('The parameter costs should be a list of three integers'  )

							if len(snake_case  ) == 0:
														return 0

							if min(snake_case  ) <= 0:
														raise ValueError('All days elements should be greater than 0'  )

							if max(snake_case  ) >= 366:
														raise ValueError('All days elements should be less than 366'  )

							_lowerCAmelCase							=							set(snake_case  )

							@functools.cache
							def dynamic_programming(snake_case  ) -> int:
														if index > 365:
																					return 0

														if index not in days_set:
																					return dynamic_programming(index + 1  )

														return min(
														    costs[0] + dynamic_programming(index + 1  )     , costs[1] + dynamic_programming(index + 7  )     , costs[2] + dynamic_programming(index + 30  )     , )

							return dynamic_programming(1  )


if __name__ == "__main__":
				import doctest

				doctest.testmod()






