
    wg%                     r    d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZ ddlmZ  G d	 d
e
      Zy)    )S)sympify)EqNe)global_parameters)Boolean)	func_name   )Setc                   :     e Zd ZdZd fd	Zed        Zd Z xZS )Containsa  
    Asserts that x is an element of the set S.

    Examples
    ========

    >>> from sympy import Symbol, Integer, S, Contains
    >>> Contains(Integer(2), S.Integers)
    True
    >>> Contains(Integer(-2), S.Naturals)
    False
    >>> i = Symbol('i', integer=True)
    >>> Contains(i, S.Naturals)
    Contains(i, Naturals)

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Element_%28mathematics%29
    c                 l   t        |      }t        |      }|t        j                  }t        |t              st        dt        |      z        |rR|j                  |      }t        |t              r$|t        j                  t        j                  fv r|S |t        d      t        | 5  | ||      S )Nzexpecting Set, not %sz)_contains() should return Boolean or None)r   r   evaluate
isinstancer   	TypeErrorr	   	_containsr   r   truefalsesuper__new__)clsxsr   result	__class__s        X/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/sympy/sets/contains.pyr   zContains.__new__   s    AJAJ(11H!S!3ilBCC [[^F&'*affagg..!M# KLLwsAq))    c           
           t               j                  | j                  d   j                  D cg c]<  }|j                  s"|j                  st        |t        t        f      r|j                  > c} S c c}w Nr
   )	setunionargs
is_Boolean	is_Symbolr   r   r   binary_symbols)selfis     r   r%   zContains.binary_symbols7   sa    su{{YYq\&&%||q{{q2r(# -- % & 	& %s   AA5c                      | j                   d   S r   )r"   )r&   s    r   as_setzContains.as_set>   s    yy|r   )N)	__name__
__module____qualname____doc__r   propertyr%   r)   __classcell__)r   s   @r   r   r   
   s&    (*0 & &r   r   N)
sympy.corer   sympy.core.sympifyr   sympy.core.relationalr   r   sympy.core.parametersr   sympy.logic.boolalgr   sympy.utilities.miscr	   setsr   r    r   r   <module>r8      s&     & ( 3 ' * 5w 5r   