





'''simple docstring'''

import os
from datetime import datetime as dt

from github import Github


lowercase_					= [
    """good first issue""",
    """good second issue""",
    """good difficult issue""",
    """enhancement""",
    """new pipeline/model""",
    """new scheduler""",
    """wip""",
]





def lowerCamelCase						(     )						->Any:
    _SCREAMING_SNAKE_CASE									=			Github(os.environ["""GITHUB_TOKEN"""]    )
    _SCREAMING_SNAKE_CASE									=			g.get_repo("""huggingface/diffusers"""    )
    _SCREAMING_SNAKE_CASE									=			repo.get_issues(state="""open"""    )

    for issue in open_issues:
        _SCREAMING_SNAKE_CASE									=			sorted(issue.get_comments()					,       key=lambda __lowerCamelCase    : i.created_at					,       reverse=__lowerCamelCase    )
        _SCREAMING_SNAKE_CASE									=			comments[0] if len(__lowerCamelCase    ) > 0 else None
        if (
            last_comment is not None
            and last_comment.user.login == "github-actions[bot]"
            and (dt.utcnow() - issue.updated_at).days > 7
            and (dt.utcnow() - issue.created_at).days >= 30
            and not any(label.name.lower() in LABELS_TO_EXEMPT for label in issue.get_labels()    )
        ):
            # Closes the issue after 7 days of inactivity since the Stalebot notification.
            issue.edit(state="""closed"""    )
        elif (
            "stale" in issue.get_labels()
            and last_comment is not None
            and last_comment.user.login != "github-actions[bot]"
        ):
            # Opens the issue if someone other than Stalebot commented.
            issue.edit(state="""open"""    )
            issue.remove_from_labels("""stale"""    )
        elif (
            (dt.utcnow() - issue.updated_at).days > 23
            and (dt.utcnow() - issue.created_at).days >= 30
            and not any(label.name.lower() in LABELS_TO_EXEMPT for label in issue.get_labels()    )
        ):
            # Post a Stalebot notification after 23 days of inactivity.
            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/diffusers/blob/main/CONTRIBUTING.md) """
                """are likely to be ignored."""    )
            issue.add_to_labels("""stale"""    )


if __name__ == "__main__":
      main()





"""simple docstring"""





import unittest

from transformers import AlbertConfig, is_torch_available
from transformers.models.auto import get_values
from transformers.testing_utils import require_torch, slow, torch_device

from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, ids_tensor, random_attention_mask
from ...test_pipeline_mixin import PipelineTesterMixin


if is_torch_available():
							import torch

							from transformers import (
							    MODEL_FOR_PRETRAINING_MAPPING,
							    AlbertForMaskedLM,
							    AlbertForMultipleChoice,
							    AlbertForPreTraining,
							    AlbertForQuestionAnswering,
							    AlbertForSequenceClassification,
							    AlbertForTokenClassification,
							    AlbertModel,
							)
							from transformers.models.albert.modeling_albert import ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST
class 						SCREAMING_SNAKE_CASE_ :




		"""simple docstring"""





		def __init__(     self							,  lowerCAmelCase__							,  lowerCAmelCase__=1_3							,  lowerCAmelCase__=7							,  lowerCAmelCase__=True							,  lowerCAmelCase__=True							,  lowerCAmelCase__=True							,  lowerCAmelCase__=True							,  lowerCAmelCase__=9_9							,  lowerCAmelCase__=1_6							,  lowerCAmelCase__=3_6							,  lowerCAmelCase__=6							,  lowerCAmelCase__=6							,  lowerCAmelCase__=6							,  lowerCAmelCase__=3_7							,  lowerCAmelCase__="gelu"							,  lowerCAmelCase__=0.1							,  lowerCAmelCase__=0.1							,  lowerCAmelCase__=5_1_2							,  lowerCAmelCase__=1_6							,  lowerCAmelCase__=2							,  lowerCAmelCase__=0.02							,  lowerCAmelCase__=3							,  lowerCAmelCase__=4							,  lowerCAmelCase__=None							,  ):
				__SCREAMING_SNAKE_CASE            = parent
				__SCREAMING_SNAKE_CASE            = batch_size
				__SCREAMING_SNAKE_CASE            = seq_length
				__SCREAMING_SNAKE_CASE            = is_training
				__SCREAMING_SNAKE_CASE            = use_input_mask
				__SCREAMING_SNAKE_CASE            = use_token_type_ids
				__SCREAMING_SNAKE_CASE            = use_labels
				__SCREAMING_SNAKE_CASE            = vocab_size
				__SCREAMING_SNAKE_CASE            = embedding_size
				__SCREAMING_SNAKE_CASE            = hidden_size
				__SCREAMING_SNAKE_CASE            = num_hidden_layers
				__SCREAMING_SNAKE_CASE            = num_hidden_groups
				__SCREAMING_SNAKE_CASE            = num_attention_heads
				__SCREAMING_SNAKE_CASE            = intermediate_size
				__SCREAMING_SNAKE_CASE            = hidden_act
				__SCREAMING_SNAKE_CASE            = hidden_dropout_prob
				__SCREAMING_SNAKE_CASE            = attention_probs_dropout_prob
				__SCREAMING_SNAKE_CASE            = max_position_embeddings
				__SCREAMING_SNAKE_CASE            = type_vocab_size
				__SCREAMING_SNAKE_CASE            = type_sequence_label_size
				__SCREAMING_SNAKE_CASE            = initializer_range
				__SCREAMING_SNAKE_CASE            = num_labels
				__SCREAMING_SNAKE_CASE            = num_choices
				__SCREAMING_SNAKE_CASE            = scope




		def 	snake_case_     (     self):
				__SCREAMING_SNAKE_CASE            = ids_tensor([self.batch_size, self.seq_length]							,  self.vocab_size)

				__SCREAMING_SNAKE_CASE            = None
				if self.use_input_mask:
						__SCREAMING_SNAKE_CASE            = random_attention_mask([self.batch_size, self.seq_length])

				__SCREAMING_SNAKE_CASE            = None
				if self.use_token_type_ids:
						__SCREAMING_SNAKE_CASE            = ids_tensor([self.batch_size, self.seq_length]							,  self.type_vocab_size)

				__SCREAMING_SNAKE_CASE            = None
				__SCREAMING_SNAKE_CASE            = None
				__SCREAMING_SNAKE_CASE            = None
				if self.use_labels:
						__SCREAMING_SNAKE_CASE            = ids_tensor([self.batch_size]							,  self.type_sequence_label_size)
						__SCREAMING_SNAKE_CASE            = ids_tensor([self.batch_size, self.seq_length]							,  self.num_labels)
						__SCREAMING_SNAKE_CASE            = ids_tensor([self.batch_size]							,  self.num_choices)

				__SCREAMING_SNAKE_CASE            = self.get_config()

				return config, input_ids, token_type_ids, input_mask, sequence_labels, token_labels, choice_labels




		def 	snake_case_     (     self):
				return AlbertConfig(
				    vocab_size=self.vocab_size							,  hidden_size=self.hidden_size							,  num_hidden_layers=self.num_hidden_layers							,  num_attention_heads=self.num_attention_heads							,  intermediate_size=self.intermediate_size							,  hidden_act=self.hidden_act							,  hidden_dropout_prob=self.hidden_dropout_prob							,  attention_probs_dropout_prob=self.attention_probs_dropout_prob							,  max_position_embeddings=self.max_position_embeddings							,  type_vocab_size=self.type_vocab_size							,  initializer_range=self.initializer_range							,  num_hidden_groups=self.num_hidden_groups							,  )




		def 	snake_case_     (     self							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__):
				__SCREAMING_SNAKE_CASE            = AlbertModel(config=lowerCAmelCase__)
				model.to(lowerCAmelCase__)
				model.eval()
				__SCREAMING_SNAKE_CASE            = model(lowerCAmelCase__							,  attention_mask=lowerCAmelCase__							,  token_type_ids=lowerCAmelCase__)
				__SCREAMING_SNAKE_CASE            = model(lowerCAmelCase__							,  token_type_ids=lowerCAmelCase__)
				__SCREAMING_SNAKE_CASE            = model(lowerCAmelCase__)
				self.parent.assertEqual(result.last_hidden_state.shape							,  (self.batch_size, self.seq_length, self.hidden_size))
				self.parent.assertEqual(result.pooler_output.shape							,  (self.batch_size, self.hidden_size))




		def 	snake_case_     (     self							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__):
				__SCREAMING_SNAKE_CASE            = AlbertForPreTraining(config=lowerCAmelCase__)
				model.to(lowerCAmelCase__)
				model.eval()
				__SCREAMING_SNAKE_CASE            = model(
				    lowerCAmelCase__							,  attention_mask=lowerCAmelCase__							,  token_type_ids=lowerCAmelCase__							,  labels=lowerCAmelCase__							,  sentence_order_label=lowerCAmelCase__							,  )
				self.parent.assertEqual(result.prediction_logits.shape							,  (self.batch_size, self.seq_length, self.vocab_size))
				self.parent.assertEqual(result.sop_logits.shape							,  (self.batch_size, config.num_labels))




		def 	snake_case_     (     self							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__):
				__SCREAMING_SNAKE_CASE            = AlbertForMaskedLM(config=lowerCAmelCase__)
				model.to(lowerCAmelCase__)
				model.eval()
				__SCREAMING_SNAKE_CASE            = model(lowerCAmelCase__							,  attention_mask=lowerCAmelCase__							,  token_type_ids=lowerCAmelCase__							,  labels=lowerCAmelCase__)
				self.parent.assertEqual(result.logits.shape							,  (self.batch_size, self.seq_length, self.vocab_size))




		def 	snake_case_     (     self							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__):
				__SCREAMING_SNAKE_CASE            = AlbertForQuestionAnswering(config=lowerCAmelCase__)
				model.to(lowerCAmelCase__)
				model.eval()
				__SCREAMING_SNAKE_CASE            = model(
				    lowerCAmelCase__							,  attention_mask=lowerCAmelCase__							,  token_type_ids=lowerCAmelCase__							,  start_positions=lowerCAmelCase__							,  end_positions=lowerCAmelCase__							,  )
				self.parent.assertEqual(result.start_logits.shape							,  (self.batch_size, self.seq_length))
				self.parent.assertEqual(result.end_logits.shape							,  (self.batch_size, self.seq_length))




		def 	snake_case_     (     self							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__):
				__SCREAMING_SNAKE_CASE            = self.num_labels
				__SCREAMING_SNAKE_CASE            = AlbertForSequenceClassification(lowerCAmelCase__)
				model.to(lowerCAmelCase__)
				model.eval()
				__SCREAMING_SNAKE_CASE            = model(lowerCAmelCase__							,  attention_mask=lowerCAmelCase__							,  token_type_ids=lowerCAmelCase__							,  labels=lowerCAmelCase__)
				self.parent.assertEqual(result.logits.shape							,  (self.batch_size, self.num_labels))




		def 	snake_case_     (     self							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__):
				__SCREAMING_SNAKE_CASE            = self.num_labels
				__SCREAMING_SNAKE_CASE            = AlbertForTokenClassification(config=lowerCAmelCase__)
				model.to(lowerCAmelCase__)
				model.eval()
				__SCREAMING_SNAKE_CASE            = model(lowerCAmelCase__							,  attention_mask=lowerCAmelCase__							,  token_type_ids=lowerCAmelCase__							,  labels=lowerCAmelCase__)
				self.parent.assertEqual(result.logits.shape							,  (self.batch_size, self.seq_length, self.num_labels))




		def 	snake_case_     (     self							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__):
				__SCREAMING_SNAKE_CASE            = self.num_choices
				__SCREAMING_SNAKE_CASE            = AlbertForMultipleChoice(config=lowerCAmelCase__)
				model.to(lowerCAmelCase__)
				model.eval()
				__SCREAMING_SNAKE_CASE            = input_ids.unsqueeze(1).expand(-1							,  self.num_choices							,  -1).contiguous()
				__SCREAMING_SNAKE_CASE            = token_type_ids.unsqueeze(1).expand(-1							,  self.num_choices							,  -1).contiguous()
				__SCREAMING_SNAKE_CASE            = input_mask.unsqueeze(1).expand(-1							,  self.num_choices							,  -1).contiguous()
				__SCREAMING_SNAKE_CASE            = model(
				    lowerCAmelCase__							,  attention_mask=lowerCAmelCase__							,  token_type_ids=lowerCAmelCase__							,  labels=lowerCAmelCase__							,  )
				self.parent.assertEqual(result.logits.shape							,  (self.batch_size, self.num_choices))




		def 	snake_case_     (     self):
				__SCREAMING_SNAKE_CASE            = self.prepare_config_and_inputs()
				(
				    (
				    __SCREAMING_SNAKE_CASE
				)       ,(
				    __SCREAMING_SNAKE_CASE
				)       ,(
				    __SCREAMING_SNAKE_CASE
				)       ,(
				    __SCREAMING_SNAKE_CASE
				)       ,(
				    __SCREAMING_SNAKE_CASE
				)       ,(
				    __SCREAMING_SNAKE_CASE
				)       ,(
				    __SCREAMING_SNAKE_CASE
				)       ,
				)            = config_and_inputs
				__SCREAMING_SNAKE_CASE            = {"""input_ids""": input_ids, """token_type_ids""": token_type_ids, """attention_mask""": input_mask}
				return config, inputs_dict



@require_torch
class 						SCREAMING_SNAKE_CASE_ (						__a     ,				__a     ,				unittest.TestCase ):




		"""simple docstring"""





		__lowercase							:  Union[str, Any]						   =		(
		    (
		        AlbertModel,
		        AlbertForPreTraining,
		        AlbertForMaskedLM,
		        AlbertForMultipleChoice,
		        AlbertForSequenceClassification,
		        AlbertForTokenClassification,
		        AlbertForQuestionAnswering,
		    )
		    if is_torch_available()
		    else ()
		)
		__lowercase							:  Optional[int]						   =		(
		    {
		        '''feature-extraction''': AlbertModel,
		        '''fill-mask''': AlbertForMaskedLM,
		        '''question-answering''': AlbertForQuestionAnswering,
		        '''text-classification''': AlbertForSequenceClassification,
		        '''token-classification''': AlbertForTokenClassification,
		        '''zero-shot''': AlbertForSequenceClassification,
		    }
		    if is_torch_available()
		    else {}
		)
		__lowercase							:  List[Any]						   =		True




		def 	snake_case_     (     self							,  lowerCAmelCase__							,  lowerCAmelCase__							,  lowerCAmelCase__=False):
				__SCREAMING_SNAKE_CASE            = super()._prepare_for_class(lowerCAmelCase__							,  lowerCAmelCase__							,  return_labels=lowerCAmelCase__)

				if return_labels:
						if model_class in get_values(lowerCAmelCase__):
								__SCREAMING_SNAKE_CASE            = torch.zeros(
								    (self.model_tester.batch_size, self.model_tester.seq_length)							,  dtype=torch.long							,  device=lowerCAmelCase__)
								__SCREAMING_SNAKE_CASE            = torch.zeros(
								    self.model_tester.batch_size							,  dtype=torch.long							,  device=lowerCAmelCase__)
				return inputs_dict




		def 	snake_case_     (     self):
				__SCREAMING_SNAKE_CASE            = AlbertModelTester(self)
				__SCREAMING_SNAKE_CASE            = ConfigTester(self							,  config_class=lowerCAmelCase__							,  hidden_size=3_7)




		def 	snake_case_     (     self):
				self.config_tester.run_common_tests()




		def 	snake_case_     (     self):
				__SCREAMING_SNAKE_CASE            = self.model_tester.prepare_config_and_inputs()
				self.model_tester.create_and_check_model(*lowerCAmelCase__)




		def 	snake_case_     (     self):
				__SCREAMING_SNAKE_CASE            = self.model_tester.prepare_config_and_inputs()
				self.model_tester.create_and_check_for_pretraining(*lowerCAmelCase__)




		def 	snake_case_     (     self):
				__SCREAMING_SNAKE_CASE            = self.model_tester.prepare_config_and_inputs()
				self.model_tester.create_and_check_for_masked_lm(*lowerCAmelCase__)




		def 	snake_case_     (     self):
				__SCREAMING_SNAKE_CASE            = self.model_tester.prepare_config_and_inputs()
				self.model_tester.create_and_check_for_multiple_choice(*lowerCAmelCase__)




		def 	snake_case_     (     self):
				__SCREAMING_SNAKE_CASE            = self.model_tester.prepare_config_and_inputs()
				self.model_tester.create_and_check_for_question_answering(*lowerCAmelCase__)




		def 	snake_case_     (     self):
				__SCREAMING_SNAKE_CASE            = self.model_tester.prepare_config_and_inputs()
				self.model_tester.create_and_check_for_sequence_classification(*lowerCAmelCase__)




		def 	snake_case_     (     self):
				__SCREAMING_SNAKE_CASE            = self.model_tester.prepare_config_and_inputs()
				for type in ["absolute", "relative_key", "relative_key_query"]:
						__SCREAMING_SNAKE_CASE            = type
						self.model_tester.create_and_check_model(*lowerCAmelCase__)




		@slow
		def 	snake_case_     (     self):
				for model_name in ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
						__SCREAMING_SNAKE_CASE            = AlbertModel.from_pretrained(lowerCAmelCase__)
						self.assertIsNotNone(lowerCAmelCase__)



@require_torch
class 						SCREAMING_SNAKE_CASE_ (						unittest.TestCase ):




		"""simple docstring"""





		@slow
		def 	snake_case_     (     self):
				__SCREAMING_SNAKE_CASE            = AlbertModel.from_pretrained("""albert-base-v2""")
				__SCREAMING_SNAKE_CASE            = torch.tensor([[0, 3_4_5, 2_3_2, 3_2_8, 7_4_0, 1_4_0, 1_6_9_5, 6_9, 6_0_7_8, 1_5_8_8, 2]])
				__SCREAMING_SNAKE_CASE            = torch.tensor([[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])
				with torch.no_grad():
						__SCREAMING_SNAKE_CASE            = model(lowerCAmelCase__							,  attention_mask=lowerCAmelCase__)[0]
				__SCREAMING_SNAKE_CASE            = torch.Size((1, 1_1, 7_6_8))
				self.assertEqual(output.shape							,  lowerCAmelCase__)
				__SCREAMING_SNAKE_CASE            = torch.tensor(
				    [[[-0.65_13, 1.50_35, -0.27_66], [-0.65_15, 1.50_46, -0.27_80], [-0.65_12, 1.50_49, -0.27_84]]])

				self.assertTrue(torch.allclose(output[:, 1:4, 1:4]							,  lowerCAmelCase__							,  atol=1E-4))




