


import re

from filelock import FileLock


try:
				import nltk

				A      = True
except (ImportError, ModuleNotFoundError):
				A      = False

if NLTK_AVAILABLE:
				with FileLock(".lock") as lock:
								nltk.download("punkt", quiet=True)





def __UpperCAmelCase       (		__A			)						->					str:



							'''simple docstring'''





							re.sub("<n>" ,						"" ,						__A			)  # remove pegasus newline char
							assert NLTK_AVAILABLE, "nltk must be installed to separate newlines between sentences. (pip install nltk)"
							return "\n".join(nltk.sent_tokenize(__A			)			)









from __future__ import annotations





def __UpperCAmelCase       (		__A ,						__A ,						__A ,						)						->					tuple:



       '''simple docstring'''





       if (electron_conc, hole_conc, intrinsic_conc).count(0			) != 1:
              raise ValueError("You cannot supply more or less than 2 values"			)
       elif electron_conc < 0:
              raise ValueError("Electron concentration cannot be negative in a semiconductor"			)
       elif hole_conc < 0:
              raise ValueError("Hole concentration cannot be negative in a semiconductor"			)
       elif intrinsic_conc < 0:
              raise ValueError(
                  "Intrinsic concentration cannot be negative in a semiconductor"			)
       elif electron_conc == 0:
              return (
                  "electron_conc",
                  intrinsic_conc**2 / hole_conc,
              )
       elif hole_conc == 0:
              return (
                  "hole_conc",
                  intrinsic_conc**2 / electron_conc,
              )
       elif intrinsic_conc == 0:
              return (
                  "intrinsic_conc",
                  (electron_conc * hole_conc) ** 0.5,
              )
       else:
              return (-1, -1)


if __name__ == "__main__":
    import doctest

    doctest.testmod()





