


"""simple docstring"""







import sys
from collections.abc import Mapping
from typing import TYPE_CHECKING

import numpy as np
import pyarrow as pa

from .. import config
from ..utils.py_utils import map_nested
from .formatting import TensorFormatter


if TYPE_CHECKING:
       import tensorflow as tf






class  __A							(			TensorFormatter[Mapping, "tf.Tensor", Mapping]     ):






 """simple docstring"""




 def __init__(						self					,       __A=None					,       **__A		)   ->	int:
     super().__init__(features=__A		)
     a											=tf_tensor_kwargs
     import tensorflow as tf  # noqa: import tf at initialization


 def  SCREAMING_SNAKE_CASE				(						self					,       __A		)   ->	str:
     import tensorflow as tf

     if isinstance(__A					,       __A		) and column:
         if all(
             isinstance(__A					,       tf.Tensor		) and x.shape == column[0].shape and x.dtype == column[0].dtype for x in column		):
             return tf.stack(__A		)
         elif all(
             isinstance(__A					,       (tf.Tensor, tf.RaggedTensor)		) and x.ndim == 1 and x.dtype == column[0].dtype
             for x in column		):
             # only rag 1-D tensors, otherwise some dimensions become ragged even though they were consolidated
             return tf.ragged.stack(__A		)

     return column


 def  SCREAMING_SNAKE_CASE				(						self					,       __A		)   ->	Dict:
     import tensorflow as tf

     if value is None:
         return value

     a											={}

     if isinstance(__A					,       (np.number, np.ndarray)		) and np.issubdtype(value.dtype					,       np.integer		):
         a											={'''dtype''': tf.intaa}
     elif isinstance(__A					,       (np.number, np.ndarray)		) and np.issubdtype(value.dtype					,       np.floating		):
         a											={'''dtype''': tf.floataa}
     elif config.PIL_AVAILABLE and "PIL" in sys.modules:
         import PIL.Image

         if isinstance(__A					,       PIL.Image.Image		):
             a											=np.asarray(__A		)

     return tf.convert_to_tensor(__A					,       **{**default_dtype, **self.tf_tensor_kwargs}		)


 def  SCREAMING_SNAKE_CASE				(						self					,       __A		)   ->	int:
     import tensorflow as tf

     # support for torch, tf, jax etc.
     if config.TORCH_AVAILABLE and "torch" in sys.modules:
         import torch

         if isinstance(__A					,       torch.Tensor		):
             return self._tensorize(data_struct.detach().cpu().numpy()[()]		)
     if hasattr(__A					,       '''__array__'''		) and not isinstance(__A					,       tf.Tensor		):
         a											=data_struct.__array__()
     # support for nested types like struct of list of struct
     if isinstance(__A					,       np.ndarray		):
         if data_struct.dtype == object:  # tf tensors cannot be instantied from an array of objects
             return self._consolidate([self.recursive_tensorize(__A		) for substruct in data_struct]		)
     elif isinstance(__A					,       (list, tuple)		):
         return self._consolidate([self.recursive_tensorize(__A		) for substruct in data_struct]		)
     return self._tensorize(__A		)


 def  SCREAMING_SNAKE_CASE				(						self					,       __A		)   ->	List[Any]:
     return map_nested(self._recursive_tensorize					,       __A					,       map_list=__A		)


 def  SCREAMING_SNAKE_CASE				(						self					,       __A		)   ->	Mapping:
     a											=self.numpy_arrow_extractor().extract_row(__A		)
     a											=self.python_features_decoder.decode_row(__A		)
     return self.recursive_tensorize(__A		)


 def  SCREAMING_SNAKE_CASE				(						self					,       __A		)   ->	"tf.Tensor":
     a											=self.numpy_arrow_extractor().extract_column(__A		)
     a											=self.python_features_decoder.decode_column(__A					,       pa_table.column_names[0]		)
     a											=self.recursive_tensorize(__A		)
     a											=self._consolidate(__A		)
     return column





 def  SCREAMING_SNAKE_CASE				(						self					,       __A		)   ->	Mapping:
     a											=self.numpy_arrow_extractor().extract_batch(__A		)
     a											=self.python_features_decoder.decode_batch(__A		)
     a											=self.recursive_tensorize(__A		)
     for column_name in batch:
         a											=self._consolidate(batch[column_name]		)
     return batch




"""simple docstring"""






from typing import TYPE_CHECKING

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


_lowercase					:					Any 		=		{
    "configuration_unispeech_sat": ["UNISPEECH_SAT_PRETRAINED_CONFIG_ARCHIVE_MAP", "UniSpeechSatConfig"],
}

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		_lowercase					:					Any 		=		[
		    "UNISPEECH_SAT_PRETRAINED_MODEL_ARCHIVE_LIST",
		    "UniSpeechSatForAudioFrameClassification",
		    "UniSpeechSatForCTC",
		    "UniSpeechSatForPreTraining",
		    "UniSpeechSatForSequenceClassification",
		    "UniSpeechSatForXVector",
		    "UniSpeechSatModel",
		    "UniSpeechSatPreTrainedModel",
		]

if TYPE_CHECKING:
		from .configuration_unispeech_sat import UNISPEECH_SAT_PRETRAINED_CONFIG_ARCHIVE_MAP, UniSpeechSatConfig

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_unispeech_sat import (
				    UNISPEECH_SAT_PRETRAINED_MODEL_ARCHIVE_LIST,
				    UniSpeechSatForAudioFrameClassification,
				    UniSpeechSatForCTC,
				    UniSpeechSatForPreTraining,
				    UniSpeechSatForSequenceClassification,
				    UniSpeechSatForXVector,
				    UniSpeechSatModel,
				    UniSpeechSatPreTrainedModel,
				)

else:
		import sys

		_lowercase					:					int 		=		_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)




