K ijLdZddlmZddlmZddlmZeGddeZy)z2Implementation of :class:`CompositeDomain` class. )Domain)GeneratorsError)publiccheZdZdZdZdgdz\ZZZZdZ dZ dZ e dZ d Ze d Zd Zy) CompositeDomainz5Base class for composite domains, e.g. ZZ[x], ZZ(X). TNct|jt|zs4|j|j|j|z|jSt d|jd|)z%Inject generators into this domain. zcommon generators in z and )setsymbols __class__domainorderr)selfr s i/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/polys/domains/compositedomain.pyinjectzCompositeDomain.injectsPDLL!CL0>>$++t||g/EtzzR R!dllT["\] ]ct|tfd|jD}|jj|}|s|S|j |||j S)z"Drop generators from this domain. c3,K|] }|vs| ywN).0ssymsets r z'CompositeDomain.drop..sCa1F?Cs )r tupler r dropr r)rr newsymsr rs @rrzCompositeDomain.dropsUWC4<<CC!!!7+M>>&'4::> >rcP|j||j|jS)z&Set the ground domain of this domain. )r r r)rr s r set_domainzCompositeDomain.set_domain"s~~fdllDJJ??rc.|jjS)z*Returns ``True`` if this domain is exact. )r is_Exactrs rr!zCompositeDomain.is_Exact&s{{###rcT|j|jjS)z)Returns an exact version of this domain. )rr get_exactr"s rr$zCompositeDomain.get_exact+st{{44677rc.|jjSr)r has_CharacteristicZeror"s rr&z&CompositeDomain.has_CharacteristicZero/s{{111rc6|jjSr)r characteristicr"s rr(zCompositeDomain.characteristic3s{{))++r)__name__ __module__ __qualname____doc__ is_Compositegensngensr r rrrpropertyr!r$r&r(rrrrr sa?L$(6!8 D%&^?@$$822,rrN)r,sympy.polys.domains.domainrsympy.polys.polyerrorsrsympy.utilitiesrrrrrr4s,8.2"*,f*,*,r