


# tests directory-specific settings - this file is run automatically
# by pytest before any tests are run

import doctest
import sys
import warnings
from os.path import abspath, dirname, join

import _pytest

from transformers.testing_utils import HfDoctestModule, HfDocTestParser


# allow having multiple repository checkouts and not needing to remember to rerun
# 'pip install -e .[dev]' when switching between checkouts and running tests.
lowerCamelCase__							:						Optional[Any]							     =   abspath(join(dirname(__file__), """src"""))
sys.path.insert(1, git_repo_path)

# silence FutureWarning warnings in tests since often we can't act on them until
# they become normal warnings - i.e. the tests still need to test the current functionality
warnings.simplefilter(action="""ignore""", category=FutureWarning)







def SCREAMING_SNAKE_CASE	(			__lowerCAmelCase				)    ->				Optional[Any]:
  config.addinivalue_line(
      '''markers'''							,   '''is_pt_tf_cross_test: mark test to run only when PT and TF interactions are tested'''				)
  config.addinivalue_line(
      '''markers'''							,   '''is_pt_flax_cross_test: mark test to run only when PT and FLAX interactions are tested'''				)
  config.addinivalue_line('''markers'''							,   '''is_pipeline_test: mark test to run only when pipelines are tested'''				)
  config.addinivalue_line('''markers'''							,   '''is_staging_test: mark test to run only in the staging environment'''				)
  config.addinivalue_line('''markers'''							,   '''accelerate_tests: mark test that require accelerate'''				)
  config.addinivalue_line('''markers'''							,   '''tool_tests: mark the tool tests that are run on their specific schedule'''				)







def SCREAMING_SNAKE_CASE	(			__lowerCAmelCase				)    ->				Dict:
  from transformers.testing_utils import pytest_addoption_shared

  pytest_addoption_shared(__lowerCAmelCase				)







def SCREAMING_SNAKE_CASE	(			__lowerCAmelCase				)    ->				int:
  from transformers.testing_utils import pytest_terminal_summary_main

  snake_case__						= terminalreporter.config.getoption('''--make-reports'''				)
  if make_reports:
    pytest_terminal_summary_main(__lowerCAmelCase							,   id=__lowerCAmelCase				)







def SCREAMING_SNAKE_CASE	(			__lowerCAmelCase							,   __lowerCAmelCase				)    ->				Dict:
  # If no tests are collected, pytest exists with code 5, which makes the CI fail.
  if exitstatus == 5:
    snake_case__						= 0


# Doctest custom flag to ignore output.
lowerCamelCase__							:						Tuple							     =   doctest.register_optionflag("""IGNORE_RESULT""")

lowerCamelCase__							:						Optional[Any]							     =   doctest.OutputChecker
class 		__magic_name__						(snake_case_				):





     '''simple docstring'''



     def 	SCREAMING_SNAKE_CASE__						(					self:List[str]     ,		_a:Optional[Any]     ,		_a:Optional[int]     ,		_a:Union[str, Any]   ):
       if IGNORE_RESULT & optionflags:
         return True
       return OutputChecker.check_output(self     ,		_a     ,		_a     ,		_a   )




lowerCamelCase__							:						Optional[int]							     =   CustomOutputChecker
lowerCamelCase__							:						Dict							     =   HfDoctestModule


lowerCamelCase__							:						int							     =   HfDocTestParser





import os
from datetime import datetime as dt

from github import Github


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







def SCREAMING_SNAKE_CASE	(			)    ->				Optional[Any]:
  snake_case__						= Github(os.environ['''GITHUB_TOKEN''']				)
  snake_case__						= g.get_repo('''huggingface/diffusers'''				)
  snake_case__						= repo.get_issues(state='''open'''				)

  for issue in open_issues:
    snake_case__						= sorted(issue.get_comments()							,   key=lambda __lowerCAmelCase				: i.created_at							,   reverse=__lowerCAmelCase				)
    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()

