
    kKj	                        d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlmZmZ ddlmZ ed	   Z e
d
      Z eej'                         dz        ZdZe G d d             Ze G d d             Zy)z5Task configuration primitives for FastMCP components.    )annotationsN)Callable)	dataclass)	timedelta)AnyLiteral)is_coroutine_function)	forbiddenoptionalrequired   )secondsi  i`  c                  .    e Zd ZU dZdZded<   dZded<   y)TaskMetazMetadata for task-augmented execution requests.

    Attributes:
        ttl: Client-requested TTL in milliseconds. If None, uses server default.
        fn_key: Docket routing key. Auto-derived from component name if None.
    Nz
int | Nonettlz
str | Nonefn_key)__name__
__module____qualname____doc__r   __annotations__r        h/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/fastmcp/utilities/tasks.pyr   r      s     CFJr   r   c                  P    e Zd ZU dZdZded<   eZded<   edd       Z	ddZ
dd	Zy
)
TaskConfiga8  Configuration for MCP background task execution.

    Controls how a component handles task-augmented requests:

    - ``forbidden``: Component does not support task execution.
    - ``optional``: Component supports both synchronous and task execution.
    - ``required``: Component requires task execution.
    r   TaskModemoder   poll_intervalc                &     | |rd      S d      S )z,Convert a boolean task flag to a TaskConfig.r   r
   r   r   )clsvalues     r   	from_boolzTaskConfig.from_bool0   s     e
====r   c                     | j                   dk7  S )z0Check if this component supports task execution.r
   r!   )selfs    r   supports_taskszTaskConfig.supports_tasks5   s    yyK''r   c                F   | j                         syddlm}  |d| d       |}t        j                  |      s1t        |t        j                        st        |      r|j                  }t        |t              r|j                  }t        |      st        d| d      y)z=Validate that a function is compatible with this task config.Nr   )require_docketz`task=True` on function ''z`' uses a sync function but has task execution enabled. Background tasks require async functions.)r'   fastmcp.server.dependenciesr)   inspect	isroutine
isinstance	functoolspartialcallable__call__staticmethod__func__r	   
ValueError)r&   fnnamer)   fn_to_checks        r   validate_functionzTaskConfig.validate_function9   s    ""$>24&:;!!"%r9#4#45++Kk<0%..K$[1D6 < <  2r   N)r#   boolreturnr   )r;   r:   )r6   zCallable[..., Any]r7   strr;   None)r   r   r   r   r   r   DEFAULT_POLL_INTERVALr   classmethodr$   r'   r9   r   r   r   r   r   "   s9      D(4M94> >(r   r   )r   
__future__r   r/   r,   collections.abcr   dataclassesr   datetimer   typingr   r   fastmcp.utilities.async_utilsr	   r   r>   inttotal_secondsDEFAULT_POLL_INTERVAL_MSDEFAULT_TTL_MSr   r   r   r   r   <module>rJ      s    ; "   $ !   ?67!!, 4BBDtKL  	 	 	 - - -r   