o
    FZh                     @   s  d Z ddlmZmZmZ ddlmZmZ ddlm	Z	m
Z
mZ ddlmZmZ ddlmZmZmZmZmZmZmZmZ ddlmZ dd	lmZmZ G d
d dZG dd deZeedd Z eedd Z eedd Z eedd Z ee!dd Z eedd Z eedd Z eedd Z eedd Z eedd Z eedd Z eedd Z eedd Z dd Z"dd Z#d d! Z$d"S )#zj
This module defines base class for handlers and some core handlers:
``Q.commutative`` and ``Q.is_true``.
    )QaskAppliedPredicate)BasicSymbol)_fuzzy_group	fuzzy_andfuzzy_or)NaNNumber)AndBooleanTrueBooleanFalse	conjuncts
EquivalentImpliesNotOr)sympy_deprecation_warning   )CommutativePredicateIsTruePredicatec                       s    e Zd ZdZ fddZ  ZS )
AskHandlerz.Base class that all Ask Handlers must inherit.c                    s(   t dddd t j| g|R i |S )Nz
            The AskHandler system is deprecated. The AskHandler class should
            be replaced with the multipledispatch handler of Predicate
            z1.8zdeprecated-askhandler)Zdeprecated_since_versionZactive_deprecations_target)r   super__new__)clsargskwargs	__class__ P/var/www/auris/lib/python3.10/site-packages/sympy/assumptions/handlers/common.pyr      s   zAskHandler.__new__)__name__
__module____qualname____doc__r   __classcell__r    r    r   r!   r      s    r   c                   @   s8   e Zd ZdZedd Zedd Zedd ZeZdS )	CommonHandlerz5Defines some useful methods common to most Handlers. c                 C      dS NTr    exprassumptionsr    r    r!   
AlwaysTrue#      zCommonHandler.AlwaysTruec                 C   r(   NFr    r*   r    r    r!   AlwaysFalse'   r.   zCommonHandler.AlwaysFalsec                 C   s   d S Nr    r*   r    r    r!   
AlwaysNone+   r.   zCommonHandler.AlwaysNoneN)	r"   r#   r$   r%   staticmethodr-   r0   r2   r
   r    r    r    r!   r'      s    


r'   c                 C   sR   t |}| jdur| jot|  |vS t| |v rdS t|  |v r'dS dS )z>Objects are expected to be commutative unless otherwise statedNTF)r   Zis_commutativer   commutative)r+   r,   Zassumpsr    r    r!   _4   s   
r5   c                 C   s&   | j D ]}tt||s dS qdS )NFT)r   r   r   r4   )r+   r,   argr    r    r!   r5   @   s
   
c                 C   r(   r)   r    r*   r    r    r!   r5   G   r.   c                 C   r(   r)   r    r*   r    r    r!   r5   K   r.   c                 C   s   | S r1   r    r*   r    r    r!   r5   R   r.   c                 C   r(   r)   r    r*   r    r    r!   r5   V   r.   c                 C   r(   r/   r    r*   r    r    r!   r5   Z   r.   c                 C   s
   t | |S r1   r   r*   r    r    r!   r5   ^   s   
c                 C   s2   | j d }|jr
d S t||d}|dv r| S d S )Nr   r,   )TF)r   Z	is_Symbolr   )r+   r,   r6   valuer    r    r!   r5   b   s   
c                 C   :   d}| j D ]}t||d}|du r dS |d u rd }q|S )NFr8   Tr   r   r+   r,   resultr6   pr    r    r!   r5   n      
c                 C   r:   )NTr8   Fr;   r<   r    r    r!   r5   y   r?   c                 C   s   | j \}}t| |B |dS Nr8   r;   )r+   r,   r>   qr    r    r!   r5      s   
c                 C   sB   | j \}}t||d}|d u rd S t||d}|d u rd S ||kS r@   r;   )r+   r,   r>   rA   ptZqtr    r    r!   r5      s   
c                    s   t  fdd| jD ddS )zS
    Test for membership in a group with respect
    to the current operation.
    c                 3   s    | ]
}t | V  qd S r1   r7   ).0ar,   keyr    r!   	<genexpr>   s    z$test_closed_group.<locals>.<genexpr>T)Z
quick_exit)r   r   )r+   r,   rF   r    rE   r!   test_closed_group   s   rH   c                       t  fdd|D S )Nc                 3       | ]}t | V  qd S r1   r7   rC   queryr8   r    r!   rG          zask_all.<locals>.<genexpr>)r   r,   Zqueriesr    r8   r!   ask_all      rO   c                    rI   )Nc                 3   rJ   r1   r7   rK   r8   r    r!   rG      rM   zask_any.<locals>.<genexpr>)r	   rN   r    r8   r!   ask_any   rP   rQ   N)%r%   Zsympy.assumptionsr   r   r   Z
sympy.corer   r   Zsympy.core.logicr   r   r	   Zsympy.core.numbersr
   r   Zsympy.logic.boolalgr   r   r   r   r   r   r   r   Zsympy.utilities.exceptionsr   Zpredicates.commonr   r   r   r'   registerr5   boolrH   rO   rQ   r    r    r    r!   <module>   sN    (














