





import os
from datetime import datetime as dt

from github import Github


_UpperCAmelCase        =				[
    'good first issue',
    'feature request',
    'wip',
]




def  lowerCAmelCase_ (							)     ->		Optional[int]:
       UpperCamelCase_          =  Github(os.environ["GITHUB_TOKEN"]  )
       UpperCamelCase_          =  g.get_repo("huggingface/accelerate"  )
       UpperCamelCase_          =  repo.get_issues(state="open"  )

       for issue in open_issues:
              UpperCamelCase_          =  sorted([comment for comment in issue.get_comments()]					,		key=lambda UpperCamelCase_  : i.created_at					,		reverse=UpperCamelCase_  )
              UpperCamelCase_          =  comments[0] if len(UpperCamelCase_  ) > 0 else None
              UpperCamelCase_          =  dt.utcnow()
              UpperCamelCase_          =  (current_time - issue.updated_at).days
              UpperCamelCase_          =  (current_time - issue.created_at).days
              if (
                  last_comment is not None
                  and last_comment.user.login == "github-actions[bot]"
                  and days_since_updated > 7
                  and days_since_creation >= 30
                  and not any(label.name.lower() in LABELS_TO_EXEMPT for label in issue.get_labels()  )
              ):
                     # Close issue since it has been 7 days of inactivity since bot mention.
                     issue.edit(state="closed"  )
              elif (
                  days_since_updated > 23
                  and days_since_creation >= 30
                  and not any(label.name.lower() in LABELS_TO_EXEMPT for label in issue.get_labels()  )
              ):
                     # Add stale comment
                     issue.create_comment(
                         "This issue has been automatically marked as stale because it has not had "
                         "recent activity. If you think this still needs to be addressed "
                         "please comment on this thread.\n\nPlease note that issues that do not follow the "
                         "[contributing guidelines](https://github.com/huggingface/accelerate/blob/main/CONTRIBUTING.md) "
                         "are likely to be ignored."  )


if __name__ == "__main__":
     main()








import unittest

import torch
from torch import nn

from accelerate.test_utils import require_cuda
from accelerate.utils.memory import find_executable_batch_size, release_memory




def  lowerCAmelCase_ (							)     ->		Dict:
       raise RuntimeError("CUDA out of memory."  )



class 							_UpperCamelCase					(	nn.Module     ):

       def __init__(		self: int		)       -> List[Any]:




              """simple docstring"""


              super().__init__()
              UpperCamelCase_          =  nn.Linear(3					,   4		)
              UpperCamelCase_          =  nn.BatchNormad(4		)
              UpperCamelCase_          =  nn.Linear(4					,   5		)



       def lowercase (		self: Any					,   _SCREAMING_SNAKE_CASE: Optional[int]		)       -> Optional[Any]:




              """simple docstring"""


              return self.lineara(self.batchnorm(self.lineara(_SCREAMING_SNAKE_CASE		)		)		)



class 							_UpperCamelCase					(	unittest.TestCase     ):

       def lowercase (		self: List[Any]		)       -> Any:




              """simple docstring"""


              UpperCamelCase_          =  []

              @find_executable_batch_size(starting_batch_size=128		)
              def mock_training_loop_function(_SCREAMING_SNAKE_CASE: str		):
                     nonlocal batch_sizes
                     batch_sizes.append(_SCREAMING_SNAKE_CASE		)
                     if batch_size != 8:
                            raise_fake_out_of_memory()

              mock_training_loop_function()
              self.assertListEqual(_SCREAMING_SNAKE_CASE					,   [128, 64, 32, 16, 8]		)

       def lowercase (		self: Optional[int]		)       -> List[Any]:




              """simple docstring"""


              UpperCamelCase_          =  []

              @find_executable_batch_size(starting_batch_size=128		)
              def mock_training_loop_function(_SCREAMING_SNAKE_CASE: List[str]					,   _SCREAMING_SNAKE_CASE: Optional[Any]		):
                     nonlocal batch_sizes
                     batch_sizes.append(_SCREAMING_SNAKE_CASE		)
                     if batch_size != 8:
                            raise_fake_out_of_memory()
                     return batch_size, arga

              UpperCamelCase_       , UpperCamelCase_          =  mock_training_loop_function("hello"		)
              self.assertListEqual(_SCREAMING_SNAKE_CASE					,   [128, 64, 32, 16, 8]		)
              self.assertListEqual([bs, arga]					,   [8, "hello"]		)

       def lowercase (		self: Any		)       -> Optional[int]:




              """simple docstring"""


              @find_executable_batch_size(starting_batch_size=0		)
              def mock_training_loop_function(_SCREAMING_SNAKE_CASE: Union[str, Any]		):
                     pass

              with self.assertRaises(_SCREAMING_SNAKE_CASE		) as cm:
                     mock_training_loop_function()
                     self.assertIn("No executable batch size found, reached zero."					,   cm.exception.args[0]		)

       def lowercase (		self: Dict		)       -> Optional[int]:




              """simple docstring"""


              @find_executable_batch_size(starting_batch_size=16		)
              def mock_training_loop_function(_SCREAMING_SNAKE_CASE: Optional[int]		):
                     if batch_size > 0:
                            raise_fake_out_of_memory()
                     pass

              with self.assertRaises(_SCREAMING_SNAKE_CASE		) as cm:
                     mock_training_loop_function()
                     self.assertIn("No executable batch size found, reached zero."					,   cm.exception.args[0]		)

       def lowercase (		self: Optional[int]		)       -> Dict:




              """simple docstring"""


              @find_executable_batch_size(starting_batch_size=128		)
              def mock_training_loop_function(_SCREAMING_SNAKE_CASE: Any					,   _SCREAMING_SNAKE_CASE: int					,   _SCREAMING_SNAKE_CASE: Tuple		):
                     if batch_size != 8:
                            raise raise_fake_out_of_memory()

              with self.assertRaises(_SCREAMING_SNAKE_CASE		) as cm:
                     mock_training_loop_function(128					,   "hello"					,   "world"		)
                     self.assertIn("Batch size was passed into `f`"					,   cm.exception.args[0]		)
                     self.assertIn("`f(arg1='hello', arg2='world')"					,   cm.exception.args[0]		)

       def lowercase (		self: List[str]		)       -> Optional[Any]:




              """simple docstring"""


              @find_executable_batch_size(starting_batch_size=16		)
              def mock_training_loop_function(_SCREAMING_SNAKE_CASE: List[Any]		):
                     raise ValueError("Oops, we had an error!"		)

              with self.assertRaises(_SCREAMING_SNAKE_CASE		) as cm:
                     mock_training_loop_function()
                     self.assertIn("Oops, we had an error!"					,   cm.exception.args[0]		)



       @require_cuda
       def lowercase (		self: Optional[int]		)       -> Union[str, Any]:




              """simple docstring"""


              UpperCamelCase_          =  torch.cuda.memory_allocated()
              UpperCamelCase_          =  ModelForTest()
              model.cuda()
              self.assertGreater(torch.cuda.memory_allocated()					,   _SCREAMING_SNAKE_CASE		)
              UpperCamelCase_          =  release_memory(_SCREAMING_SNAKE_CASE		)
              self.assertEqual(torch.cuda.memory_allocated()					,   _SCREAMING_SNAKE_CASE		)

