3 ì$öcS.ã@s¤ddlmZddlmZmZddlmZddlZddlZdZ dZ dZ dZ d Z d Zd d „ZGd d„dƒZGdd„deƒZGdd„dƒZGdd„dƒZGdd„dƒZdS)é)ÚMBLENGTH)Ú FIELD_TYPEÚ SERVER_STATUS)ÚerréNFéûéüéýéþcsþdd„‰yTtdtˆƒƒx4tddƒD]&}tj|ƒ}td||jj|jfƒq$WtddƒWntk rpYnX‡fd d „td t tˆƒd ƒd ƒDƒ}xP|D]H}tdj dd„|Dƒƒdd t|ƒddj ‡fdd„|DƒƒƒqœWtddƒtƒdS)NcSs$d|kodknr t|ƒSdS)Né éÚ.)Úchr)Údata©rú7/tmp/pip-target-ebskqzh7/lib/python/pymysql/protocol.pyÚ printableszdump_packet..printablezpacket length:rézcall[%d]: %s (line %d)ú-éBcsg|]}ˆ||d…‘qS)ér)Ú.0Úi)rrrú #szdump_packet..rérú css|]}dj|ƒVqdS)z{:02X}N)Úformat)rÚxrrrú &szdump_packet..z éÚc3s|]}ˆ|ƒVqdS)Nr)rr)rrrr)sz ) ÚprintÚlenÚrangeÚsysÚ _getframeÚf_codeÚco_nameÚf_linenoÚ ValueErrorÚminÚjoin)rrÚfZ dump_dataÚdr)rrrÚ dump_packets $ F r.c@sèeZdZdZd;Zdd„Zdd„Zdd „Zd d „Zd d „Z dÚ MysqlPacketzrRepresentation of a MySQL response packet. Provides an interface for reading/parsing the packet results. Ú _positionÚ_datacCsd|_||_dS)Nr)r0r1)ÚselfrÚencodingrrrÚ__init__7szMysqlPacket.__init__cCs|jS)N)r1)r2rrrÚ get_all_data;szMysqlPacket.get_all_datacCsl|j|j|j|…}t|ƒ|krZd|t|ƒ|jt|jƒf}trRt|ƒ|jƒt|ƒ‚|j|7_|S)zCRead the first 'size' bytes in packet and advance cursor past them.z\Result length not requested length: Expected=%s. Actual=%s. Position: %s. Data Length: %s)r1r0r"ÚDEBUGr!ÚdumpÚAssertionError)r2ÚsizeÚresultÚerrorrrrÚread>s zMysqlPacket.readcCs|j|jd…}d|_|S)z`Read all remaining data in the packet. (Subsequent read() will return errors.) N)r1r0)r2r:rrrÚread_allNszMysqlPacket.read_allcCs:|j|}|dks |t|jƒkr0td||fƒ‚||_dS)z1Advance the cursor in data buffer 'length' bytes.rz4Invalid advance amount (%s) for cursor. Position=%sN)r0r"r1Ú Exception)r2ÚlengthZ new_positionrrrÚadvanceWs   zMysqlPacket.advancercCs,|dks|t|jƒkr"td|ƒ‚||_dS)z9Set the position of the data buffer cursor to 'position'.rz)Invalid position to rewind cursor to: %s.N)r"r1r>r0)r2ÚpositionrrrÚrewindas zMysqlPacket.rewindrcCs|j|||…S)a>Get 'length' bytes starting at 'position'. Position is start of payload (first four packet header bytes are not included) starting at index '0'. No error checking is done. If requesting outside end of buffer an empty string (or string shorter than 'length') may be returned! )r1)r2rAr?rrrÚ get_bytesgs zMysqlPacket.get_bytescCs|j|j}|jd7_|S)Nr)r1r0)r2r:rrrÚ read_uint8rs zMysqlPacket.read_uint8cCs(tjd|j|jƒd}|jd7_|S)NzS)Nzs"  5=