




import enum
import os
from hashlib import shaaaa
from typing import Optional

from .. import config
from .logging import get_logger


UpperCamelCase__					    =    get_logger(__name__)
class     a__					(      enum.Enum   ):
						_a							:					Dict      =					"""all_checks"""
						_a							:					Tuple      =					"""basic_checks"""
						_a							:					int      =					"""no_checks"""






class     a__					(      snake_case__   ):
						pass






class     a__					(      snake_case__   ):
						pass






class     a__					(      snake_case__   ):
						pass






class     a__					(      snake_case__   ):
						pass







def 			_a   (		SCREAMING_SNAKE_CASE_							:       Optional[dict]   ,   SCREAMING_SNAKE_CASE_							:       dict   ,   SCREAMING_SNAKE_CASE_							:       Union[str, Any]=None  ):
					if expected_checksums is None:
										logger.info("Unable to verify checksums."  )
										return
					if len(set(SCREAMING_SNAKE_CASE_  ) - set(SCREAMING_SNAKE_CASE_  )  ) > 0:
										raise ExpectedMoreDownloadedFiles(str(set(SCREAMING_SNAKE_CASE_  ) - set(SCREAMING_SNAKE_CASE_  )  )  )
					if len(set(SCREAMING_SNAKE_CASE_  ) - set(SCREAMING_SNAKE_CASE_  )  ) > 0:
										raise UnexpectedDownloadedFile(str(set(SCREAMING_SNAKE_CASE_  ) - set(SCREAMING_SNAKE_CASE_  )  )  )
					__lowerCAmelCase            = [url for url in expected_checksums if expected_checksums[url] != recorded_checksums[url]]
					__lowerCAmelCase            = " for " + verification_name if verification_name is not None else ""
					if len(SCREAMING_SNAKE_CASE_  ) > 0:
										raise NonMatchingChecksumError(
										    F"""Checksums didn't match{for_verification_name}:\n"""
										    F"""{bad_urls}\n"""
										    "Set `verification_mode='no_checks'` to skip checksums verification and ignore this error"  )
					logger.info("All the checksums matched successfully" + for_verification_name  )
class     a__					(      snake_case__   ):
						pass






class     a__					(      snake_case__   ):
						pass






class     a__					(      snake_case__   ):
						pass






class     a__					(      snake_case__   ):
						pass







def 			_a   (		SCREAMING_SNAKE_CASE_							:       Optional[dict]   ,   SCREAMING_SNAKE_CASE_							:       dict  ):
					if expected_splits is None:
										logger.info("Unable to verify splits sizes."  )
										return
					if len(set(SCREAMING_SNAKE_CASE_  ) - set(SCREAMING_SNAKE_CASE_  )  ) > 0:
										raise ExpectedMoreSplits(str(set(SCREAMING_SNAKE_CASE_  ) - set(SCREAMING_SNAKE_CASE_  )  )  )
					if len(set(SCREAMING_SNAKE_CASE_  ) - set(SCREAMING_SNAKE_CASE_  )  ) > 0:
										raise UnexpectedSplits(str(set(SCREAMING_SNAKE_CASE_  ) - set(SCREAMING_SNAKE_CASE_  )  )  )
					__lowerCAmelCase            = [
					    {"expected": expected_splits[name], "recorded": recorded_splits[name]}
					    for name in expected_splits
					    if expected_splits[name].num_examples != recorded_splits[name].num_examples
					]
					if len(SCREAMING_SNAKE_CASE_  ) > 0:
										raise NonMatchingSplitsSizesError(str(SCREAMING_SNAKE_CASE_  )  )
					logger.info("All the splits matched successfully."  )







def 			_a   (		SCREAMING_SNAKE_CASE_							:       str   ,   SCREAMING_SNAKE_CASE_							:       bool = True  ):
					if record_checksum:
										__lowerCAmelCase            = shaaaa()
										with open(SCREAMING_SNAKE_CASE_   ,   "rb"  ) as f:
															for chunk in iter(lambda: f.read(1 << 20  )   ,   b""  ):
																				m.update(SCREAMING_SNAKE_CASE_  )
															__lowerCAmelCase            = m.hexdigest()
					else:
										__lowerCAmelCase            = None
					return {"num_bytes": os.path.getsize(SCREAMING_SNAKE_CASE_  ), "checksum": checksum}







def 			_a   (		SCREAMING_SNAKE_CASE_							:       List[Any]  ):
					if dataset_size and config.IN_MEMORY_MAX_SIZE:
										return dataset_size < config.IN_MEMORY_MAX_SIZE
					else:
										return False










from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tf_available, is_torch_available


UpperCamelCase__					    =    {
    """configuration_ctrl""": ["""CTRL_PRETRAINED_CONFIG_ARCHIVE_MAP""", """CTRLConfig"""],
    """tokenization_ctrl""": ["""CTRLTokenizer"""],
}

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					UpperCamelCase__					    =    [
					    """CTRL_PRETRAINED_MODEL_ARCHIVE_LIST""",
					    """CTRLForSequenceClassification""",
					    """CTRLLMHeadModel""",
					    """CTRLModel""",
					    """CTRLPreTrainedModel""",
					]

try:
					if not is_tf_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					UpperCamelCase__					    =    [
					    """TF_CTRL_PRETRAINED_MODEL_ARCHIVE_LIST""",
					    """TFCTRLForSequenceClassification""",
					    """TFCTRLLMHeadModel""",
					    """TFCTRLModel""",
					    """TFCTRLPreTrainedModel""",
					]


if TYPE_CHECKING:
					from .configuration_ctrl import CTRL_PRETRAINED_CONFIG_ARCHIVE_MAP, CTRLConfig
					from .tokenization_ctrl import CTRLTokenizer

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_ctrl import (
										    CTRL_PRETRAINED_MODEL_ARCHIVE_LIST,
										    CTRLForSequenceClassification,
										    CTRLLMHeadModel,
										    CTRLModel,
										    CTRLPreTrainedModel,
										)

					try:
										if not is_tf_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_tf_ctrl import (
										    TF_CTRL_PRETRAINED_MODEL_ARCHIVE_LIST,
										    TFCTRLForSequenceClassification,
										    TFCTRLLMHeadModel,
										    TFCTRLModel,
										    TFCTRLPreTrainedModel,
										)

else:
					import sys

					UpperCamelCase__					    =    _LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)




