
'''simple docstring'''
# 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.
A__   :		Union[str, 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        A_     (						__SCREAMING_SNAKE_CASE						:  Optional[int] )				->       int:





  """simple docstring"""

  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        A_     (						__SCREAMING_SNAKE_CASE						:  Optional[int] )				->       List[Any]:





  """simple docstring"""

  from transformers.testing_utils import pytest_addoption_shared

  pytest_addoption_shared(A__ )







def        A_     (						__SCREAMING_SNAKE_CASE						:  List[str] )				->       Optional[Any]:





  """simple docstring"""

  from transformers.testing_utils import pytest_terminal_summary_main

  __A		:     Union[str, Any]												=		terminalreporter.config.getoption("""--make-reports""" )
  if make_reports:
    pytest_terminal_summary_main(A__			,     id=A__ )







def        A_     (						__SCREAMING_SNAKE_CASE						:  str			,     __SCREAMING_SNAKE_CASE						:  Tuple )				->       List[Any]:





  """simple docstring"""

  if exitstatus == 5:
    __A		:     Any												=		0


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

A__   :		List[Any] 		=doctest.OutputChecker







class  __A				( __lowerCamelCase			):
 def 		lowercase_(   self			:    Optional[int]				,   lowerCamelCase			:    str				,   lowerCamelCase			:    Tuple				,   lowerCamelCase			:    Any       ):



   """simple docstring"""





   if IGNORE_RESULT & optionflags:
     return True
   return OutputChecker.check_output(self				,   UpperCamelCase_				,   UpperCamelCase_				,   UpperCamelCase_       )

A__   :		List[Any] 		=CustomOutputChecker
A__   :		Dict 		=HfDoctestModule

A__   :		int 		=HfDocTestParser





'''simple docstring'''
from packaging import version

from .import_utils import is_accelerate_available


if is_accelerate_available():
     import accelerate







def        A_     (						__SCREAMING_SNAKE_CASE						:  Dict )				->       Optional[int]:





  """simple docstring"""

  if not is_accelerate_available():
    return method
  __A		:     int												=		version.parse(accelerate.__version__ ).base_version
  if version.parse(__SCREAMING_SNAKE_CASE ) < version.parse("""0.17.0""" ):
    return method

  def wrapper(self						:  str			,     *__SCREAMING_SNAKE_CASE						:  Tuple			,     **__SCREAMING_SNAKE_CASE						:  Tuple ):
    if hasattr(self			,     """_hf_hook""" ) and hasattr(self._hf_hook			,     """pre_forward""" ):
      self._hf_hook.pre_forward(self )
    return method(self			,     *__SCREAMING_SNAKE_CASE			,     **__SCREAMING_SNAKE_CASE )

  return wrapper



