
    קg                         d dl mZ ddlmZ ddlmZ  e            ZeZ G d d          Zd Z	d Z
 ee          d	             Ze  ee          d
             Zed             ZdS )    )contextmanager   )hashable)dispatchc                   2    e Zd ZdZdZd Zd ZeZd Zd Z	dS )Varz Logic Variable r   c                     t          |          dk    r%dt          j         }t          xj        dz  c_        nt          |          dk    r|d         }t                              |           }||_        |S )Nr   _r   )lenr   _idobject__new__token)clsr   objs      f/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/fx/experimental/unification/variable.pyr   zVar.__new__   sd    u::??!MMEGGqLGGGZZ1__!HEnnS!!	
    c                 0    dt          | j                  z   S )N~)strr   selfs    r   __str__zVar.__str__   s    S__$$r   c                 b    t          |           t          |          k    o| j        |j        k    S N)typer   )r   others     r   __eq__z
Var.__eq__   s'    DzzT%[[(FTZ5;-FFr   c                 H    t          t          |           | j        f          S r   )hashr   r   r   s    r   __hash__zVar.__hash__!   s    T$ZZ,---r   N)
__name__
__module____qualname____doc__r   r   r   __repr__r   r!    r   r   r   r   
   sc        
C	 	 	% % %HG G G. . . . .r   r   c                      d S )Nc                      t          |  S r   )r   )argss    r   <lambda>zvar.<locals>.<lambda>&   s
    d r   r'   r'   r   r   varr,   %   s    ###r   c                      d S )Nc                 4    d t          |           D             S )Nc                 *    g | ]}t                      S r'   )r,   ).0is     r   
<listcomp>z*vars.<locals>.<lambda>.<locals>.<listcomp>*   s    ...cee...r   )range)ns    r   r+   zvars.<locals>.<lambda>*   s    ..U1XX... r   r'   r'   r   r   varsr5   )   s    ...r   c                     dS )NTr'   )vs    r   isvarr8   -   s    4r   c                 D    t             ot          |           o| t           v S r   )_glvr   )os    r   r8   r8   4   s     x<5HQKK5AI5r   c               '   j  K   t                                           }t                               t          |                      	 dV  t                                            t                               |           dS # t                                            t                               |           w xY w)a  
    Context manager for logic variables

    Example:
        >>> # xdoctest: +SKIP("undefined vars")
        >>> from __future__ import with_statement
        >>> with variables(1):
        ...     print(isvar(1))
        True
        >>> print(isvar(1))
        False
        >>> # Normal approach
        >>> from unification import unify
        >>> x = var('x')
        >>> unify(x, 1)
        {~x: 1}
        >>> # Context Manager approach
        >>> with variables('x'):
        ...     print(unify('x', 1))
        {'x': 1}
    N)_global_logic_variablescopyupdatesetclear)	variablesold_global_logic_variabless     r   rB   rB   9   s      . "9!=!=!?!?""3y>>222C%%'''&&'ABBBBB 	 %%'''&&'ABBBBs   A= =5B2N)
contextlibr   utilsr   r   r@   r=   r:   r   r,   r5   r8   r   rB   r'   r   r   <module>rF      s   % % % % % %            #%% . . . . . . . .6$ $ $/ / / 
#    
&6 6 6 C C C C Cr   