





from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tokenizers_available, is_torch_available


lowerCamelCase			:							int       ={
    '''configuration_realm''': ['''REALM_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''RealmConfig'''],
    '''tokenization_realm''': ['''RealmTokenizer'''],
}

try:
 if not is_tokenizers_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCamelCase			:							Tuple       =['''RealmTokenizerFast''']

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCamelCase			:							Union[str, Any]       =[
     '''REALM_PRETRAINED_MODEL_ARCHIVE_LIST''',
     '''RealmEmbedder''',
     '''RealmForOpenQA''',
     '''RealmKnowledgeAugEncoder''',
     '''RealmPreTrainedModel''',
     '''RealmReader''',
     '''RealmScorer''',
     '''load_tf_weights_in_realm''',
 ]
 lowerCamelCase			:							Dict       =['''RealmRetriever''']


if TYPE_CHECKING:
 from .configuration_realm import REALM_PRETRAINED_CONFIG_ARCHIVE_MAP, RealmConfig
 from .tokenization_realm import RealmTokenizer

 try:
  if not is_tokenizers_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .tokenization_realm import RealmTokenizerFast

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_realm import (
      REALM_PRETRAINED_MODEL_ARCHIVE_LIST,
      RealmEmbedder,
      RealmForOpenQA,
      RealmKnowledgeAugEncoder,
      RealmPreTrainedModel,
      RealmReader,
      RealmScorer,
      load_tf_weights_in_realm,
  )
  from .retrieval_realm import RealmRetriever


else:
 import sys

 lowerCamelCase			:							str       =_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)







from __future__ import annotations







def 	SCREAMING_SNAKE_CASE							(      __lowerCAmelCase    )				->			list[int]:
     assert (
         isinstance(__lowerCAmelCase      ,					__lowerCAmelCase    ) and mask > 0
     ), f'mask needs to be positive integer, your input {mask}'
     UpperCamelCase__    :     Any        =						[]
     UpperCamelCase__    :     int        =						mask

     while submask:
          all_submasks.append(__lowerCAmelCase    )
          UpperCamelCase__    :     List[str]        =						(submask - 1) & mask

     return all_submasks


if __name__ == "__main__":
 import doctest

 doctest.testmod()