
    MZd                     L    d Z ddlmZ ddlmZ ddlmZ e G d de             Zy)z2Implementation of :class:`CompositeDomain` class.     )Domain)GeneratorsError)publicc                   6    e Zd ZdZdZdgdz  \  ZZZZd Z	d Z
y)CompositeDomainz5Base class for composite domains, e.g. ZZ[x], ZZ(X). TN   c                     t        | j                        t        |      z  s4| j                  | j                  | j                  |z   | j                        S t        d| j                  d|      )z%Inject generators into this domain.  zcommon generators in z and )setsymbols	__class__domainorderr   )selfr   s     E/usr/lib/python3/dist-packages/sympy/polys/domains/compositedomain.pyinjectzCompositeDomain.inject   sP    DLL!CL0>>$++t||g/EtzzRR!dllT["\]]    c                     t        |      t        fd| j                  D              } | j                  j                  | }|s|S | j                  ||| j                        S )z"Drop generators from this domain. c              3   ,   K   | ]  }|vs|  y w)N ).0ssymsets     r   	<genexpr>z'CompositeDomain.drop.<locals>.<genexpr>   s     Ca1F?Cs   	)r
   tupler   r   dropr   r   )r   r   newsymsr   r   s       @r   r   zCompositeDomain.drop   sU    WC4<<CC!!!7+M>>&'4::>>r   )__name__
__module____qualname____doc__is_Compositegensngensr   r   r   r   r   r   r   r   r   	   s)    ?L$(6!8 D%&^?r   r   N)r    sympy.polys.domains.domainr   sympy.polys.polyerrorsr   sympy.utilitiesr   r   r   r   r   <module>r'      s,    8 . 2 "?f ? ?r   