




from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


lowercase_     :    List[Any]      =			{
    'configuration_dpr': ['DPR_PRETRAINED_CONFIG_ARCHIVE_MAP', 'DPRConfig'],
    'tokenization_dpr': [
        'DPRContextEncoderTokenizer',
        'DPRQuestionEncoderTokenizer',
        'DPRReaderOutput',
        'DPRReaderTokenizer',
    ],
}


try:
				if not is_tokenizers_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				lowercase_     :    List[Any]      =			[
				    'DPRContextEncoderTokenizerFast',
				    'DPRQuestionEncoderTokenizerFast',
				    'DPRReaderTokenizerFast',
				]

try:
				if not is_torch_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				lowercase_     :    str      =			[
				    'DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST',
				    'DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST',
				    'DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST',
				    'DPRContextEncoder',
				    'DPRPretrainedContextEncoder',
				    'DPRPreTrainedModel',
				    'DPRPretrainedQuestionEncoder',
				    'DPRPretrainedReader',
				    'DPRQuestionEncoder',
				    'DPRReader',
				]

try:
				if not is_tf_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				lowercase_     :    str      =			[
				    'TF_DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST',
				    'TF_DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST',
				    'TF_DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST',
				    'TFDPRContextEncoder',
				    'TFDPRPretrainedContextEncoder',
				    'TFDPRPretrainedQuestionEncoder',
				    'TFDPRPretrainedReader',
				    'TFDPRQuestionEncoder',
				    'TFDPRReader',
				]


if TYPE_CHECKING:
				from .configuration_dpr import DPR_PRETRAINED_CONFIG_ARCHIVE_MAP, DPRConfig
				from .tokenization_dpr import (
				    DPRContextEncoderTokenizer,
				    DPRQuestionEncoderTokenizer,
				    DPRReaderOutput,
				    DPRReaderTokenizer,
				)

				try:
								if not is_tokenizers_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .tokenization_dpr_fast import (
								    DPRContextEncoderTokenizerFast,
								    DPRQuestionEncoderTokenizerFast,
								    DPRReaderTokenizerFast,
								)

				try:
								if not is_torch_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_dpr import (
								    DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
								    DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
								    DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST,
								    DPRContextEncoder,
								    DPRPretrainedContextEncoder,
								    DPRPreTrainedModel,
								    DPRPretrainedQuestionEncoder,
								    DPRPretrainedReader,
								    DPRQuestionEncoder,
								    DPRReader,
								)

				try:
								if not is_tf_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_tf_dpr import (
								    TF_DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
								    TF_DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
								    TF_DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST,
								    TFDPRContextEncoder,
								    TFDPRPretrainedContextEncoder,
								    TFDPRPretrainedQuestionEncoder,
								    TFDPRPretrainedReader,
								    TFDPRQuestionEncoder,
								    TFDPRReader,
								)

else:
				import sys

				lowercase_     :    Optional[int]      =			_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)










from __future__ import annotations

from collections.abc import Generator


def 							__SCREAMING_SNAKE_CASE  (      snake_case_						):

						'''simple docstring'''


						if not isinstance(snake_case_     ,   snake_case_						) or n < 1:
												raise Exception("Sequence only defined for positive integers"						)

						yield n
						while n != 1:
												if n % 2 == 0:
																		n //= 2
												else:
																		_UpperCAmelCase													=					3 * n + 1
												yield n


def 							__SCREAMING_SNAKE_CASE  (      ):

						'''simple docstring'''


						_UpperCAmelCase													=					43
						_UpperCAmelCase													=					tuple(collatz_sequence(snake_case_						)						)
						print(snake_case_						)
						print(f"""Collatz sequence from {n} took {len(snake_case_						)} steps."""						)


if __name__ == "__main__":
				main()




