
    )`i0                     T    d Z ddlmZmZmZmZmZ  G d d          Z e            ZdS )z.Handler registry for managing Custom handlers.    )AnyCallableDictListOptionalc                      e Zd ZdZddZdededef         ddfdZd	ededef         ddfd
Z	d	ededef         ddfdZ
dedeedef                  fdZd	edeedef                  fdZd	edeedef                  fdZd	edefdZd	edefdZdedefdZdeddfdZd	eddfdZd	eddfdZdee         fdZdee         fdZdee         fdZddZdS )HandlerRegistryzDGeneral registry for managing handlers by name with proper priority.returnNc                 0    i | _         i | _        i | _        d S )N)	_handlers_framework_default_handlers_decorator_handlersselfs    /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/model_hosting_container_standards/common/handler/registry.py__init__zHandlerRegistry.__init__	   s    8:JL(BD       namehandler.c                     || j         |<   dS )zSet a handler by name.Nr   )r   r   r   s      r   set_handlerzHandlerRegistry.set_handler   s    &tr   handler_typec                     || j         |<   dS )zSet a framework default handler.

        Args:
            handler_type: The type of handler (e.g., 'ping', 'invoke')
            handler: The handler function to register as framework default
        Nr   r   r   r   s      r   set_framework_defaultz%HandlerRegistry.set_framework_default   s     :A(666r   c                     || j         |<   dS )zSet a decorator handler.

        Args:
            handler_type: The type of handler (e.g., 'ping', 'invoke')
            handler: The handler function to register as decorator handler
        Nr   r   s      r   set_decorator_handlerz%HandlerRegistry.set_decorator_handler   s     29 ...r   c                 6    | j                             |          S )zGet a handler by name.)r   getr   r   s     r   get_handlerzHandlerRegistry.get_handler(   s    ~!!$'''r   c                 6    | j                             |          S )zGet a framework default handler.

        Args:
            handler_type: The type of handler (e.g., 'ping', 'invoke')

        Returns:
            The framework default handler function, or None if not found
        )r   r"   r   r   s     r   get_framework_defaultz%HandlerRegistry.get_framework_default,   s     /33LAAAr   c                 6    | j                             |          S )zGet a decorator handler.

        Args:
            handler_type: The type of handler (e.g., 'ping', 'invoke')

        Returns:
            The decorator handler function, or None if not found
        )r   r"   r&   s     r   get_decorator_handlerz%HandlerRegistry.get_decorator_handler7   s     '++L999r   c                     || j         v S )zCheck if a framework default handler is registered.

        Args:
            handler_type: The type of handler (e.g., 'ping', 'invoke')

        Returns:
            True if the framework default handler is registered, False otherwise
        r   r&   s     r   has_framework_defaultz%HandlerRegistry.has_framework_defaultB   s     t???r   c                     || j         v S )zCheck if a decorator handler is registered.

        Args:
            handler_type: The type of handler (e.g., 'ping', 'invoke')

        Returns:
            True if the decorator handler is registered, False otherwise
        r   r&   s     r   has_decorator_handlerz%HandlerRegistry.has_decorator_handlerM   s     t777r   c                     || j         v S )z)Check if a handler is registered by name.r   r#   s     r   has_handlerzHandlerRegistry.has_handlerX   s    t~%%r   c                 <    | j                             |d           dS )zRemove a handler by name.N)r   popr#   s     r   remove_handlerzHandlerRegistry.remove_handler\   s     4&&&&&r   c                 <    | j                             |d           dS )z+Remove a framework default handler by type.N)r   r1   r&   s     r   remove_framework_defaultz(HandlerRegistry.remove_framework_default`   s!    (,,\4@@@@@r   c                 <    | j                             |d           dS )z#Remove a decorator handler by type.N)r   r1   r&   s     r   remove_decorator_handlerz(HandlerRegistry.remove_decorator_handlerd   s!     $$\488888r   c                 N    t          | j                                                  S )z"List all registered handler names.)listr   keysr   s    r   list_handlerszHandlerRegistry.list_handlersh   s    DN''))***r   c                 N    t          | j                                                  S )z4List all registered framework default handler types.)r8   r   r9   r   s    r   list_framework_defaultsz'HandlerRegistry.list_framework_defaultsl   s    D499;;<<<r   c                 N    t          | j                                                  S )z,List all registered decorator handler types.)r8   r   r9   r   s    r   list_decorator_handlersz'HandlerRegistry.list_decorator_handlersp   s    D,1133444r   c                     | j                                          | j                                         | j                                         dS )zClear all registered handlers.N)r   clearr   r   r   s    r   r@   zHandlerRegistry.cleart   sF    (..000 &&(((((r   )r
   N)__name__
__module____qualname____doc__r   strr   r   r   r   r    r   r$   r'   r)   boolr+   r-   r/   r2   r4   r6   r   r:   r<   r>   r@    r   r   r	   r	      s       NNE E E E
' 'hsCx.@ 'T ' ' ' '	A	A*238*<	A		A 	A 	A 	A	9	9*238*<	9		9 	9 	9 	9( (#s(1C(D ( ( ( (	B# 	B(8CQTHCU:V 	B 	B 	B 	B	:# 	:(8CQTHCU:V 	: 	: 	: 	:	@# 	@$ 	@ 	@ 	@ 	@	8# 	8$ 	8 	8 	8 	8& & & & & &'3 '4 ' ' ' 'AS AT A A A A9S 9T 9 9 9 9+tCy + + + +=c = = = =5c 5 5 5 5) ) ) ) ) )r   r	   N)	rD   typingr   r   r   r   r   r	   handler_registryrG   r   r   <module>rJ      s|    4 4 6 6 6 6 6 6 6 6 6 6 6 6 6 6r) r) r) r) r) r) r) r)l #?$$   r   