U
    me                     @   s@   d Z ddlmZ ddlmZ ddlmZ eG dd deZdS )z2Implementation of :class:`CompositeDomain` class.     )Domain)GeneratorsError)publicc                   @   s6   e Zd ZdZdZdgd \ZZZZdd Z	dd Z
dS )	CompositeDomainz5Base class for composite domains, e.g. ZZ[x], ZZ(X). TN   c                 G   s@   t | jt |@ s*| | j| j| | jS td| j|f dS )z%Inject generators into this domain.  zcommon generators in %s and %sN)setsymbols	__class__domainorderr   )selfr    r   G/tmp/pip-unpacked-wheel-rdz2gdd2/sympy/polys/domains/compositedomain.pyinject   s    zCompositeDomain.injectc                    sH   t | t fdd| jD }| jj| }|s4|S | ||| jS dS )z"Drop generators from this domain. c                 3   s   | ]}| kr|V  qd S )Nr   ).0sZsymsetr   r   	<genexpr>   s      z'CompositeDomain.drop.<locals>.<genexpr>N)r   tupler   r
   dropr	   r   )r   r   Znewsymsr
   r   r   r   r      s    zCompositeDomain.drop)__name__
__module____qualname____doc__Zis_CompositeZgensZngensr   r
   r   r   r   r   r   r   r   	   s
   r   N)r   Zsympy.polys.domains.domainr   Zsympy.polys.polyerrorsr   Zsympy.utilitiesr   r   r   r   r   r   <module>   s
   