
    e!hf                     ,    d dl mZ d dlZ G d d      Zy)    )update_wrapperNc                   f     e Zd Zd fd	Zed        Zej                  d        Zd Zd Zd Z	 xZ
S )DefFactsc                 r    t         t        |   |       }|t        d      d |_        d |_        ||_        |S )Nz.DefFacts must be instanced to allow decoration)superr   __new__SyntaxError_DefFacts__wrapped_wrapped_selforder)clsnonexpectedr   obj	__class__s       X/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/experta/deffacts.pyr   zDefFacts.__new__   sA    Hc*3/"NOO 	
    c                     | j                   S N)r
   selfs    r   _wrappedzDefFacts._wrapped   s    ~~r   c                 |    t        j                  |      r|| _        t        | | j                        S t	        d      )Nz%DefFact can only decorate generators.)inspectisgeneratorfunctionr
   r   	TypeError)r   values     r   r   zDefFacts._wrapped   s4    &&u-"DN!$77CDDr   c                      d| j                   z  S )NzDefFacts(%r))r   r   s    r   __repr__zDefFacts.__repr__   s    //r   c                     | j                   H| j                   | j                   |i |}n  | j                   | j                  g|i |}d |D        S |st        d      |d   | _         | S )Nc              3   <   K   | ]  }|j                           y wr   )copy).0xs     r   	<genexpr>z$DefFacts.__call__.<locals>.<genexpr>'   s     *AFFH*s   zUsage error.r   )r   r   RuntimeError)r   argskwargsgens       r   __call__zDefFacts.__call__!   sv    ==$!!)#dmmT4V4#dmmD$6$6HHH*c**~.. GDMKr   c                     || _         | S r   )r   )r   instanceowners      r   __get__zDefFacts.__get__.   s    %r   )Nr   )__name__
__module____qualname__r   propertyr   setterr   r)   r-   __classcell__)r   s   @r   r   r      sE    
   __E E0r   r   )	functoolsr   r   r    r   r   <module>r6      s    $ + +r   