



'''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.
SCREAMING_SNAKE_CASE__     :						Dict	=  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  (     UpperCamelCase_    :    str			)       ->	int:
		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  (     UpperCamelCase_    :    Optional[Any]			)       ->	Tuple:
		from transformers.testing_utils import pytest_addoption_shared

		pytest_addoption_shared(UpperCamelCase_			)






def 				a  (     UpperCamelCase_    :    Dict			)       ->	List[str]:
		from transformers.testing_utils import pytest_terminal_summary_main

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






def 				a  (     UpperCamelCase_    :    Any      ,					UpperCamelCase_    :    Union[str, Any]			)       ->	Optional[Any]:
		# 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.
SCREAMING_SNAKE_CASE__     :						List[Any]	=  doctest.register_optionflag('''IGNORE_RESULT''')

SCREAMING_SNAKE_CASE__     :						List[str]	=  doctest.OutputChecker

class 							a__( snake_case__     ):






			def 						_lowercase  (     self					,   _UpperCAmelCase					,   _UpperCAmelCase					,   _UpperCAmelCase						)							->							int:
					if IGNORE_RESULT & optionflags:
							return True
					return OutputChecker.check_output(self					,   _UpperCAmelCase					,   _UpperCAmelCase					,   _UpperCAmelCase						)





SCREAMING_SNAKE_CASE__     :						Optional[int]	=  CustomOutputChecker
SCREAMING_SNAKE_CASE__     :						List[str]	=  HfDoctestModule


SCREAMING_SNAKE_CASE__     :						List[Any]	=  HfDocTestParser









'''simple docstring'''

from __future__ import annotations

SCREAMING_SNAKE_CASE__     :						List[Any]	=  1.6021e-19  # units = C






def 				a  (     UpperCamelCase_    :    float      ,					UpperCamelCase_    :    float      ,					UpperCamelCase_    :    float      ,					)       ->	tuple[str, float]:
		if (conductivity, electron_conc, mobility).count(0			) != 1:
				raise ValueError('You cannot supply more or less than 2 values'			)
		elif conductivity < 0:
				raise ValueError('Conductivity cannot be negative'			)
		elif electron_conc < 0:
				raise ValueError('Electron concentration cannot be negative'			)
		elif mobility < 0:
				raise ValueError('mobility cannot be negative'			)
		elif conductivity == 0:
				return (
				    "conductivity",
				    mobility * electron_conc * ELECTRON_CHARGE,
				)
		elif electron_conc == 0:
				return (
				    "electron_conc",
				    conductivity / (mobility * ELECTRON_CHARGE),
				)
		else:
				return (
				    "mobility",
				    conductivity / (electron_conc * ELECTRON_CHARGE),
				)


if __name__ == "__main__":
			import doctest

			doctest.testmod()




