a
    kh                     @   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__ O/var/www/auris/lib/python3.9/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   s   dS NTr    exprassumptionsr    r    r!   
AlwaysTrue#   s    zCommonHandler.AlwaysTruec                 C   s   dS NFr    r)   r    r    r!   AlwaysFalse'   s    zCommonHandler.AlwaysFalsec                 C   s   d S Nr    r)   r    r    r!   
AlwaysNone+   s    zCommonHandler.AlwaysNoneN)	r"   r#   r$   r%   staticmethodr,   r.   r0   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 rNd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    
r3   c                 C   s&   | j D ]}tt||s dS qdS )NFT)r   r   r   r2   )r*   r+   argr    r    r!   r3   @   s    
c                 C   s   dS r(   r    r)   r    r    r!   r3   G   s    c                 C   s   dS r(   r    r)   r    r    r!   r3   K   s    c                 C   s   | S r/   r    r)   r    r    r!   r3   R   s    c                 C   s   dS r(   r    r)   r    r    r!   r3   V   s    c                 C   s   dS r-   r    r)   r    r    r!   r3   Z   s    c                 C   s
   t | |S r/   r   r)   r    r    r!   r3   ^   s    c                 C   s6   | j d }|jrd S t||d}|dv r.| S d S d S )Nr   r+   )TF)r   Z	is_Symbolr   )r*   r+   r4   valuer    r    r!   r3   b   s    
c                 C   s:   d}| j D ]*}t||d}|du r( dS |d u r
d }q
|S )NFr6   Tr   r   r*   r+   resultr4   pr    r    r!   r3   n   s    
c                 C   s:   d}| j D ]*}t||d}|du r( dS |d u r
d }q
|S )NTr6   Fr8   r9   r    r    r!   r3   y   s    
c                 C   s   | j \}}t| |B |dS Nr6   r8   )r*   r+   r;   qr    r    r!   r3      s    
c                 C   sB   | j \}}t||d}|d u r"d S t||d}|d u r:d S ||kS r<   r8   )r*   r+   r;   r=   ptZqtr    r    r!   r3      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 r/   r5   ).0ar+   keyr    r!   	<genexpr>       z$test_closed_group.<locals>.<genexpr>T)Z
quick_exit)r   r   )r*   r+   rB   r    rA   r!   test_closed_group   s    rE   c                    s   t  fdd|D S )Nc                 3   s   | ]}t | V  qd S r/   r5   r?   queryr6   r    r!   rC      rD   zask_all.<locals>.<genexpr>)r   r+   Zqueriesr    r6   r!   ask_all   s    rI   c                    s   t  fdd|D S )Nc                 3   s   | ]}t | V  qd S r/   r5   rF   r6   r    r!   rC      rD   zask_any.<locals>.<genexpr>)r	   rH   r    r6   r!   ask_any   s    rJ   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'   registerr3   boolrE   rI   rJ   r    r    r    r!   <module>   sL   (














