o
    GgS                     @   s~  d Z ddlmZ ddlZddlmZ dd Zdd Zd2d	d
ZG dd deZ	e	de
fi Zee_de_ edfddZedfddZedfddZedfddZefddZefddZG dd dZdd Zdd  ZG d!d" d"ZG d#d$ d$Ze ZG d%d& d&eZe ZG d'd( d(ed)ZG d*d+ d+ed)ZG d,d- d-ed)ZG d.d/ d/ed)Z eeee fD ]
Z!d0j"e!jd1e!_ q[!dS )3zDefines experimental extensions to the standard "typing" module that are
supported by the mypy typechecker.

Example usage:
    from mypy_extensions import TypedDict
    )AnyN_type_checkc              	   C   s<   zt djd dvrtdW dS  ttfy   Y dS w )N   __name__)abc	functoolstypingz4TypedDict does not support instance and class checksF)sys	_getframe	f_globals	TypeErrorAttributeError
ValueError)clsother r   R/var/www/html/AyurvedaChatbot/venv/lib/python3.10/site-packages/mypy_extensions.py_check_fails   s   r   c                 O   s   t |i |S N)dict)r   argskwargsr   r   r   	_dict_new   s   r   c              	   K   st   | dd}|d u r|}n|rtdt||d}ztdjdd|d< W n ttfy3   Y nw t	|d	|S )
NtotalTz@TypedDict takes either a dict or keyword arguments, but not both)__annotations__	__total__r   r   __main__
__module__r   )
popr   r   r
   r   r   getr   r   _TypedDictMeta)r   	_typename_fieldsr   r   nsr   r   r   _typeddict_new   s   r%   c                       s&   e Zd Zd fdd	Ze ZZ  ZS )r!   Tc                    s   |dkrt nt|d< tt| | |tf|}|di }d  fdd| D }|D ]}||j	di  q+||_
t|dsC||_|S )N	TypedDict__new__r   z?TypedDict('Name', {f0: t0, f1: t1, ...}); each t must be a typec                    s   i | ]
\}}|t | qS r   r   ).0ntpmsgr   r   
<dictcomp>=   s    z*_TypedDictMeta.__new__.<locals>.<dictcomp>r   )r%   r   superr!   r'   r   r    itemsupdate__dict__r   hasattrr   )r   namebasesr$   r   tp_dictannsbase	__class__r+   r   r'   1   s   
z_TypedDictMeta.__new__)T)r   r   __qualname__r'   r   __instancecheck____subclasscheck____classcell__r   r   r8   r   r!   0   s    r!   r&   a  A simple typed name space. At runtime it is equivalent to a plain dict.

    TypedDict creates a dictionary type that expects all of its
    instances to have a certain set of keys, with each key
    associated with a value of a consistent type. This expectation
    is not checked at runtime but is only enforced by typecheckers.
    Usage::

        Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': str})
        a: Point2D = {'x': 1, 'y': 2, 'label': 'good'}  # OK
        b: Point2D = {'z': 3, 'label': 'bad'}           # Fails type check
        assert Point2D(x=1, y=2, label='first') == dict(x=1, y=2, label='first')

    The type info could be accessed via Point2D.__annotations__. TypedDict
    supports two additional equivalent forms::

        Point2D = TypedDict('Point2D', x=int, y=int, label=str)

        class Point2D(TypedDict):
            x: int
            y: int
            label: str

    The latter syntax is only supported in Python 3.6+, while two other
    syntax forms work for 3.2+
    c                 C      | S )zA normal positional argumentr   typer3   r   r   r   Argk      rA   c                 C   r>   )z*A positional argument with a default valuer   r?   r   r   r   
DefaultArgp   rB   rC   c                 C   r>   )zA keyword-only argumentr   r?   r   r   r   NamedArgu   rB   rD   c                 C   r>   )z,A keyword-only argument with a default valuer   r?   r   r   r   DefaultNamedArgz   rB   rE   c                 C   r>   )z*A *args-style variadic positional argumentr   r@   r   r   r   VarArg   rB   rG   c                 C   r>   )z*A **kwargs-style variadic keyword argumentr   rF   r   r   r   KwArg   rB   rH   c                   @   s   e Zd ZdS )NoReturnN)r   r   r:   r   r   r   r   rI      s    rI   c                 C   r>   r   r   )r   r   r   r   trait   s   rJ   c                  O   s   dd S )Nc                 S   r>   r   r   )xr   r   r   <lambda>   s    zmypyc_attr.<locals>.<lambda>r   )attrskwattrsr   r   r   
mypyc_attr   s   rO   c                   @   s   e Zd Zdd Zdd ZdS )_FlexibleAliasClsAppliedc                 C   s
   || _ d S r   val)selfrR   r   r   r   __init__      
z!_FlexibleAliasClsApplied.__init__c                 C   s   | j S r   rQ   rS   r   r   r   r   __getitem__   s   z$_FlexibleAliasClsApplied.__getitem__N)r   r   r:   rT   rW   r   r   r   r   rP      s    rP   c                   @      e Zd Zdd ZdS )_FlexibleAliasClsc                 C   s   t |d S )N)rP   rV   r   r   r   rW      s   z_FlexibleAliasCls.__getitem__N)r   r   r:   rW   r   r   r   r   rY          rY   c                   @   rX   )_NativeIntMetac                 C   s
   t |tS r   )
isinstanceint)r   instr   r   r   r;      rU   z _NativeIntMeta.__instancecheck__N)r   r   r:   r;   r   r   r   r   r\      r[   r\   c                   @      e Zd ZdefddZdS )i64r   c                 C      |t ur	t||S t|S r   	_sentinelr^   r   rK   r7   r   r   r   r'         
zi64.__new__Nr   r   r:   rd   r'   r   r   r   r   ra          ra   )	metaclassc                   @   r`   )i32r   c                 C   rb   r   rc   re   r   r   r   r'      rf   zi32.__new__Nrg   r   r   r   r   rj      rh   rj   c                   @   r`   )i16r   c                 C   rb   r   rc   re   r   r   r   r'      rf   zi16.__new__Nrg   r   r   r   r   rk      rh   rk   c                   @   r`   )u8r   c                 C   rb   r   rc   re   r   r   r   r'      rf   z
u8.__new__Nrg   r   r   r   r   rl      rh   rl   a/  A native fixed-width integer type when used with mypyc.

        In code not compiled with mypyc, behaves like the 'int' type in these
        runtime contexts:

        * {name}(x[, base=n]) converts a number or string to 'int'
        * isinstance(x, {name}) is the same as isinstance(x, int)
        )r3   r   )#__doc__r	   r   r
   r   r   r   r%   r@   r!   r   r&   r   r   rA   rC   rD   rE   rG   rH   rI   rJ   rO   rP   rY   FlexibleAliasr\   objectrd   ra   rj   rk   rl   	_int_typeformatr   r   r   r   <module>   sH    

!	