



from typing import TYPE_CHECKING

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


UpperCamelCase_									=   {
    '''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:
      UpperCamelCase_									=   [
          '''DPRContextEncoderTokenizerFast''',
          '''DPRQuestionEncoderTokenizerFast''',
          '''DPRReaderTokenizerFast''',
      ]

try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      UpperCamelCase_									=   [
          '''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:
      UpperCamelCase_									=   [
          '''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

      UpperCamelCase_									=   _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)






'''simple docstring'''




import abc
import copy
import dataclasses
from dataclasses import dataclass
from typing import ClassVar, Dict, Type, TypeVar

from ..features import Features


snake_case__ 							=    TypeVar("""T""", bound="""TaskTemplate""")






@dataclass(frozen=a__  )
class      UpperCamelCase_  (abc.ABC  ):







						"""simple docstring"""


						_lowerCAmelCase         =       42
						_lowerCAmelCase         =       42
						_lowerCAmelCase         =       42







						def    _a     (  self   :							T				,			_lowerCamelCase   :							Features     ):





											"""simple docstring"""







											return copy.deepcopy(self     )







						@property
						def    _a     (  self   :							List[str]     ):





											"""simple docstring"""







											return Features(**self.input_schema				,			**self.label_schema     )







						@property
						@abc.abstractmethod
						def    _a     (  self   :							int     ):





											"""simple docstring"""







											raise NotImplementedError







						@classmethod
						def    _a     (  cls   :							Type[T]				,			_lowerCamelCase   :							dict     ):





											"""simple docstring"""







											A_			:  Dict			=				{f.name for f in dataclasses.fields(cls     )}
											return cls(**{k: v for k, v in template_dict.items() if k in field_names}     )



