






'''simple docstring'''




import warnings

from ...utils import logging
from .image_processing_donut import DonutImageProcessor


lowerCAmelCase__          =						logging.get_logger(__name__)







class       __lowercase					(__lowerCamelCase    ):

	def __init__(      self   :						List[str]  ,					*UpperCAmelCase_   :						Optional[int]  ,					**UpperCAmelCase_   :						str):
			warnings.warn(
			    'The class DonutFeatureExtractor is deprecated and will be removed in version 5 of Transformers. Please'
			    ' use DonutImageProcessor instead.'  ,					UpperCAmelCase_  ,					)
			super().__init__(*UpperCAmelCase_  ,					**UpperCAmelCase_)







'''simple docstring'''




from math import log

from scipy.constants import Boltzmann, physical_constants

lowerCAmelCase__          =						300  # TEMPERATURE (unit = K)







def       __UpperCAmelCase						(  lowerCamelCase_     ,      lowerCamelCase_     ,      lowerCamelCase_     ,      )							->     float:

		if donor_conc <= 0:
				raise ValueError('Donor concentration should be positive')
		elif acceptor_conc <= 0:
				raise ValueError('Acceptor concentration should be positive')
		elif intrinsic_conc <= 0:
				raise ValueError('Intrinsic concentration should be positive')
		elif donor_conc <= intrinsic_conc:
				raise ValueError(
				    'Donor concentration should be greater than intrinsic concentration')
		elif acceptor_conc <= intrinsic_conc:
				raise ValueError(
				    'Acceptor concentration should be greater than intrinsic concentration')
		else:
				return (
				    Boltzmann
				    * T
				    * log((donor_conc * acceptor_conc) / intrinsic_conc**2)
				    / physical_constants["electron volt"][0]
				)


if __name__ == "__main__":
		import doctest

		doctest.testmod()




