from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


lowerCamelCase__  =					{
    '''configuration_x_clip''': [
        '''XCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''XCLIPConfig''',
        '''XCLIPTextConfig''',
        '''XCLIPVisionConfig''',
    ],
    '''processing_x_clip''': ['''XCLIPProcessor'''],
}

try:
   if not is_torch_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   lowerCamelCase__  =					[
       '''XCLIP_PRETRAINED_MODEL_ARCHIVE_LIST''',
       '''XCLIPModel''',
       '''XCLIPPreTrainedModel''',
       '''XCLIPTextModel''',
       '''XCLIPVisionModel''',
   ]

if TYPE_CHECKING:
   from .configuration_x_clip import (
       XCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP,
       XCLIPConfig,
       XCLIPTextConfig,
       XCLIPVisionConfig,
   )
   from .processing_x_clip import XCLIPProcessor

   try:
      if not is_torch_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_x_clip import (
          XCLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
          XCLIPModel,
          XCLIPPreTrainedModel,
          XCLIPTextModel,
          XCLIPVisionModel,
      )

else:
   import sys

   lowerCamelCase__  =					_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)






from functools import lru_cache

@lru_cache
def  __lowerCamelCase					( _lowercase			)       ->      int:
     if num < 0:
          raise ValueError('Number should not be negative.'			)

     return 1 if num in (0, 1) else num * factorial(num - 1			)


if __name__ == "__main__":
 import doctest

 doctest.testmod()


