
    Vh                         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y)    )contextmanager   )dispatch)hashablec                   0    e Zd ZdZdZd Zd ZeZd Zd Z	y)VarzLogic Variabler   c                     t        |      dk(  r-dt        j                   }t        xj                  dz  c_        nt        |      dk(  r|d   }t        j	                  |       }||_        |S )Nr   _r   )lenr   _idobject__new__token)clsr   objs      Z/home/dcms/DCMS/lib/python3.12/site-packages/torch/fx/experimental/unification/variable.pyr   zVar.__new__   sW    u:?yMEGGqLGZ1_!HEnnS!	
    c                 2    dt        | j                        z   S )N~)strr   selfs    r   __str__zVar.__str__   s    S_$$r   c                 f    t        |       t        |      k(  xr | j                  |j                  k(  S N)typer   )r   others     r   __eq__z
Var.__eq__!   s'    DzT%[(FTZZ5;;-FFr   c                 B    t        t        |       | j                  f      S r   )hashr   r   r   s    r   __hash__zVar.__hash__$   s    T$Z,--r   N)
__name__
__module____qualname____doc__r   r   r   __repr__r   r!    r   r   r   r      s&    
C	% H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                 N    t        |       D cg c]  }t                c}S c c}w r   )ranger,   )nis     r   r+   zvars.<locals>.<lambda>-   s    U1X.ce. .s   "r'   r'   r   r   varsr2   ,   s    ..r   c                      y)NTr'   )vs    r   isvarr5   0   s    r   c                 @    t           xr t        |       xr | t         v S r   )_glvr   )os    r   r5   r5   8   s    x<5HQK5AI5r   c               '   (  K   t         j                         }t         j                  t        |              	 d t         j	                          t         j                  |       y# t         j	                          t         j                  |       w xY w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   r?   r?   =   sk     . "9!=!=!?""3y>2C%%'&&'AB 	 %%'&&'ABs   3BA$ *B$+BBN)
contextlibr   r   utilsr   r=   r:   r7   r   r,   r2   r5   r   r?   r'   r   r   <module>rC      s}    %   % . .8$/ 
#   
&6 6 C Cr   