3 SLj @sdZdZddlZddlmZddlmZdZde>dZdZdZ dZ dZ d Z d Z d ZedMZedOZdQZdSZdUZdWZdZdZdZdZejed kredejedkredddZddZddZddZddZ d d!Z!d"d#Z"d$d%Z#d&d'Z$d(d)Z%d*d+Z&d,d-Z'd.d/Z(d0d1Z)d2d3Z*d4d5Z+d6d7Z,d8d9Z-d:d;Z.dd?Z0d@dAZ1dBdCZ2dDdEZ3dFdGZ4dHdIZ5ej6j7ej6j8ej6j9ej6j:fZ;dJdKZ|BS)aReturns an unsigned 32-bit integer that encodes the field number and wire type information in standard protocol message wire format. Args: field_number: Expected to be an integer in the range [1, 1 << 29) wire_type: One of the WIRETYPE_* constants. rzUnknown wire type: %d) _WIRETYPE_MAXr EncodeError TAG_TYPE_BITS) field_numberZ wire_typer!/usr/lib/python3.6/wire_format.pyPackTagPsrcCs|t?|t@fS)zkThe inverse of PackTag(). Given an unsigned 32-bit number, returns a (field_number, wire_type) tuple. )r TAG_TYPE_MASK)tagrrr UnpackTag]srcCs|dkr|d>S|d>dAS)zZigZag Transform: Encodes signed integers so that they can be effectively used with varint encoding. See wire_format.h for more details. rrr)valuerrr ZigZagEncodedsrcCs|d@s|d?S|d?dAS)zInverse of ZigZagEncode().rrrr)rrrr ZigZagDecodensrcCs t||S)N) Int64ByteSize)rint32rrr Int32ByteSizezsrcCs td|@S)Nl)_VarUInt64ByteSizeNoTag)rrrrInt32ByteSizeNoTag~sr cCst|d|@S)Nl)UInt64ByteSize)rint64rrrrsrcCs t||S)N)r!)rZuint32rrrUInt32ByteSizesr#cCst|t|S)N) TagByteSizer)ruint64rrrr!sr!cCst|t|S)N)r#r)rrrrrSInt32ByteSizesr&cCst|t|S)N)r!r)rr"rrrSInt64ByteSizesr'cCs t|dS)Nr)r$)rZfixed32rrrFixed32ByteSizesr(cCs t|dS)Nr )r$)rZfixed64rrrFixed64ByteSizesr)cCs t|dS)Nr)r$)rZsfixed32rrrSFixed32ByteSizesr*cCs t|dS)Nr )r$)rZsfixed64rrrSFixed64ByteSizesr+cCs t|dS)Nr)r$)rZfltrrr FloatByteSizesr,cCs t|dS)Nr )r$)rZdoublerrrDoubleByteSizesr-cCs t|dS)Nr)r$)rbrrr BoolByteSizesr/cCs t||S)N)r#)renumrrr EnumByteSizesr1cCst||jdS)Nzutf-8) BytesByteSizeencode)rstringrrrStringByteSizesr5cCst|tt|t|S)N)r$rlen)rr.rrrr2sr2cCsdt||jS)Nr)r$ByteSize)rrrrr GroupByteSizes r8cCst|t|j|jS)N)r$rr7)rrrrrMessageByteSizesr9cCsHdtdtdtd}|t|7}|j}|t|7}||7}|S)Nrrr)r$rr7)rmsgZ total_sizeZ message_sizerrrMessageSetItemByteSizes   r;cCstt|dS)zEReturns the bytes required to serialize a tag with this field number.r)rr)rrrrr$sr$cCs|dkr dS|dkrdS|dkr$dS|dkr0dS|d krst