
import copy
import inspect
import unittest

from transformers import PretrainedConfig, SwiftFormerConfig
from transformers.testing_utils import (
    require_torch,
    require_vision,
    slow,
    torch_device,
)
from transformers.utils import cached_property, is_torch_available, is_vision_available

from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, floats_tensor, ids_tensor
from ...test_pipeline_mixin import PipelineTesterMixin


if is_torch_available():
     import torch
     from torch import nn

     from transformers import SwiftFormerForImageClassification, SwiftFormerModel
     from transformers.models.swiftformer.modeling_swiftformer import SWIFTFORMER_PRETRAINED_MODEL_ARCHIVE_LIST


if is_vision_available():
     from PIL import Image

     from transformers import ViTImageProcessor


class        lowercase      :



  def __init__(				self       ,   A_       ,   A_=13       ,   A_=3       ,   A_=True       ,   A_=True       ,   A_=0.1       ,   A_=0.1       ,   A_=224       ,   A_=1_000       ,   A_=[3, 3, 6, 4]       ,   A_=[48, 56, 112, 220]       ,   )						->      List[str]:
    """simple docstring"""
    UpperCamelCase						=  parent
    UpperCamelCase						=  batch_size
    UpperCamelCase						=  num_channels
    UpperCamelCase						=  is_training
    UpperCamelCase						=  use_labels
    UpperCamelCase						=  hidden_dropout_prob
    UpperCamelCase						=  attention_probs_dropout_prob
    UpperCamelCase						=  num_labels
    UpperCamelCase						=  image_size
    UpperCamelCase						=  layer_depths
    UpperCamelCase						=  embed_dims



  def __UpperCamelCase				(				self )						->      Any:
    """simple docstring"""
    UpperCamelCase						=  floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size] )

    UpperCamelCase						=  None
    if self.use_labels:
      UpperCamelCase						=  ids_tensor([self.batch_size]       ,   self.num_labels )

    UpperCamelCase						=  self.get_config()

    return config, pixel_values, labels



  def __UpperCamelCase				(				self )						->      int:
    """simple docstring"""
    return SwiftFormerConfig(
        depths=self.layer_depths       ,   embed_dims=self.embed_dims       ,   mlp_ratio=4       ,   downsamples=[True, True, True, True]       ,   hidden_act='gelu'       ,   num_labels=self.num_labels       ,   down_patch_size=3       ,   down_stride=2       ,   down_pad=1       ,   drop_rate=0.0       ,   drop_path_rate=0.0       ,   use_layer_scale=_UpperCAmelCase       ,   layer_scale_init_value=1e-5       ,   )



  def __UpperCamelCase				(				self       ,   A_       ,   A_       ,   A_ )						->      Union[str, Any]:
    """simple docstring"""
    UpperCamelCase						=  SwiftFormerModel(config=_UpperCAmelCase )
    model.to(_UpperCAmelCase )
    model.eval()
    UpperCamelCase						=  model(_UpperCAmelCase )
    self.parent.assertEqual(result.last_hidden_state.shape       ,   (self.batch_size, self.embed_dims[-1], 7, 7) )



  def __UpperCamelCase				(				self       ,   A_       ,   A_       ,   A_ )						->      Union[str, Any]:
    """simple docstring"""
    UpperCamelCase						=  self.num_labels
    UpperCamelCase						=  SwiftFormerForImageClassification(_UpperCAmelCase )
    model.to(_UpperCAmelCase )
    model.eval()
    UpperCamelCase						=  model(_UpperCAmelCase       ,   labels=_UpperCAmelCase )
    self.parent.assertEqual(result.logits.shape       ,   (self.batch_size, self.num_labels) )

    UpperCamelCase						=  SwiftFormerForImageClassification(_UpperCAmelCase )
    model.to(_UpperCAmelCase )
    model.eval()

    UpperCamelCase						=  floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size] )
    UpperCamelCase						=  model(_UpperCAmelCase )
    self.parent.assertEqual(result.logits.shape       ,   (self.batch_size, self.num_labels) )



  def __UpperCamelCase				(				self )						->      Optional[int]:
    """simple docstring"""
    ((UpperCamelCase)			,						(UpperCamelCase)			,						(UpperCamelCase))						=  self.prepare_config_and_inputs()
    UpperCamelCase						=  {'pixel_values': pixel_values}
    return config, inputs_dict






@require_torch
class        lowercase      (	_SCREAMING_SNAKE_CASE						,     _SCREAMING_SNAKE_CASE						,     unittest.TestCase     ):
  __lowercase : str			  =       (SwiftFormerModel, SwiftFormerForImageClassification) if is_torch_available() else ()
  __lowercase : Any			  =       (
      {"feature-extraction": SwiftFormerModel, "image-classification": SwiftFormerForImageClassification}
      if is_torch_available()
      else {}
  )

  __lowercase : Any			  =       False
  __lowercase : Optional[Any]			  =       False
  __lowercase : List[Any]			  =       False
  __lowercase : Dict			  =       False
  __lowercase : Optional[Any]			  =       False



  def __UpperCamelCase				(				self )						->      int:
    """simple docstring"""
    UpperCamelCase						=  SwiftFormerModelTester(self )
    UpperCamelCase						=  ConfigTester(
        self       ,   config_class=_UpperCAmelCase       ,   has_text_modality=_UpperCAmelCase       ,   hidden_size=37       ,   num_attention_heads=12       ,   num_hidden_layers=12       ,   )



  def __UpperCamelCase				(				self )						->      int:
    """simple docstring"""
    self.config_tester.run_common_tests()



  @unittest.skip(reason='SwiftFormer does not use inputs_embeds' )
  def __UpperCamelCase				(				self )						->      Any:
    """simple docstring"""
    pass



  def __UpperCamelCase				(				self )						->      Union[str, Any]:
    """simple docstring"""
    UpperCamelCase			,						UpperCamelCase						=  self.model_tester.prepare_config_and_inputs_for_common()

    for model_class in self.all_model_classes:
      UpperCamelCase						=  model_class(_UpperCAmelCase )
      UpperCamelCase						=  model.get_output_embeddings()
      self.assertTrue(x is None or isinstance(_UpperCAmelCase       ,   nn.Linear ) )



  def __UpperCamelCase				(				self )						->      Tuple:
    """simple docstring"""
    UpperCamelCase			,						UpperCamelCase						=  self.model_tester.prepare_config_and_inputs_for_common()

    for model_class in self.all_model_classes:
      UpperCamelCase						=  model_class(_UpperCAmelCase )
      UpperCamelCase						=  inspect.signature(model.forward )
      # signature.parameters is an OrderedDict => so arg_names order is deterministic
      UpperCamelCase						=  [*signature.parameters.keys()]

      UpperCamelCase						=  ['pixel_values']
      self.assertListEqual(arg_names[:1]       ,   _UpperCAmelCase )



  def __UpperCamelCase				(				self )						->      int:
    """simple docstring"""
    UpperCamelCase						=  self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_model(*_UpperCAmelCase )



  def __UpperCamelCase				(				self )						->      Union[str, Any]:
    """simple docstring"""
    UpperCamelCase						=  self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_for_image_classification(*_UpperCAmelCase )



  @slow
  def __UpperCamelCase				(				self )						->      Tuple:
    """simple docstring"""




    for model_name in SWIFTFORMER_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
      UpperCamelCase						=  SwiftFormerModel.from_pretrained(_UpperCAmelCase )
      self.assertIsNotNone(_UpperCAmelCase )



  @unittest.skip(reason='SwiftFormer does not output attentions' )
  def __UpperCamelCase				(				self )						->      str:
    """simple docstring"""
    pass



  def __UpperCamelCase				(				self )						->      Tuple:
    """simple docstring"""




    def check_hidden_states_output(A_       ,   A_       ,   A_ ):
      UpperCamelCase						=  model_class(_UpperCAmelCase )
      model.to(_UpperCAmelCase )
      model.eval()

      with torch.no_grad():
        UpperCamelCase						=  model(**self._prepare_for_class(_UpperCAmelCase       ,   _UpperCAmelCase ) )

      UpperCamelCase						=  outputs.hidden_states

      UpperCamelCase						=  8
      self.assertEqual(len(_UpperCAmelCase )       ,   _UpperCAmelCase )  # TODO

      # SwiftFormer's feature maps are of shape (batch_size, embed_dims, height, width)
      # with the width and height being successively divided by 2, after every 2 blocks
      for i in range(len(_UpperCAmelCase ) ):
        self.assertEqual(
            hidden_states[i].shape       ,   torch.Size(
                [
                    self.model_tester.batch_size,
                    self.model_tester.embed_dims[i // 2],
                    (self.model_tester.image_size // 4) // 2 ** (i // 2),
                    (self.model_tester.image_size // 4) // 2 ** (i // 2),
                ] )       ,   )

    UpperCamelCase			,						UpperCamelCase						=  self.model_tester.prepare_config_and_inputs_for_common()

    for model_class in self.all_model_classes:
      UpperCamelCase						=  True
      check_hidden_states_output(_UpperCAmelCase       ,   _UpperCAmelCase       ,   _UpperCAmelCase )

      # check that output_hidden_states also work using config
      del inputs_dict["output_hidden_states"]
      UpperCamelCase						=  True

      check_hidden_states_output(_UpperCAmelCase       ,   _UpperCAmelCase       ,   _UpperCAmelCase )



  def __UpperCamelCase				(				self )						->      Optional[Any]:
    """simple docstring"""




    def _config_zero_init(A_ ):
      UpperCamelCase						=  copy.deepcopy(_UpperCAmelCase )
      for key in configs_no_init.__dict__.keys():
        if "_range" in key or "_std" in key or "initializer_factor" in key or "layer_scale" in key:
          setattr(_UpperCAmelCase       ,   _UpperCAmelCase       ,   1e-10 )
        if isinstance(getattr(_UpperCAmelCase       ,   _UpperCAmelCase       ,   _UpperCAmelCase )       ,   _UpperCAmelCase ):
          UpperCamelCase						=  _config_zero_init(getattr(_UpperCAmelCase       ,   _UpperCAmelCase ) )
          setattr(_UpperCAmelCase       ,   _UpperCAmelCase       ,   _UpperCAmelCase )
      return configs_no_init

    UpperCamelCase			,						UpperCamelCase						=  self.model_tester.prepare_config_and_inputs_for_common()

    UpperCamelCase						=  _config_zero_init(_UpperCAmelCase )
    for model_class in self.all_model_classes:
      UpperCamelCase						=  model_class(config=_UpperCAmelCase )
      for name, param in model.named_parameters():
        if param.requires_grad:
          self.assertIn(
              ((param.data.mean() * 1e9) / 1e9).round().item()       ,   [0.0, 1.0]       ,   msg=F'''Parameter {name} of model {model_class} seems not properly initialized'''       ,   )



  @unittest.skip('Will be fixed soon by reducing the size of the model used for common tests.' )
  def __UpperCamelCase				(				self )						->      Tuple:
    """simple docstring"""
    pass






def    A (      )     ->						List[Any]:
  '''simple docstring'''

  UpperCamelCase						=  Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'				)
  return image


@require_torch
@require_vision
class        lowercase      (	unittest.TestCase     ):



  @cached_property
  def __UpperCamelCase				(				self )						->      Optional[int]:
    """simple docstring"""
    return ViTImageProcessor.from_pretrained('MBZUAI/swiftformer-xs' ) if is_vision_available() else None



  @slow
  def __UpperCamelCase				(				self )						->      str:
    """simple docstring"""
    UpperCamelCase						=  SwiftFormerForImageClassification.from_pretrained('MBZUAI/swiftformer-xs' ).to(_UpperCAmelCase )

    UpperCamelCase						=  self.default_image_processor
    UpperCamelCase						=  prepare_img()
    UpperCamelCase						=  image_processor(images=_UpperCAmelCase       ,   return_tensors='pt' ).to(_UpperCAmelCase )

    # forward pass
    with torch.no_grad():
      UpperCamelCase						=  model(**_UpperCAmelCase )

    # verify the logits
    UpperCamelCase						=  torch.Size((1, 1_000) )
    self.assertEqual(outputs.logits.shape       ,   _UpperCAmelCase )

    UpperCamelCase						=  torch.tensor([[-2.1703e00, 2.1107e00, -2.0811e00]] ).to(_UpperCAmelCase )
    self.assertTrue(torch.allclose(outputs.logits[0, :3]       ,   _UpperCAmelCase       ,   atol=1e-4 ) )


import argparse
import json
import os

import fairseq
import torch
from fairseq.data import Dictionary

from transformers import (
    WavaVecaConformerConfig,
    WavaVecaConformerForCTC,
    WavaVecaConformerForPreTraining,
    WavaVecaCTCTokenizer,
    WavaVecaFeatureExtractor,
    WavaVecaProcessor,
    logging,
)


logging.set_verbosity_info()
_UpperCAmelCase      :				Tuple          = logging.get_logger(__name__)

_UpperCAmelCase      :				Tuple          = {
    "post_extract_proj": "feature_projection.projection",
    "encoder.pos_conv.0": "encoder.pos_conv_embed.conv",
    "self_attn.linear_k": "encoder.layers.*.self_attn.linear_k",
    "self_attn.linear_v": "encoder.layers.*.self_attn.linear_v",
    "self_attn.linear_q": "encoder.layers.*.self_attn.linear_q",
    "self_attn.pos_bias_u": "encoder.layers.*.self_attn.pos_bias_u",
    "self_attn.pos_bias_v": "encoder.layers.*.self_attn.pos_bias_v",
    "self_attn.linear_out": "encoder.layers.*.self_attn.linear_out",
    "self_attn.linear_pos": "encoder.layers.*.self_attn.linear_pos",
    "self_attn.rotary_emb": "encoder.embed_positions",
    "self_attn_layer_norm": "encoder.layers.*.self_attn_layer_norm",
    "conv_module.pointwise_conv1": "encoder.layers.*.conv_module.pointwise_conv1",
    "conv_module.pointwise_conv2": "encoder.layers.*.conv_module.pointwise_conv2",
    "conv_module.depthwise_conv": "encoder.layers.*.conv_module.depthwise_conv",
    "conv_module.batch_norm": "encoder.layers.*.conv_module.batch_norm",
    "conv_module.layer_norm": "encoder.layers.*.conv_module.layer_norm",
    "ffn1.w_1": "encoder.layers.*.ffn1.intermediate_dense",
    "ffn1.w_2": "encoder.layers.*.ffn1.output_dense",
    "ffn1.layer_norm": "encoder.layers.*.ffn1_layer_norm",
    "ffn2.w_1": "encoder.layers.*.ffn2.intermediate_dense",
    "ffn2.w_2": "encoder.layers.*.ffn2.output_dense",
    "ffn2.layer_norm": "encoder.layers.*.ffn2_layer_norm",
    "final_layer_norm": "encoder.layers.*.final_layer_norm",
    "encoder.layer_norm": "encoder.layer_norm",
    "w2v_model.layer_norm": "feature_projection.layer_norm",
    "quantizer.weight_proj": "quantizer.weight_proj",
    "quantizer.vars": "quantizer.codevectors",
    "project_q": "project_q",
    "final_proj": "project_hid",
    "w2v_encoder.proj": "lm_head",
    "mask_emb": "masked_spec_embed",
}
_UpperCAmelCase      :				Any          = [
    "lm_head",
    "quantizer.weight_proj",
    "quantizer.codevectors",
    "project_q",
    "project_hid",
]


def    A (      lowercase					, lowercase					, lowercase					, lowercase					, lowercase				)     ->						Dict:
		'''simple docstring'''

		for attribute in key.split('.'				):
				UpperCamelCase						=  getattr(lowercase					, lowercase				)

		if weight_type is not None:
				UpperCamelCase						=  getattr(lowercase					, lowercase				).shape
		else:
				UpperCamelCase						=  hf_pointer.shape

		if hf_shape != value.shape:
				raise ValueError(
				    f'''Shape of hf {key + '.' + weight_type if weight_type is not None else ''} is {hf_shape}, but should be'''
				    f''' {value.shape} for {full_name}'''				)

		if weight_type == "weight":
				UpperCamelCase						=  value
		elif weight_type == "weight_g":
				UpperCamelCase						=  value
		elif weight_type == "weight_v":
				UpperCamelCase						=  value
		elif weight_type == "bias":
				UpperCamelCase						=  value
		elif weight_type == "running_mean":
				UpperCamelCase						=  value
		elif weight_type == "running_var":
				UpperCamelCase						=  value
		elif weight_type == "num_batches_tracked":
				UpperCamelCase						=  value
		elif weight_type == "inv_freq":
				UpperCamelCase						=  value
		else:
				UpperCamelCase						=  value

		logger.info(f'''{key + '.' + weight_type if weight_type is not None else ''} was initialized from {full_name}.'''				)


def    A (      lowercase					, lowercase					, lowercase				)     ->						Any:
		'''simple docstring'''

		UpperCamelCase						=  []
		UpperCamelCase						=  fairseq_model.state_dict()

		UpperCamelCase						=  hf_model.wavaveca_conformer.feature_extractor

		for name, value in fairseq_dict.items():
				UpperCamelCase						=  False
				if "conv_layers" in name:
						load_conv_layer(
						    lowercase					, lowercase					, lowercase					, lowercase					, hf_model.config.feat_extract_norm == 'group'					, )
						UpperCamelCase						=  True
				else:
						for key, mapped_key in MAPPING.items():
								UpperCamelCase						=  'wav2vec2_conformer.' + mapped_key if mapped_key not in TOP_LEVEL_KEYS else mapped_key
								if key in name or key.split('w2v_model.'				)[-1] == name.split('.'				)[0]:
										UpperCamelCase						=  True
										if "*" in mapped_key:
												UpperCamelCase						=  name.split(lowercase				)[0].split('.'				)[-2]
												UpperCamelCase						=  mapped_key.replace('*'					, lowercase				)
										if "pos_bias_u" in name:
												UpperCamelCase						=  None
										elif "pos_bias_v" in name:
												UpperCamelCase						=  None
										elif "weight_g" in name:
												UpperCamelCase						=  'weight_g'
										elif "weight_v" in name:
												UpperCamelCase						=  'weight_v'
										elif "bias" in name:
												UpperCamelCase						=  'bias'
										elif "weight" in name:
												# TODO: don't match quantizer.weight_proj
												UpperCamelCase						=  'weight'
										elif "running_mean" in name:
												UpperCamelCase						=  'running_mean'
										elif "inv_freq" in name:
												UpperCamelCase						=  'inv_freq'
										elif "running_var" in name:
												UpperCamelCase						=  'running_var'
										elif "num_batches_tracked" in name:
												UpperCamelCase						=  'num_batches_tracked'
										else:
												UpperCamelCase						=  None
										set_recursively(lowercase					, lowercase					, lowercase					, lowercase					, lowercase				)
								continue
				if not is_used:
						unused_weights.append(lowercase				)

		logger.warning(f'''Unused weights: {unused_weights}'''				)


def    A (      lowercase					, lowercase					, lowercase					, lowercase					, lowercase				)     ->						Optional[int]:
		'''simple docstring'''

		UpperCamelCase						=  full_name.split('conv_layers.'				)[-1]
		UpperCamelCase						=  name.split('.'				)
		UpperCamelCase						=  int(items[0]				)
		UpperCamelCase						=  int(items[1]				)

		if type_id == 0:
				if "bias" in name:
						if value.shape != feature_extractor.conv_layers[layer_id].conv.bias.data.shape:
								raise ValueError(
								    f'''{full_name} has size {value.shape}, but'''
								    f''' {feature_extractor.conv_layers[layer_id].conv.bias.data.shape} was found.'''				)
						UpperCamelCase						=  value
						logger.info(f'''Feat extract conv layer {layer_id} was initialized from {full_name}.'''				)
				elif "weight" in name:
						if value.shape != feature_extractor.conv_layers[layer_id].conv.weight.data.shape:
								raise ValueError(
								    f'''{full_name} has size {value.shape}, but'''
								    f''' {feature_extractor.conv_layers[layer_id].conv.weight.data.shape} was found.'''				)
						UpperCamelCase						=  value
						logger.info(f'''Feat extract conv layer {layer_id} was initialized from {full_name}.'''				)
		elif (type_id == 2 and not use_group_norm) or (type_id == 2 and layer_id == 0 and use_group_norm):
				if "bias" in name:
						if value.shape != feature_extractor.conv_layers[layer_id].layer_norm.bias.data.shape:
								raise ValueError(
								    f'''{full_name} has size {value.shape}, but'''
								    f''' {feature_extractor.conv_layers[layer_id].layer_norm.bias.data.shape} was found.'''				)
						UpperCamelCase						=  value
						logger.info(f'''Feat extract layer norm weight of layer {layer_id} was initialized from {full_name}.'''				)
				elif "weight" in name:
						if value.shape != feature_extractor.conv_layers[layer_id].layer_norm.weight.data.shape:
								raise ValueError(
								    f'''{full_name} has size {value.shape}, but'''
								    f''' {feature_extractor.conv_layers[layer_id].layer_norm.weight.data.shape} was found.'''				)
						UpperCamelCase						=  value
						logger.info(f'''Feat extract layer norm weight of layer {layer_id} was initialized from {full_name}.'''				)
		else:
				unused_weights.append(lowercase				)


@torch.no_grad()
def    A (      lowercase					, lowercase					, lowercase=None					, lowercase=None					, lowercase=True				)     ->						int:
		'''simple docstring'''

		if config_path is not None:
				UpperCamelCase						=  WavaVecaConformerConfig.from_pretrained(lowercase					, hidden_act='swish'				)
		else:
				UpperCamelCase						=  WavaVecaConformerConfig()

		if "rope" in checkpoint_path:
				UpperCamelCase						=  'rotary'

		if is_finetuned:
				if dict_path:
						UpperCamelCase						=  Dictionary.load(lowercase				)

						# important change bos & pad token id since CTC symbol is <pad> and
						# not <s> as in fairseq
						UpperCamelCase						=  target_dict.pad_index
						UpperCamelCase						=  target_dict.bos_index
						UpperCamelCase						=  target_dict.eos_index
						UpperCamelCase						=  len(target_dict.symbols				)
						UpperCamelCase						=  os.path.join(lowercase					, 'vocab.json'				)
						if not os.path.isdir(lowercase				):
								logger.error('--pytorch_dump_folder_path ({}) should be a directory'.format(lowercase				)				)
								return
						os.makedirs(lowercase					, exist_ok=lowercase				)
						UpperCamelCase						=  target_dict.indices

						# fairseq has the <pad> and <s> switched
						UpperCamelCase						=  0
						UpperCamelCase						=  1
						with open(lowercase					, 'w'					, encoding='utf-8'				) as vocab_handle:
								json.dump(lowercase					, lowercase				)
						UpperCamelCase						=  WavaVecaCTCTokenizer(
						    lowercase					, unk_token=target_dict.unk_word					, pad_token=target_dict.pad_word					, bos_token=target_dict.bos_word					, eos_token=target_dict.eos_word					, word_delimiter_token='|'					, do_lower_case=lowercase					, )
						UpperCamelCase						=  True if config.feat_extract_norm == 'layer' else False
						UpperCamelCase						=  WavaVecaFeatureExtractor(
						    feature_size=1					, sampling_rate=16_000					, padding_value=0					, do_normalize=lowercase					, return_attention_mask=lowercase					, )
						UpperCamelCase						=  WavaVecaProcessor(feature_extractor=lowercase					, tokenizer=lowercase				)
						processor.save_pretrained(lowercase				)

				UpperCamelCase						=  WavaVecaConformerForCTC(lowercase				)
		else:
				UpperCamelCase						=  WavaVecaConformerForPreTraining(lowercase				)

		if is_finetuned:
				UpperCamelCase			,						UpperCamelCase			,						UpperCamelCase						=  fairseq.checkpoint_utils.load_model_ensemble_and_task(
				    [checkpoint_path]					, arg_overrides={'data': '/'.join(dict_path.split('/'				)[:-1]				)}				)
		else:
				UpperCamelCase						=  argparse.Namespace(task='audio_pretraining'				)
				UpperCamelCase						=  fairseq.tasks.setup_task(lowercase				)

				UpperCamelCase			,						UpperCamelCase			,						UpperCamelCase						=  fairseq.checkpoint_utils.load_model_ensemble_and_task([checkpoint_path]					, task=lowercase				)

		UpperCamelCase						=  model[0].eval()

		recursively_load_weights(lowercase					, lowercase					, not is_finetuned				)

		hf_wavavec.save_pretrained(lowercase				)


if __name__ == "__main__":
					_UpperCAmelCase      :				Tuple          = argparse.ArgumentParser()
					parser.add_argument("--pytorch_dump_folder_path", default=None, type=str, help="Path to the output PyTorch model.")
					parser.add_argument("--checkpoint_path", default=None, type=str, help="Path to fairseq checkpoint")
					parser.add_argument("--dict_path", default=None, type=str, help="Path to dict of fine-tuned model")
					parser.add_argument("--config_path", default=None, type=str, help="Path to hf config.json of model to convert")
					parser.add_argument(
					    "--not_finetuned", action="store_true", help="Whether the model to convert is a fine-tuned model or not"
					)
					_UpperCAmelCase      :				Dict          = parser.parse_args()
					convert_wavaveca_conformer_checkpoint(
					    args.checkpoint_path, args.pytorch_dump_folder_path, args.config_path, args.dict_path, not args.not_finetuned
					)
