from typing import TYPE_CHECKING

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


_lowercase							:      List[str]      							={
    '''configuration_wav2vec2''': ['''WAV_2_VEC_2_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''Wav2Vec2Config'''],
    '''feature_extraction_wav2vec2''': ['''Wav2Vec2FeatureExtractor'''],
    '''processing_wav2vec2''': ['''Wav2Vec2Processor'''],
    '''tokenization_wav2vec2''': ['''Wav2Vec2CTCTokenizer''', '''Wav2Vec2Tokenizer'''],
}


try:
    if not is_torch_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    _lowercase							:      Dict      							=[
        '''WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST''',
        '''Wav2Vec2ForAudioFrameClassification''',
        '''Wav2Vec2ForCTC''',
        '''Wav2Vec2ForMaskedLM''',
        '''Wav2Vec2ForPreTraining''',
        '''Wav2Vec2ForSequenceClassification''',
        '''Wav2Vec2ForXVector''',
        '''Wav2Vec2Model''',
        '''Wav2Vec2PreTrainedModel''',
    ]

try:
    if not is_tf_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    _lowercase							:      int      							=[
        '''TF_WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST''',
        '''TFWav2Vec2ForCTC''',
        '''TFWav2Vec2Model''',
        '''TFWav2Vec2PreTrainedModel''',
        '''TFWav2Vec2ForSequenceClassification''',
    ]

try:
    if not is_flax_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    _lowercase							:      List[str]      							=[
        '''FlaxWav2Vec2ForCTC''',
        '''FlaxWav2Vec2ForPreTraining''',
        '''FlaxWav2Vec2Model''',
        '''FlaxWav2Vec2PreTrainedModel''',
    ]


if TYPE_CHECKING:
    from .configuration_wavaveca import WAV_2_VEC_2_PRETRAINED_CONFIG_ARCHIVE_MAP, WavaVecaConfig
    from .feature_extraction_wavaveca import WavaVecaFeatureExtractor
    from .processing_wavaveca import WavaVecaProcessor
    from .tokenization_wavaveca import WavaVecaCTCTokenizer, WavaVecaTokenizer

    try:
        if not is_torch_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_wavaveca import (
            WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST,
            WavaVecaForAudioFrameClassification,
            WavaVecaForCTC,
            WavaVecaForMaskedLM,
            WavaVecaForPreTraining,
            WavaVecaForSequenceClassification,
            WavaVecaForXVector,
            WavaVecaModel,
            WavaVecaPreTrainedModel,
        )

    try:
        if not is_tf_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_tf_wavaveca import (
            TF_WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST,
            TFWavaVecaForCTC,
            TFWavaVecaForSequenceClassification,
            TFWavaVecaModel,
            TFWavaVecaPreTrainedModel,
        )

    try:
        if not is_flax_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_tf_wavaveca import (
            FlaxWavaVecaForCTC,
            FlaxWavaVecaForPreTraining,
            FlaxWavaVecaModel,
            FlaxWavaVecaPreTrainedModel,
        )


else:
    import sys

    _lowercase							:      Dict      							=_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)







def A__  (			lowercase:     int					)				->		int:
       if not isinstance(lowercase,		lowercase					) or number < 0:
              raise ValueError('Input must be a non-negative integer'					)

       A						:     Any         =0
       while number:
              # This way we arrive at next set bit (next 1) instead of looping
              # through each bit and checking for 1s hence the
              # loop won't run 32 times it will only run the number of `1` times
              number &= number - 1
              count += 1
       return count


if __name__ == "__main__":
    import doctest

    doctest.testmod()






