,Qc@sPdZddlZddlZddlZddlZdefdYZdS(s)DNS nodes. A node is a set of rdatasets.iNtNodecBseZdZdgZdZdZdZdZdZdZ dZ e j j ed Ze j j ed Ze j j d Zd ZRS( sA DNS node. A node is a set of rdatasets @ivar rdatasets: the node's rdatasets @type rdatasets: list of dns.rdataset.Rdataset objectst rdatasetscCs g|_dS(sInitialize a DNS node. N(R(tself((s./usr/lib64/python2.7/site-packages/dns/node.pyt__init__"scKsYtj}x<|jD]1}t|dkr||j||IJqqW|jd S(s+Convert a node to text format. Each rdataset at the node is printed. Any keyword arguments to this method are passed on to the rdataset's to_text() method. @param name: the owner name of the rdatasets @type name: dns.name.Name object @rtype: string ii(tStringIORtlentto_texttgetvalue(Rtnametkwtstrds((s./usr/lib64/python2.7/site-packages/dns/node.pyR(s cCsdtt|dS(Ns (tstrtid(R((s./usr/lib64/python2.7/site-packages/dns/node.pyt__repr__8scCsRx$|jD]}||jkr tSq Wx$|jD]}||jkr1tSq1WtS(sSTwo nodes are equal if they have the same rdatasets. @rtype: bool (RtFalsetTrue(Rtothertrd((s./usr/lib64/python2.7/site-packages/dns/node.pyt__eq__;scCs|j| S(N(R(RR((s./usr/lib64/python2.7/site-packages/dns/node.pyt__ne__KscCs t|jS(N(RR(R((s./usr/lib64/python2.7/site-packages/dns/node.pyt__len__NscCs t|jS(N(titerR(R((s./usr/lib64/python2.7/site-packages/dns/node.pyt__iter__QscCsex*|jD]}|j|||r |Sq W|s<tntjj||}|jj||S(sFind an rdataset matching the specified properties in the current node. @param rdclass: The class of the rdataset @type rdclass: int @param rdtype: The type of the rdataset @type rdtype: int @param covers: The covered type. Usually this value is dns.rdatatype.NONE, but if the rdtype is dns.rdatatype.SIG or dns.rdatatype.RRSIG, then the covers value will be the rdata type the SIG/RRSIG covers. The library treats the SIG and RRSIG types as if they were a family of types, e.g. RRSIG(A), RRSIG(NS), RRSIG(SOA). This makes RRSIGs much easier to work with than if RRSIGs covering different rdata types were aggregated into a single RRSIG rdataset. @type covers: int @param create: If True, create the rdataset if it is not found. @type create: bool @raises KeyError: An rdataset of the desired type and class does not exist and I{create} is not True. @rtype: dns.rdataset.Rdataset object (RtmatchtKeyErrortdnstrdatasettRdatasettappend(RtrdclasstrdtypetcoverstcreateR ((s./usr/lib64/python2.7/site-packages/dns/node.pyt find_rdatasetTs cCs:y|j||||}Wntk r5d}nX|S(sEGet an rdataset matching the specified properties in the current node. None is returned if an rdataset of the specified type and class does not exist and I{create} is not True. @param rdclass: The class of the rdataset @type rdclass: int @param rdtype: The type of the rdataset @type rdtype: int @param covers: The covered type. @type covers: int @param create: If True, create the rdataset if it is not found. @type create: bool @rtype: dns.rdataset.Rdataset object or None N(R#RtNone(RRR R!R"R ((s./usr/lib64/python2.7/site-packages/dns/node.pyt get_rdatasetvs   cCs8|j|||}|dk r4|jj|ndS(szDelete the rdataset matching the specified properties in the current node. If a matching rdataset does not exist, it is not an error. @param rdclass: The class of the rdataset @type rdclass: int @param rdtype: The type of the rdataset @type rdtype: int @param covers: The covered type. @type covers: int N(R%R$Rtremove(RRR R!R ((s./usr/lib64/python2.7/site-packages/dns/node.pytdelete_rdatasets cCsQt|tjjs!tdn|j|j|j|j|j j |dS(s8Replace an rdataset. It is not an error if there is no rdataset matching I{replacement}. Ownership of the I{replacement} object is transferred to the node; in other words, this method does not store a copy of I{replacement} at the node, it stores I{replacement} itself. sreplacement is not an rdatasetN( t isinstanceRRRt ValueErrorR'RR R!RR(Rt replacement((s./usr/lib64/python2.7/site-packages/dns/node.pytreplace_rdatasets   (t__name__t __module__t__doc__t __slots__RRRRRRRRt rdatatypetNONERR#R%R'R+(((s./usr/lib64/python2.7/site-packages/dns/node.pyRs          !  (R.Rt dns.rdatasetRt dns.rdatatypet dns.renderertobjectR(((s./usr/lib64/python2.7/site-packages/dns/node.pyts