



'''simple docstring'''





from datetime import datetime as dt
import os

from github import Github


_lowerCAmelCase      						=	[
    '''good first issue''',
    '''good second issue''',
    '''good difficult issue''',
    '''feature request''',
    '''new model''',
    '''wip''',
]
def    _SCREAMING_SNAKE_CASE  (       ):



    """simple docstring"""





    lowerCAmelCase__ :  str							      =					Github(os.environ["""GITHUB_TOKEN"""]			)
    lowerCAmelCase__ :  Optional[Any]							      =					g.get_repo("""huggingface/transformers"""			)
    lowerCAmelCase__ :  List[str]							      =					repo.get_issues(state="""open"""			)

    for issue in open_issues:
        lowerCAmelCase__ :  str							      =					sorted([comment for comment in issue.get_comments()]							,    key=lambda UpperCamelCase			: i.created_at							,    reverse=UpperCamelCase			)
        lowerCAmelCase__ :  Optional[Any]							      =					comments[0] if len(UpperCamelCase			) > 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()			)
        ):
            # print(f"Would close issue {issue.number} since it has been 7 days of inactivity since bot mention.")
            issue.edit(state="""closed"""			)
        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()			)
        ):
            # print(f"Would add stale comment to {issue.number}")
            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/transformers/blob/main/CONTRIBUTING.md) """
                """are likely to be ignored."""			)


if __name__ == "__main__":
 main()







'''simple docstring'''





import os

from bleurt import score  # From: git+https://github.com/google-research/bleurt.git

import datasets


_lowerCAmelCase      						=	datasets.logging.get_logger(__name__)


_lowerCAmelCase      						=	'''\
@inproceedings{bleurt,
  title={BLEURT: Learning Robust Metrics for Text Generation},
  author={Thibault Sellam and Dipanjan Das and Ankur P. Parikh},
  booktitle={ACL},
  year={2020},
  url={https://arxiv.org/abs/2004.04696}
}
'''

_lowerCAmelCase      						=	'''\
BLEURT a learnt evaluation metric for Natural Language Generation. It is built using multiple phases of transfer learning starting from a pretrained BERT model (Devlin et al. 2018)
and then employing another pre-training phrase using synthetic data. Finally it is trained on WMT human annotations. You may run BLEURT out-of-the-box or fine-tune
it for your specific application (the latter is expected to perform better).

See the project\'s README at https://github.com/google-research/bleurt#readme for more information.
'''

_lowerCAmelCase      						=	'''
BLEURT score.

Args:
    `predictions` (list of str): prediction/candidate sentences
    `references` (list of str): reference sentences
    `checkpoint` BLEURT checkpoint. Will default to BLEURT-tiny if None.

Returns:
    \'scores\': List of scores.
Examples:

    >>> predictions = ["hello there", "general kenobi"]
    >>> references = ["hello there", "general kenobi"]
    >>> bleurt = datasets.load_metric("bleurt")
    >>> results = bleurt.compute(predictions=predictions, references=references)
    >>> print([round(v, 2) for v in results["scores"]])
    [1.03, 1.04]
'''

_lowerCAmelCase      						=	{
    '''bleurt-tiny-128''': '''https://storage.googleapis.com/bleurt-oss/bleurt-tiny-128.zip''',
    '''bleurt-tiny-512''': '''https://storage.googleapis.com/bleurt-oss/bleurt-tiny-512.zip''',
    '''bleurt-base-128''': '''https://storage.googleapis.com/bleurt-oss/bleurt-base-128.zip''',
    '''bleurt-base-512''': '''https://storage.googleapis.com/bleurt-oss/bleurt-base-512.zip''',
    '''bleurt-large-128''': '''https://storage.googleapis.com/bleurt-oss/bleurt-large-128.zip''',
    '''bleurt-large-512''': '''https://storage.googleapis.com/bleurt-oss/bleurt-large-512.zip''',
    '''BLEURT-20-D3''': '''https://storage.googleapis.com/bleurt-oss-21/BLEURT-20-D3.zip''',
    '''BLEURT-20-D6''': '''https://storage.googleapis.com/bleurt-oss-21/BLEURT-20-D6.zip''',
    '''BLEURT-20-D12''': '''https://storage.googleapis.com/bleurt-oss-21/BLEURT-20-D12.zip''',
    '''BLEURT-20''': '''https://storage.googleapis.com/bleurt-oss-21/BLEURT-20.zip''',
}






@datasets.utils.file_utils.add_start_docstrings(_DESCRIPTION						, _KWARGS_DESCRIPTION     )
class        lowerCAmelCase_(				datasets.Metric     ):
  '''simple docstring'''




  def 							UpperCAmelCase_	(    self      )    ->		Union[str, Any]:
      return datasets.MetricInfo(
          description=_DESCRIPTION  ,citation=_CITATION  ,homepage="""https://github.com/google-research/bleurt"""  ,inputs_description=_KWARGS_DESCRIPTION  ,features=datasets.Features(
              {
                  """predictions""": datasets.Value("""string"""  ,id="""sequence"""      ),
                  """references""": datasets.Value("""string"""  ,id="""sequence"""      ),
              }      )  ,codebase_urls=["""https://github.com/google-research/bleurt"""]  ,reference_urls=["""https://github.com/google-research/bleurt""", """https://arxiv.org/abs/2004.04696"""]  ,)




  def 							UpperCAmelCase_	(    self  ,__UpperCAmelCase      )    ->		Tuple:
      # check that config name specifies a valid BLEURT model
      if self.config_name == "default":
          logger.warning(
              """Using default BLEURT-Base checkpoint for sequence maximum length 128. """
              """You can use a bigger model for better results with e.g.: datasets.load_metric('bleurt', 'bleurt-large-512')."""      )
          lowerCAmelCase__ :  str							      =					"""bleurt-base-128"""

      if self.config_name.lower() in CHECKPOINT_URLS:
          lowerCAmelCase__ :  Union[str, Any]							      =					self.config_name.lower()

      elif self.config_name.upper() in CHECKPOINT_URLS:
          lowerCAmelCase__ :  List[Any]							      =					self.config_name.upper()

      else:
          raise KeyError(
              F"""{self.config_name} model not found. You should supply the name of a model checkpoint for bleurt in {CHECKPOINT_URLS.keys()}"""      )

      # download the model checkpoint specified by self.config_name and set up the scorer
      lowerCAmelCase__ :  int							      =					dl_manager.download_and_extract(CHECKPOINT_URLS[checkpoint_name]      )
      lowerCAmelCase__ :  Dict							      =					score.BleurtScorer(os.path.join(__UpperCAmelCase  ,__UpperCAmelCase      )      )






  def 							UpperCAmelCase_	(    self  ,__UpperCAmelCase  ,__UpperCAmelCase      )    ->		Union[str, Any]:
      lowerCAmelCase__ :  Union[str, Any]							      =					self.scorer.score(references=__UpperCAmelCase  ,candidates=__UpperCAmelCase      )
      return {"scores": scores}


