from typing import TYPE_CHECKING

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


__lowerCamelCase    :				Union[str, Any]							     =	{
    '''configuration_perceiver''': ['''PERCEIVER_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''PerceiverConfig''', '''PerceiverOnnxConfig'''],
    '''tokenization_perceiver''': ['''PerceiverTokenizer'''],
}

try:
   if not is_vision_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   __lowerCamelCase    :				Optional[Any]							     =	['''PerceiverFeatureExtractor''']
   __lowerCamelCase    :				List[str]							     =	['''PerceiverImageProcessor''']

try:
   if not is_torch_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   __lowerCamelCase    :				str							     =	[
       '''PERCEIVER_PRETRAINED_MODEL_ARCHIVE_LIST''',
       '''PerceiverForImageClassificationConvProcessing''',
       '''PerceiverForImageClassificationFourier''',
       '''PerceiverForImageClassificationLearned''',
       '''PerceiverForMaskedLM''',
       '''PerceiverForMultimodalAutoencoding''',
       '''PerceiverForOpticalFlow''',
       '''PerceiverForSequenceClassification''',
       '''PerceiverLayer''',
       '''PerceiverModel''',
       '''PerceiverPreTrainedModel''',
   ]


if TYPE_CHECKING:
   from .configuration_perceiver import PERCEIVER_PRETRAINED_CONFIG_ARCHIVE_MAP, PerceiverConfig, PerceiverOnnxConfig
   from .tokenization_perceiver import PerceiverTokenizer

   try:
      if not is_vision_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .feature_extraction_perceiver import PerceiverFeatureExtractor
      from .image_processing_perceiver import PerceiverImageProcessor

   try:
      if not is_torch_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_perceiver import (
          PERCEIVER_PRETRAINED_MODEL_ARCHIVE_LIST,
          PerceiverForImageClassificationConvProcessing,
          PerceiverForImageClassificationFourier,
          PerceiverForImageClassificationLearned,
          PerceiverForMaskedLM,
          PerceiverForMultimodalAutoencoding,
          PerceiverForOpticalFlow,
          PerceiverForSequenceClassification,
          PerceiverLayer,
          PerceiverModel,
          PerceiverPreTrainedModel,
      )

else:
   import sys

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

import copy
from dataclasses import dataclass, field
from typing import ClassVar, Dict

from ..features import ClassLabel, Features, Value
from .base import TaskTemplate







@dataclass(frozen=lowerCamelCase_	)
class __snake_case       (		lowerCamelCase_	):
   # `task` is not a ClassVar since we want it to be part of the `asdict` output for JSON serialization
   lowerCAmelCase_														=							field(default="text-classification"     ,	metadata={"include_in_asdict_even_if_is_default": True}	)
   lowerCAmelCase_														=							Features({"text": Value("string"	)}	)
   lowerCAmelCase_														=							Features({"labels": ClassLabel}	)
   lowerCAmelCase_														=							"text"
   lowerCAmelCase_														=							"labels"




   def 			__a		(					self    :       Dict ,			_lowercase    :       List[Any]   ):



     """simple docstring"""






     if self.label_column not in features:
       raise ValueError(f"""Column {self.label_column} is not present in features."""   )
     if not isinstance(features[self.label_column] ,			_lowercase   ):
       raise ValueError(f"""Column {self.label_column} is not a ClassLabel."""   )
     SCREAMING_SNAKE_CASE__    							=   copy.deepcopy(self   )
     SCREAMING_SNAKE_CASE__    							=   self.label_schema.copy()
     SCREAMING_SNAKE_CASE__    							=   features[self.label_column]
     SCREAMING_SNAKE_CASE__    							=   label_schema
     return task_template




   @property
   def 			__a		(					self    :       List[Any]   ):



     """simple docstring"""






     return {
         self.text_column: "text",
         self.label_column: "labels",
     }
