a Me@sldZddlmZmZmZmZmZmZddlZ ddl Z ddl Z ddl Z ddl Z e jjGddde jjZdS)zTXT-like base class.)AnyDictIterableOptionalTupleUnionNc seZdZdZdgZejjejj e e e e fdfdd Zdeejjeee efe dd d Zedejjejj ejjeejjeeejjejjd d d ZdddZedddZZS)TXTBasez>Base class for rdata that is like a TXT record (see RFC 1035).strings)rdclassrdtyper cs(t|||fdd_dS)zInitialize a TXT-like rdata. *rdclass*, an ``int`` is the rdataclass of the Rdata. *rdtype*, an ``int`` is the rdatatype of the Rdata. *strings*, a tuple of ``bytes`` cs|ddS)NT)Z _as_bytes)xself7/usr/lib/python3.9/site-packages/dns/rdtypes/txtbase.py3z"TXTBase.__init__..N)super__init__Z _as_tupler )rr r r  __class__rrr#s zTXTBase.__init__NT)origin relativizekwreturncKs4d}d}|jD] }|d|tj|7}d}q|S)Nz{}"{}" )r formatdnsrdataZ _escapify)rrrrZtxtprefixsrrrto_text6s  zTXTBase.to_text)r r tokrr relativize_torc Cs|g}|D]N}|}|s4|s4tjdt|jdkrNtjd| |jq t|dkrptjj ||||S)Nzexpected a stringr zstring too longr) Z get_remainingZunescape_to_bytesZis_quoted_stringZ is_identifierr exception SyntaxErrorlenvalueappendZ UnexpectedEnd) clsr r r$rrr%r tokenrrr from_textCs     zTXTBase.from_textFc CsH|jD]<}tj|d||Wdq1s80YqdS)N)r rZrendererZprefixed_lengthwrite)rfilecompressrZ canonicalizer"rrr_to_wire]s zTXTBase._to_wirecCs0g}|dkr$|}||q||||S)Nr)Z remainingZget_counted_bytesr*)r+r r parserrr r"rrrfrom_wire_parserbs   zTXTBase.from_wire_parser)NT)NTN)NNF)N)__name__ __module__ __qualname____doc__ __slots__rZ rdataclassZ RdataClassZ rdatatypeZ RdataTyperrbytesstrrrnameNameboolrrr# classmethodZ tokenizer Tokenizerr Rdatar-r2r4 __classcell__rrrrrs<      r)r8typingrrrrrrZ dns.exceptionrZ dns.immutableZ dns.rdataZ dns.rendererZ dns.tokenizerZ immutabler rArrrrrs