o
    à8Va  ã                   @   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 ƒ‚)z%Inject generators into this domain.  zcommon generators in %s and %s)ÚsetÚsymbolsÚ	__class__ÚdomainÚorderr   )Úselfr   © r   úE/usr/lib/python3/dist-packages/sympy/polys/domains/compositedomain.pyÚinject   s   zCompositeDomain.injectc                    sD   t |ƒ‰ t‡ fdd„| jD ƒƒ}| jj|Ž }|s|S |  ||| j¡S )z"Drop generators from this domain. c                 3   s    | ]	}|ˆ vr|V  qd S )Nr   )Ú.0Ús©Zsymsetr   r   Ú	<genexpr>   s   € z'CompositeDomain.drop.<locals>.<genexpr>)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    