





'''simple docstring'''




from typing import TYPE_CHECKING

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


a__					:			Optional[Any]          =     {
    '''configuration_rag''': ['''RagConfig'''],
    '''retrieval_rag''': ['''RagRetriever'''],
    '''tokenization_rag''': ['''RagTokenizer'''],
}

try:
			if not is_torch_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			a__					:			str          =     [
			    '''RagModel''',
			    '''RagPreTrainedModel''',
			    '''RagSequenceForGeneration''',
			    '''RagTokenForGeneration''',
			]

try:
			if not is_tf_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			a__					:			Dict          =     [
			    '''TFRagModel''',
			    '''TFRagPreTrainedModel''',
			    '''TFRagSequenceForGeneration''',
			    '''TFRagTokenForGeneration''',
			]


if TYPE_CHECKING:
			from .configuration_rag import RagConfig
			from .retrieval_rag import RagRetriever
			from .tokenization_rag import RagTokenizer

			try:
						if not is_torch_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_rag import RagModel, RagPreTrainedModel, RagSequenceForGeneration, RagTokenForGeneration

			try:
						if not is_tf_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_tf_rag import (
						    TFRagModel,
						    TFRagPreTrainedModel,
						    TFRagSequenceForGeneration,
						    TFRagTokenForGeneration,
						)

else:
			import sys

			a__					:			str          =     _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)










'''simple docstring'''




from abc import ABC, abstractmethod
from argparse import ArgumentParser






class 				__snake_case     (					__magic_name__							):





	@staticmethod
	@abstractmethod
	def   _snake_case   (		UpperCamelCase_		)      ->		Dict:
		raise NotImplementedError()





	@abstractmethod
	def   _snake_case   (		self		)      ->		List[Any]:
		raise NotImplementedError()



