Ë
    f^(h’  ã                   ó|   — d dl mZmZ d dlmZ d„ Zd„ Zd„ Zd„ Z eee	«      d„ «       Z
d„ Z eeee	«      d	„ «       Zy
)é   )ÚreifyÚunify)Údispatchc                 óˆ   — t         j                  | | t        ft        «       t        j                  | t        ft
        «       | S )aÏ  Register standard unify and reify operations on class
    This uses the type and __dict__ or __slots__ attributes to define the
    nature of the term
    See Also:
    >>> # xdoctest: +SKIP
    >>> class A(object):
    ...     def __init__(self, a, b):
    ...         self.a = a
    ...         self.b = b
    >>> unifiable(A)
    <class 'unification.more.A'>
    >>> x = var("x")
    >>> a = A(1, 2)
    >>> b = A(1, x)
    >>> unify(a, b, {})
    {~x: 2}
    )Ú_unifyÚaddÚdictÚunify_objectÚ_reifyÚreify_object)Úclss    úd/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/fx/experimental/unification/more.pyÚ	unifiabler      s0   € ô$ ‡J�J��Sœ$Ð¤Ô.Ü
‡J�J�”Tˆ{œLÔ)à€Jó    c                 óJ   — t        | d«      rt        | |«      S t        | |«      S )a¨  Reify a Python object with a substitution
    >>> # xdoctest: +SKIP
    >>> class Foo(object):
    ...     def __init__(self, a, b):
    ...         self.a = a
    ...         self.b = b
    ...
    ...     def __str__(self):
    ...         return "Foo(%s, %s)" % (str(self.a), str(self.b))
    >>> x = var("x")
    >>> f = Foo(1, x)
    >>> print(f)
    Foo(1, ~x)
    >>> print(reify_object(f, {x: 2}))
    Foo(1, 2)
    Ú	__slots__)ÚhasattrÚ_reify_object_slotsÚ_reify_object_dict©ÚoÚss     r   r   r   #   s(   € ô" ˆq�+ÔÜ" 1 aÓ(Ð(ä! ! QÓ'Ð'r   c                 óÆ   — t         j                  t        | «      «      }t        | j                  |«      }|| j                  k(  r| S |j                  j                  |«       |S ©N)ÚobjectÚ__new__Útyper   Ú__dict__Úupdate)r   r   ÚobjÚds       r   r   r   :   sK   € Ü
�.‰.œ˜a›Ó
!€CÜˆa�j‰j˜!Ó€AØˆA�J‰J‚ØˆØ‡L�L×Ñ˜ÔØ€Jr   c                 ó  — | j                   D �cg c]  }t        | |«      ‘Œ }}t        ||«      }||k(  r| S t        j	                  t        | «      «      }t        | j                   |«      D ]  \  }}t        |||«       Œ |S c c}w r   )r   Úgetattrr   r   r   r   ÚzipÚsetattr)r   r   ÚattrÚattrsÚ	new_attrsÚnewobjÚslots          r   r   r   C   s~   € Ø*+¯+©+Ö6 $ŒW�Q˜ÕÐ6€EÐ6Ü�e˜Q“€IØ�	ÒØˆä—‘¤ Q£Ó(ˆÜ˜aŸk™k¨9Ó5ò 	(‰JˆD�$Ü�F˜D $Õ'ð	(àˆùò 7s   �Bc                 óh   — t        t        | j                  | j                  | j                  f|«      Ž S )zReify a Python ``slice`` object)Úslicer   ÚstartÚstopÚstepr   s     r   r   r   O   s)   € ô ”%˜Ÿ™ !§&¡&¨!¯&©&Ð1°1Ó5Ð6Ð6r   c           
      óB  — t        | «      t        |«      k7  ryt        | d«      rQt        | j                  D �cg c]  }t	        | |«      ‘Œ c}|j                  D �cg c]  }t	        ||«      ‘Œ c}|«      S t        | j
                  |j
                  |«      S c c}w c c}w )a¶  Unify two Python objects
    Unifies their type and ``__dict__`` attributes
    >>> # xdoctest: +SKIP
    >>> class Foo(object):
    ...     def __init__(self, a, b):
    ...         self.a = a
    ...         self.b = b
    ...
    ...     def __str__(self):
    ...         return "Foo(%s, %s)" % (str(self.a), str(self.b))
    >>> x = var("x")
    >>> f = Foo(1, x)
    >>> g = Foo(1, 2)
    >>> unify_object(f, g, {})
    {~x: 2}
    Fr   )r   r   r   r   r#   r   )ÚuÚvr   r*   s       r   r
   r
   Z   s„   € ô" ˆAƒw”$�q“'ÒØÜˆq�+ÔÜØ*+¯+©+Ö6 $ŒW�Q˜ÕÒ6Ø*+¯+©+Ö6 $ŒW�Q˜ÕÒ6Øó
ð 	
ô �Q—Z‘Z §¡¨QÓ/Ð/ùò 7ùÚ6s   ¸BÁB
c                 ó    — t        | j                  | j                  | j                  f|j                  |j                  |j                  f|«      S )zUnify a Python ``slice`` object)r   r-   r.   r/   )r1   r2   r   s      r   r   r   w   s9   € ô �!—'‘'˜1Ÿ6™6 1§6¡6Ð*¨Q¯W©W°a·f±f¸a¿f¹fÐ,EÀqÓIÐIr   N)Úcorer   r   r   r   r   r   r   r,   r	   r   r
   r   © r   r   ú<module>r6      s^   ðç Ý òò:(ò.ò	ñ 
ˆ%�Óñ7ó ð7ò0ñ: 
ˆ%�˜ÓñJó ñJr   