
from __future__ import annotations

from typing import Generic, TypeVar

_A							=       TypeVar('''T''')

class 		lowercase_							(							__SCREAMING_SNAKE_CASE					):
 pass



class 		lowercase_							(							__SCREAMING_SNAKE_CASE					):
 pass



class 		lowercase_							(							Generic[T]					):

 def __init__(   self  ,						__UpperCamelCase = 1_0  ):




        """simple docstring"""


        UpperCamelCase_											=							[]
        UpperCamelCase_											=							limit

 def __bool__(   self  ):




        """simple docstring"""


        return bool(self.stack  )

 def __str__(   self  ):




        """simple docstring"""


        return str(self.stack  )

 def lowerCamelCase_					(   self  ,						__UpperCamelCase  ):




        """simple docstring"""


        if len(self.stack  ) >= self.limit:
               raise StackOverflowError
        self.stack.append(__UpperCamelCase  )

 def lowerCamelCase_					(   self  ):




        """simple docstring"""


        if not self.stack:
               raise StackUnderflowError
        return self.stack.pop()

 def lowerCamelCase_					(   self  ):




        """simple docstring"""


        if not self.stack:
               raise StackUnderflowError
        return self.stack[-1]

 def lowerCamelCase_					(   self  ):




        """simple docstring"""


        return not bool(self.stack  )

 def lowerCamelCase_					(   self  ):




        """simple docstring"""


        return self.size() == self.limit

 def lowerCamelCase_					(   self  ):




        """simple docstring"""


        return len(self.stack  )

 def __contains__(   self  ,						__UpperCamelCase  ):




        """simple docstring"""


        return item in self.stack




def 					lowerCamelCase__					(    )		->						None:
       UpperCamelCase_											=							Stack(10  )
       assert bool(a__  ) is False
       assert stack.is_empty() is True
       assert stack.is_full() is False
       assert str(a__  ) == "[]"

       try:
              UpperCamelCase_											=							stack.pop()
              raise AssertionError  # This should not happen
       except StackUnderflowError:
              assert True  # This should happen

       try:
              UpperCamelCase_											=							stack.peek()
              raise AssertionError  # This should not happen
       except StackUnderflowError:
              assert True  # This should happen

       for i in range(10  ):
              assert stack.size() == i
              stack.push(a__  )

       assert bool(a__  )
       assert not stack.is_empty()
       assert stack.is_full()
       assert str(a__  ) == str(list(range(10  )  )  )
       assert stack.pop() == 9
       assert stack.peek() == 8

       stack.push(100  )
       assert str(a__  ) == str([0, 1, 2, 3, 4, 5, 6, 7, 8, 100]  )

       try:
              stack.push(200  )
              raise AssertionError  # This should not happen
       except StackOverflowError:
              assert True  # This should happen

       assert not stack.is_empty()
       assert stack.size() == 10

       assert 5 in stack
       assert 55 not in stack


if __name__ == "__main__":
      test_stack()





import argparse
import os


_A							=       {
    '''pytorch''': {
        '''1.13''': {
            '''torch''': '''1.13.1''',
            '''torchvision''': '''0.14.1''',
            '''torchaudio''': '''0.13.1''',
            '''python''': 3.9,
            '''cuda''': '''cu116''',
            '''install''': (
                '''python3 -m pip install --no-cache-dir -U torch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1'''
                ''' --extra-index-url https://download.pytorch.org/whl/cu116'''
            ),
            '''base_image''': '''nvidia/cuda:11.6.2-cudnn8-devel-ubuntu20.04''',
        },
        '''1.12''': {
            '''torch''': '''1.12.1''',
            '''torchvision''': '''0.13.1''',
            '''torchaudio''': '''0.12.1''',
            '''python''': 3.9,
            '''cuda''': '''cu113''',
            '''install''': (
                '''python3 -m pip install --no-cache-dir -U torch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1'''
                ''' --extra-index-url https://download.pytorch.org/whl/cu113'''
            ),
            '''base_image''': '''nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04''',
        },
        '''1.11''': {
            '''torch''': '''1.11.0''',
            '''torchvision''': '''0.12.0''',
            '''torchaudio''': '''0.11.0''',
            '''python''': 3.9,
            '''cuda''': '''cu113''',
            '''install''': (
                '''python3 -m pip install --no-cache-dir -U torch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0'''
                ''' --extra-index-url https://download.pytorch.org/whl/cu113'''
            ),
            '''base_image''': '''nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04''',
        },
        '''1.10''': {
            '''torch''': '''1.10.2''',
            '''torchvision''': '''0.11.3''',
            '''torchaudio''': '''0.10.2''',
            '''python''': 3.9,
            '''cuda''': '''cu113''',
            '''install''': (
                '''python3 -m pip install --no-cache-dir -U torch==1.10.2 torchvision==0.11.3 torchaudio==0.10.2'''
                ''' --extra-index-url https://download.pytorch.org/whl/cu113'''
            ),
            '''base_image''': '''nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04''',
        },
        # torchaudio < 0.10 has no CUDA-enabled binary distributions
        '''1.9''': {
            '''torch''': '''1.9.1''',
            '''torchvision''': '''0.10.1''',
            '''torchaudio''': '''0.9.1''',
            '''python''': 3.9,
            '''cuda''': '''cu111''',
            '''install''': (
                '''python3 -m pip install --no-cache-dir -U torch==1.9.1 torchvision==0.10.1 torchaudio==0.9.1'''
                ''' --extra-index-url https://download.pytorch.org/whl/cu111'''
            ),
            '''base_image''': '''nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04''',
        },
    },
    '''tensorflow''': {
        '''2.11''': {
            '''tensorflow''': '''2.11.1''',
            '''install''': '''python3 -m pip install --no-cache-dir -U tensorflow==2.11.1''',
            '''base_image''': '''nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04''',
        },
        '''2.10''': {
            '''tensorflow''': '''2.10.1''',
            '''install''': '''python3 -m pip install --no-cache-dir -U tensorflow==2.10.1''',
            '''base_image''': '''nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04''',
        },
        '''2.9''': {
            '''tensorflow''': '''2.9.3''',
            '''install''': '''python3 -m pip install --no-cache-dir -U tensorflow==2.9.3''',
            '''base_image''': '''nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04''',
        },
        '''2.8''': {
            '''tensorflow''': '''2.8.2''',
            '''install''': '''python3 -m pip install --no-cache-dir -U tensorflow==2.8.2''',
            '''base_image''': '''nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04''',
        },
        '''2.7''': {
            '''tensorflow''': '''2.7.3''',
            '''install''': '''python3 -m pip install --no-cache-dir -U tensorflow==2.7.3''',
            '''base_image''': '''nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04''',
        },
        '''2.6''': {
            '''tensorflow''': '''2.6.5''',
            '''install''': '''python3 -m pip install --no-cache-dir -U tensorflow==2.6.5''',
            '''base_image''': '''nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04''',
        },
        '''2.5''': {
            '''tensorflow''': '''2.5.3''',
            '''install''': '''python3 -m pip install --no-cache-dir -U tensorflow==2.5.3''',
            '''base_image''': '''nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04''',
        },
    },
}


if __name__ == "__main__":
      _A							=       argparse.ArgumentParser('''Choose the framework and version to install''')
      parser.add_argument(
          '''--framework''', help='''The framework to install. Should be `torch` or `tensorflow`''', type=str, required=True
      )
      parser.add_argument('''--version''', help='''The version of the framework to install.''', type=str, required=True)
      _A							=       parser.parse_args()

      _A							=       past_versions_testing[args.framework][args.version]

      os.system(F'''echo "export INSTALL_CMD=\'{info['install']}\'" >> ~/.profile''')
      print(F'''echo "export INSTALL_CMD=\'{info['install']}\'" >> ~/.profile''')

      _A							=       ''''''
      if args.framework == "pytorch":
            _A							=       info['''cuda''']
      os.system(F'''echo \"export CUDA=\'{cuda}\'\" >> ~/.profile''')
      print(F'''echo \"export CUDA=\'{cuda}\'\" >> ~/.profile''')



