






'''simple docstring'''



from argparse import ArgumentParser, Namespace
from typing import Any, List, Optional

from ..pipelines import Pipeline, get_supported_tasks, pipeline
from ..utils import logging
from . import BaseTransformersCLICommand


try:
 from fastapi import Body, FastAPI, HTTPException
 from fastapi.routing import APIRoute
 from pydantic import BaseModel
 from starlette.responses import JSONResponse
 from uvicorn import run

 __UpperCamelCase   :							int         =   True
except (ImportError, AttributeError):
 __UpperCamelCase   :							Union[str, Any]         =   object



 def  __UpperCAmelCase						(					*SCREAMING_SNAKE_CASE__:						Dict,       **SCREAMING_SNAKE_CASE__:						List[Any]     )	->      Dict:

    """simple docstring"""
    pass



 __UpperCamelCase   :							Tuple         =   False


__UpperCamelCase   :							Any         =   logging.get_logger("""transformers-cli/serving""")



def  __UpperCAmelCase						(					SCREAMING_SNAKE_CASE__:						Namespace     )	->      Optional[int]:

   """simple docstring"""
   __a					  =     pipeline(
       task=args.task,       model=args.model if args.model else None,       config=args.config,       tokenizer=args.tokenizer,       device=args.device,       )
   return ServeCommand(SCREAMING_SNAKE_CASE__,       args.host,       args.port,       args.workers     )
class 				__SCREAMING_SNAKE_CASE							(				_lowerCAmelCase  ):
      __a	       =42







class 				__SCREAMING_SNAKE_CASE							(				_lowerCAmelCase  ):
      __a	       =42
      __a	       =42







class 				__SCREAMING_SNAKE_CASE							(				_lowerCAmelCase  ):
      __a	       =42







class 				__SCREAMING_SNAKE_CASE							(				_lowerCAmelCase  ):
      __a	       =42







class 				__SCREAMING_SNAKE_CASE							(				_lowerCAmelCase  ):




      @staticmethod
      def 			__UpperCamelCase				(	lowerCamelCase   )				->List[str]:



         '''simple docstring'''
         __a					  =     parser.add_parser(
             'serve'			, help='CLI tool to run inference requests through REST and GraphQL endpoints.'   )
         serve_parser.add_argument(
             '--task'			, type=lowerCamelCase			, choices=get_supported_tasks()			, help='The task to run the pipeline on'			, )
         serve_parser.add_argument('--host'			, type=lowerCamelCase			, default='localhost'			, help='Interface the server will listen on.'   )
         serve_parser.add_argument('--port'			, type=lowerCamelCase			, default=8888			, help='Port the serving will listen to.'   )
         serve_parser.add_argument('--workers'			, type=lowerCamelCase			, default=1			, help='Number of http workers'   )
         serve_parser.add_argument('--model'			, type=lowerCamelCase			, help='Model\'s name or path to stored model.'   )
         serve_parser.add_argument('--config'			, type=lowerCamelCase			, help='Model\'s config name or path to stored model.'   )
         serve_parser.add_argument('--tokenizer'			, type=lowerCamelCase			, help='Tokenizer name to use.'   )
         serve_parser.add_argument(
             '--device'			, type=lowerCamelCase			, default=-1			, help='Indicate the device to run onto, -1 indicates CPU, >= 0 indicates GPU (default: -1)'			, )
         serve_parser.set_defaults(func=lowerCamelCase   )




      def __init__(	self			, lowerCamelCase			, lowerCamelCase			, lowerCamelCase			, lowerCamelCase   )				->int:



         '''simple docstring'''
         __a					  =     pipeline

         __a					  =     host
         __a					  =     port
         __a					  =     workers

         if not _serve_dependencies_installed:
            raise RuntimeError(
                'Using serve command requires FastAPI and uvicorn. '
                'Please install transformers with [serving]: pip install "transformers[serving]".'
                'Or install FastAPI and uvicorn separately.'   )
         else:
            logger.info(F"""Serving model over {host}:{port}"""   )
            __a					  =     FastAPI(
                routes=[
                    APIRoute(
                        '/'			, self.model_info			, response_model=lowerCamelCase			, response_class=lowerCamelCase			, methods=['GET']			, ),
                    APIRoute(
                        '/tokenize'			, self.tokenize			, response_model=lowerCamelCase			, response_class=lowerCamelCase			, methods=['POST']			, ),
                    APIRoute(
                        '/detokenize'			, self.detokenize			, response_model=lowerCamelCase			, response_class=lowerCamelCase			, methods=['POST']			, ),
                    APIRoute(
                        '/forward'			, self.forward			, response_model=lowerCamelCase			, response_class=lowerCamelCase			, methods=['POST']			, ),
                ]			, timeout=600			, )




      def 			__UpperCamelCase				(	self   )				->int:



         '''simple docstring'''
         run(self._app			, host=self.host			, port=self.port			, workers=self.workers   )




      def 			__UpperCamelCase				(	self   )				->int:



         '''simple docstring'''
         return ServeModelInfoResult(infos=vars(self._pipeline.model.config   )   )




      def 			__UpperCamelCase				(	self			, lowerCamelCase = Body(lowerCamelCase			, embed=lowerCamelCase   )			, lowerCamelCase = Body(lowerCamelCase			, embed=lowerCamelCase   )   )				->List[str]:



         '''simple docstring'''
         try:
            __a					  =     self._pipeline.tokenizer.tokenize(lowerCamelCase   )

            if return_ids:
               __a					  =     self._pipeline.tokenizer.convert_tokens_to_ids(lowerCamelCase   )
               return ServeTokenizeResult(tokens=lowerCamelCase			, tokens_ids=lowerCamelCase   )
            else:
               return ServeTokenizeResult(tokens=lowerCamelCase   )

         except Exception as e:
            raise HTTPException(status_code=500			, detail={'model': '', 'error': str(lowerCamelCase   )}   )




      def 			__UpperCamelCase				(	self			, lowerCamelCase = Body(lowerCamelCase			, embed=lowerCamelCase   )			, lowerCamelCase = Body(lowerCamelCase			, embed=lowerCamelCase   )			, lowerCamelCase = Body(lowerCamelCase			, embed=lowerCamelCase   )			, )				->Dict:



         '''simple docstring'''
         try:
            __a					  =     self._pipeline.tokenizer.decode(lowerCamelCase			, lowerCamelCase			, lowerCamelCase   )
            return ServeDeTokenizeResult(model=''			, text=lowerCamelCase   )
         except Exception as e:
            raise HTTPException(status_code=500			, detail={'model': '', 'error': str(lowerCamelCase   )}   )






      async def 			__UpperCamelCase				(	self			, lowerCamelCase=Body(lowerCamelCase			, embed=lowerCamelCase   )   )				->Tuple:



         '''simple docstring'''

         # Check we don't have empty string
         if len(lowerCamelCase   ) == 0:
            return ServeForwardResult(output=[]			, attention=[]   )

         try:
            # Forward through the model
            __a					  =     self._pipeline(lowerCamelCase   )
            return ServeForwardResult(output=lowerCamelCase   )
         except Exception as e:
            raise HTTPException(500			, {'error': str(lowerCamelCase   )}   )







'''simple docstring'''



import sys

__UpperCamelCase   :							List[str]         =   (
    """73167176531330624919225119674426574742355349194934"""
    """96983520312774506326239578318016984801869478851843"""
    """85861560789112949495459501737958331952853208805511"""
    """12540698747158523863050715693290963295227443043557"""
    """66896648950445244523161731856403098711121722383113"""
    """62229893423380308135336276614282806444486645238749"""
    """30358907296290491560440772390713810515859307960866"""
    """70172427121883998797908792274921901699720888093776"""
    """65727333001053367881220235421809751254540594752243"""
    """52584907711670556013604839586446706324415722155397"""
    """53697817977846174064955149290862569321978468622482"""
    """83972241375657056057490261407972968652414535100474"""
    """82166370484403199890008895243450658541227588666881"""
    """16427171479924442928230863465674813919123162824586"""
    """17866458359124566529476545682848912883142607690042"""
    """24219022671055626321111109370544217506941658960408"""
    """07198403850962455444362981230987879927244284909188"""
    """84580156166097919133875499200524063689912560717606"""
    """05886116467109405077541002256983155200055935729725"""
    """71636269561882670428252483600823257530420752963450"""
)



def  __UpperCAmelCase						(					SCREAMING_SNAKE_CASE__:						str = N     )	->      int:

   """simple docstring"""
   __a					  =     -sys.maxsize - 1
   for i in range(len(SCREAMING_SNAKE_CASE__     ) - 12     ):
      __a					  =     1
      for j in range(13     ):
         product *= int(n[i + j]     )
      if product > largest_product:
         __a					  =     product
   return largest_product


if __name__ == "__main__":
 print(f"""{solution() = }""")