


'''simple docstring'''

import warnings
from contextlib import contextmanager

from ....processing_utils import ProcessorMixin





class   snake_case					(					lowercase    ):





  """simple docstring"""




  _lowerCamelCase						=						"MCTCTFeatureExtractor"
  _lowerCamelCase						=						"AutoTokenizer"






  def __init__(					self    ,						UpperCamelCase    ,						UpperCamelCase  ):







   """simple docstring"""
   super().__init__(UpperCamelCase    ,						UpperCamelCase  )
   lowerCamelCase_  				=						self.feature_extractor
   lowerCamelCase_  				=						False






  def __call__(					self    ,						*UpperCamelCase    ,						**UpperCamelCase  ):







   """simple docstring"""
   # For backward compatibility
   if self._in_target_context_manager:
    return self.current_processor(*UpperCamelCase    ,						**UpperCamelCase  )

   if "raw_speech" in kwargs:
    warnings.warn("Using `raw_speech` as a keyword argument is deprecated. Use `audio` instead."  )
    lowerCamelCase_  				=						kwargs.pop("raw_speech"  )
   else:
    lowerCamelCase_  				=						kwargs.pop("audio"    ,						UpperCamelCase  )
   lowerCamelCase_  				=						kwargs.pop("sampling_rate"    ,						UpperCamelCase  )
   lowerCamelCase_  				=						kwargs.pop("text"    ,						UpperCamelCase  )
   if len(UpperCamelCase  ) > 0:
    lowerCamelCase_  				=						args[0]
    lowerCamelCase_  				=						args[1:]

   if audio is None and text is None:
    raise ValueError("You need to specify either an `audio` or `text` input to process."  )

   if audio is not None:
    lowerCamelCase_  				=						self.feature_extractor(UpperCamelCase    ,						*UpperCamelCase    ,						sampling_rate=UpperCamelCase    ,						**UpperCamelCase  )
   if text is not None:
    lowerCamelCase_  				=						self.tokenizer(UpperCamelCase    ,						**UpperCamelCase  )

   if text is None:
    return inputs
   elif audio is None:
    return encodings
   else:
    lowerCamelCase_  				=						encodings["input_ids"]
    return inputs






  def 						snake_case	(					self    ,						*UpperCamelCase    ,						**UpperCamelCase  ):







   """simple docstring"""
   return self.tokenizer.batch_decode(*UpperCamelCase    ,						**UpperCamelCase  )






  def 						snake_case	(					self    ,						*UpperCamelCase    ,						**UpperCamelCase  ):







   """simple docstring"""
   # For backward compatibility
   if self._in_target_context_manager:
    return self.current_processor.pad(*UpperCamelCase    ,						**UpperCamelCase  )

   lowerCamelCase_  				=						kwargs.pop("input_features"    ,						UpperCamelCase  )
   lowerCamelCase_  				=						kwargs.pop("labels"    ,						UpperCamelCase  )
   if len(UpperCamelCase  ) > 0:
    lowerCamelCase_  				=						args[0]
    lowerCamelCase_  				=						args[1:]

   if input_features is not None:
    lowerCamelCase_  				=						self.feature_extractor.pad(UpperCamelCase    ,						*UpperCamelCase    ,						**UpperCamelCase  )
   if labels is not None:
    lowerCamelCase_  				=						self.tokenizer.pad(UpperCamelCase    ,						**UpperCamelCase  )

   if labels is None:
    return input_features
   elif input_features is None:
    return labels
   else:
    lowerCamelCase_  				=						labels["input_ids"]
    return input_features






  def 						snake_case	(					self    ,						*UpperCamelCase    ,						**UpperCamelCase  ):







   """simple docstring"""
   return self.tokenizer.decode(*UpperCamelCase    ,						**UpperCamelCase  )







  @contextmanager
  def 						snake_case	(					self  ):







   """simple docstring"""
   warnings.warn(
       "`as_target_processor` is deprecated and will be removed in v5 of Transformers. You can process your "
       "labels by using the argument `text` of the regular `__call__` method (either in the same call as "
       "your audio inputs, or in a separate call."  )
   lowerCamelCase_  				=						True
   lowerCamelCase_  				=						self.tokenizer
   yield
   lowerCamelCase_  				=						self.feature_extractor
   lowerCamelCase_  				=						False







'''simple docstring'''

import contextlib
import os
import sqlitea

import pytest

from datasets import Dataset, Features, Value
from datasets.io.sql import SqlDatasetReader, SqlDatasetWriter

from ..utils import assert_arrow_memory_doesnt_increase, assert_arrow_memory_increases, require_sqlalchemy





def __snake_case      (   UpperCAmelCase_		:		Optional[int]      ,       UpperCAmelCase_		:		Dict	):
 assert isinstance(UpperCAmelCase_      ,       UpperCAmelCase_	)
 assert dataset.num_rows == 4
 assert dataset.num_columns == 3
 assert dataset.column_names == ["col_1", "col_2", "col_3"]
 for feature, expected_dtype in expected_features.items():
  assert dataset.features[feature].dtype == expected_dtype





@require_sqlalchemy
@pytest.mark.parametrize("keep_in_memory"      ,       [False, True]	)
def __snake_case      (   UpperCAmelCase_		:		Any      ,       UpperCAmelCase_		:		Any      ,       UpperCAmelCase_		:		List[str]      ,       UpperCAmelCase_		:		Union[str, Any]	):
 lowerCamelCase_  				=						tmp_path / "cache"
 lowerCamelCase_  				=						{"col_1": "string", "col_2": "int64", "col_3": "float64"}
 with assert_arrow_memory_increases() if keep_in_memory else assert_arrow_memory_doesnt_increase():
  lowerCamelCase_  				=						SqlDatasetReader(
      "dataset"      ,       "sqlite:///" + sqlite_path      ,       cache_dir=UpperCAmelCase_      ,       keep_in_memory=UpperCAmelCase_	).read()
 _check_sql_dataset(UpperCAmelCase_      ,       UpperCAmelCase_	)





@require_sqlalchemy
@pytest.mark.parametrize(
    "features"      ,       [
        None,
        {"col_1": "string", "col_2": "int64", "col_3": "float64"},
        {"col_1": "string", "col_2": "string", "col_3": "string"},
        {"col_1": "int32", "col_2": "int32", "col_3": "int32"},
        {"col_1": "float32", "col_2": "float32", "col_3": "float32"},
    ]      ,       )
def __snake_case      (   UpperCAmelCase_		:		Any      ,       UpperCAmelCase_		:		Optional[Any]      ,       UpperCAmelCase_		:		List[str]      ,       UpperCAmelCase_		:		str	):
 lowerCamelCase_  				=						tmp_path / "cache"
 lowerCamelCase_  				=						{"col_1": "string", "col_2": "int64", "col_3": "float64"}
 lowerCamelCase_  				=						features.copy() if features else default_expected_features
 lowerCamelCase_  				=						(
     Features({feature: Value(UpperCAmelCase_	) for feature, dtype in features.items()}	) if features is not None else None
 )
 lowerCamelCase_  				=						SqlDatasetReader("dataset"      ,       "sqlite:///" + sqlite_path      ,       features=UpperCAmelCase_      ,       cache_dir=UpperCAmelCase_	).read()
 _check_sql_dataset(UpperCAmelCase_      ,       UpperCAmelCase_	)





def __snake_case      (   UpperCAmelCase_		:		Union[str, Any]	):
 with contextlib.closing(sqlitea.connect(UpperCAmelCase_	)	) as con:
  lowerCamelCase_  				=						con.cursor()
  cur.execute("SELECT * FROM dataset"	)
  for row in cur:
   yield row





@require_sqlalchemy
def __snake_case      (   UpperCAmelCase_		:		Dict      ,       UpperCAmelCase_		:		Optional[Any]      ,       UpperCAmelCase_		:		List[str]	):
 lowerCamelCase_  				=						tmp_path / "cache"
 lowerCamelCase_  				=						os.path.join(UpperCAmelCase_      ,       "tmp.sql"	)
 lowerCamelCase_  				=						SqlDatasetReader("dataset"      ,       "sqlite:///" + sqlite_path      ,       cache_dir=UpperCAmelCase_	).read()
 SqlDatasetWriter(UpperCAmelCase_      ,       "dataset"      ,       "sqlite:///" + output_sqlite_path      ,       num_proc=1	).write()

 lowerCamelCase_  				=						iter_sql_file(UpperCAmelCase_	)
 lowerCamelCase_  				=						iter_sql_file(UpperCAmelCase_	)

 for rowa, rowa in zip(UpperCAmelCase_      ,       UpperCAmelCase_	):
  assert rowa == rowa





@require_sqlalchemy
def __snake_case      (   UpperCAmelCase_		:		Union[str, Any]      ,       UpperCAmelCase_		:		Union[str, Any]      ,       UpperCAmelCase_		:		Tuple	):
 lowerCamelCase_  				=						tmp_path / "cache"
 lowerCamelCase_  				=						os.path.join(UpperCAmelCase_      ,       "tmp.sql"	)
 lowerCamelCase_  				=						SqlDatasetReader("dataset"      ,       "sqlite:///" + sqlite_path      ,       cache_dir=UpperCAmelCase_	).read()
 SqlDatasetWriter(UpperCAmelCase_      ,       "dataset"      ,       "sqlite:///" + output_sqlite_path      ,       num_proc=2	).write()

 lowerCamelCase_  				=						iter_sql_file(UpperCAmelCase_	)
 lowerCamelCase_  				=						iter_sql_file(UpperCAmelCase_	)

 for rowa, rowa in zip(UpperCAmelCase_      ,       UpperCAmelCase_	):
  assert rowa == rowa







@require_sqlalchemy
def __snake_case      (   UpperCAmelCase_		:		Any      ,       UpperCAmelCase_		:		Tuple      ,       UpperCAmelCase_		:		Tuple	):
 lowerCamelCase_  				=						tmp_path / "cache"
 lowerCamelCase_  				=						os.path.join(UpperCAmelCase_      ,       "tmp.sql"	)
 lowerCamelCase_  				=						SqlDatasetReader("dataset"      ,       "sqlite:///" + sqlite_path      ,       cache_dir=UpperCAmelCase_	).read()
 with pytest.raises(UpperCAmelCase_	):
  SqlDatasetWriter(UpperCAmelCase_      ,       "dataset"      ,       "sqlite:///" + output_sqlite_path      ,       num_proc=0	).write()



