
    ^j	                        U d dl mZ d dlmZ d dlmZ erd dlmZmZm	Z	 d dlm
Z
 ddlmZ ddlmZ  e       Zd	ed
<   eZ G d d      ZddZddZ ee      dd       Ze  ee      dd       Zedd       Zy)    )annotations)contextmanager)TYPE_CHECKING)Callable	GeneratorHashable)Literal   )dispatch)hashablezset[Hashable]_global_logic_variablesc                  8    e Zd ZdZdZddZd	dZeZd
dZd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      u/var/www/ramen.bs-engineer-server.com/venv/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                d    t        |       t        |      u 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)r   r   returnr   )r)   r   )r$   r   r)   bool)r)   int)
__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>0   s
    d r   r1   r1   r   r   varr6   /   s    ##r   c                     d S )Nc                N    t        |       D cg c]  }t                c}S c c}w r"   )ranger6   )nis     r   r5   zvars.<locals>.<lambda>4   s    U1X.ce. .s   "r1   r1   r   r   varsr<   3   s    ..r   c                     y)NTr1   )vs    r   isvarr?   7   s    r   c                N    t        t        xr t        |       xr | t        v       S r"   )r*   _glvr   )os    r   r?   r?   ?   s    2!2d33r   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)r   copyupdatesetclear)	variablesold_global_logic_variabless     r   rH   rH   D   sk     . "9!=!=!?""3y>2C%%'&&'AB 	 %%'&&'ABs   3BA$ *B$+BBN)r)   zCallable[..., Var])r)   z)Callable[[int], list[Callable[..., Var]]])r>   r   r)   zLiteral[True])rB   r   r)   r*   )rH   r   r)   zGenerator[None, None, None])
__future__r   
contextlibr   typingr   collections.abcr   r   r   r	   r   utilsr   rF   r   __annotations__rA   r   r6   r<   r?   r   rH   r1   r   r   <module>rP      s    " %   ==   *-  .. .8$/ 
#   
&4 4 C Cr   