3 \@sddlmZddlmZddlmZmZmZddlmZddl m Z ddl Z ddl m Z ddl mZmZddlZddlZddlZddlZd d d d d ddddg ZeefZdZdddddddgZdZdZGdd d eZGdd d eZGdd d eZGdddeZ ydd l!m"Z"Wne#k r.dZ"YnXd!Z$d"Z%d#Z&d$Z'd%Z(d&Z)d'Z*d(Z+d)Z,d*Z-d+Z.d,Z/d-Z0d.Z1d/Z2d0Z3d1Z4d2Z5d3Z6d4Z7d5Z8d6Z9d7Z:d8Z;d9ZdZAd?ZBd@ZCdAZDdBZEdCZFdDZGdEZHdFZIdGZJdHZKdIZLdJZMdKZNdLZOdMZPdNZQdOZRdPZSdQZTdRZUdSZVdTZWdUZXdVZYdWZZeJeTeUeVgZ[dXZ\dYZ]dZZ^d[Z_d\Z`d]Zad^Zbd_Zcd`ZddaZedbZfdcZgejhdddeeiDGdfdgdgZjGdhdidiZkdjdkZldldmZmdndoZndpdqZoGdrdsdsZpGdtduduZqddvdwdxdyZrddvdwdzd{Zsdvd|d}d~ddZtdvd|d}d~ddZuy0ddlvmZmZmZmwZwmxZxmyZymzZzm{Z{m|Z|Wn4e#k r^epeqZwZxereseteuf\ZyZzZ{Z|YnXddZ}e~dkrddlZejddZejdejddddejdddddejddddejZejre}n>ejsejn,ddlZx"ejD]Ze{eZejeqWdS)) FunctionType)dispatch_table)_extension_registry_inverted_registry_extension_cache)islice)partialN)maxsize)packunpack PickleError PicklingErrorUnpicklingErrorPickler Unpicklerdumpdumpsloadloadsz4.0z1.0z1.1z1.2z1.3z2.0z3.0c@s eZdZdS)r N)__name__ __module__ __qualname__rr/usr/lib64/python3.6/pickle.pyr @sc@s eZdZdS)r N)rrrrrrrr Dsc@s eZdZdS)rN)rrrrrrrrKs c@seZdZddZdS)_StopcCs ||_dS)N)value)selfrrrr__init__Ysz_Stop.__init__N)rrrrrrrrrXsr) PyStringMap(.012FIJKLMNPQRSTUVXabcd}eghijl]opqrst)uGsI01 sI00 BCcCsg|]}tjd|r|qS)z[A-Z][A-Z0-9_]+$)rematch).0xrrr srfc@s:eZdZdZddZddZddZdd d Zd d ZdS)_Framer@icCs||_d|_dS)N) file_write current_frame)rrirrrrsz_Framer.__init__cCstj|_dS)N)ioBytesIOrj)rrrr start_framingsz_Framer.start_framingcCs*|jr&|jjdkr&|jddd|_dS)NrT)force)rjtell commit_frame)rrrr end_framings z_Framer.end_framingFc Cst|jrp|j}|j|jks|rp|j2}t|}|j}|t|td|||WdQRX|jd|j dS)Nzz&Can't get local attribute {!r} on {!r}z Can't get attribute {!r} on {!r})splitAttributeErrorformatgetattr)objnameZsubpathparentrrr _getattributes rc Cszt|dd}|dk r|Sx\ttjjD]J\}}|dks(|dkrBq(yt||d|krZ|SWq(tk rpYq(Xq(WdS)Nr__main__r)rlistsysmodulesitemsrr)rr module_namemodulerrr whichmodules  rcCsh|dkr dS|jd?d}|j|ddd}|dkrd|dkrd|d dkrd|d d @dkrd|dd }|S)NrrrrlittleT) byteordersignedrr) bit_lengthto_bytes)renbytesresultrrr encode_long$s rcCstj|dddS)NrT)rr)int from_bytes)ryrrr decode_longBsrc@sheZdZd7ddddZddZdd Zd d Zd d ZddZd8ddZ ddZ ddZ d9ddZ iZ ddZee ed<ddZee e<ddZee e<ddZee e<d d!Zee e<d"d#Zee e<d$d%Zee e<d&d'Zee e<d(Zd)d*Zd+d,Z e e e!<e"dk re e e"<d-d.Z#d/d0Z$e$e e%<d1d2Z&e&e e'<d:d3d4Z(d5d6Z)e(e e*<e)e e<dS);_PicklerNT) fix_importsc Cs|dkr t}|dkrt}n$d|ko,tkns>tdty |j|_Wntk rftdYnXt|j|_|jj|_i|_ t ||_ |dk|_ d|_ |o|dk|_dS)Nrzpickle protocol must be <= %dz"file must have a 'write' attributerr)DEFAULT_PROTOCOLHIGHEST_PROTOCOL ValueErrorr{ _file_writer TypeErrorrgframermemorprotobinfastr)rfileprotocolrrrrr[s"      z_Pickler.__init__cCs|jjdS)N)rclear)rrrr clear_memosz_Pickler.clear_memocCsrt|dstd|jjf|jdkr<|jttd|j|jdkrP|jj |j ||jt |jj dS)Nrz2Pickler.__init__() was not called by %s.__init__()rzy |jtt|jddWntk r\tdYnXdS)NF)rrrz2persistent IDs in protocol 0 must be ASCII strings) rrr{ BINPERSIDPERSIDrrUnicodeEncodeErrorr )rrrrrrs  z_Pickler.save_persc Cst|tstdt|s"td|j}|j}t|dd} |jdkr| dkr|\} }} t| dsntdj | |dk r| |j k rtd j | |jd kr|| |||| |t n,t | j | f|| }|||f|tn|jdko| d kr\|d } t| dstd |dk r6| |j k r6td|dd}|| |||tn|||||t|dk rt||jkr|t|j|jt|d n |j||dk r|j||dk r|j||dk r|||tdS)Nz'args from save_reduce() must be a tuplez(func from save_reduce() must be callablerr __newobj_ex____new__z#args[0] from {} args has no __new__z(args[0] from {} args has the wrong classr __newobj__rz+args[0] from __newobj__ args has no __new__z0args[0] from __newobj__ args has the wrong classr)rrr callablerr{rrrrr NEWOBJ_EXrrREDUCENEWOBJrrPOPrr_batch_appends_batch_setitemsBUILD) rfuncargsstateZ listitemsZ dictitemsrrr{Z func_nameclskwargsrrrrsd           "      z_Pickler.save_reducecCs|jtdS)N)r{NONE)rrrrr save_nonesz_Pickler.save_nonecCs4|jdkr|j|rtntn|j|r*tntdS)Nr)rr{NEWTRUENEWFALSETRUEFALSE)rrrrr save_bools z_Pickler.save_boolcCs|jr~|dkrN|dkr.|jttd|dS|dkrN|jttd|dSd |ko`dknr~|jttd|dS|jd krt|}t|}|d kr|jt td||n|jt td||dS|jt t |j d d dS)Nrrzdrr)rr{BINFLOATr FLOATrr)rrrrr save_floatsz_Pickler.save_floatcCs|jdkr@|s |jtf|dn|jtjt|ddf|ddSt|}|dkrj|jtt d||nD|dkr|jdkr|jt t d||n|jt t d |||j |dS) Nr)rlatin1rzdSq>WdS)Nrr) rr{rAPPENDiterrr _BATCHSIZErtrAPPENDS)rrrr{reittmprzrrrrs*       z_Pickler._batch_appendscCs<|jr|jtn|jtt|j||j|jdS)N)rr{ EMPTY_DICTrDICTrrr)rrrrr save_dict.s   z_Pickler.save_dictc Cs|j}|j}|js@x(|D] \}}|||||tqWdSt|}xtt||j}t|}|dkr|t x |D]\}}||||qxW|t n(|r|d\}}|||||t||jkrJdSqJWdS)Nrr) rr{rSETITEMr"rrr#rtrSETITEMS) rrrr{kvr%r&rzrrrr;s2     z_Pickler._batch_setitemscCs|j}|j}|jdkr0|jtt|f|ddS|t|j|t|}xXtt ||j }t |}|dkr|t x|D] }||qzW|t ||j krLdSqLWdS)Nr)rr)rr{rrsetr EMPTY_SETrr"rr#rtrADDITEMS)rrrr{r%Zbatchrzitemrrrsave_setZs$     z_Pickler.save_setcCs|j}|j}|jdkr0|jtt|f|ddS|tx|D] }||q>Wt||jkr|t |j |jt|ddS|t |j |dS)Nr)rr) rr{rr frozensetrrrrrr FROZENSETr)rrrr{r1rrrsave_frozensetrs    z_Pickler.save_frozensetc CsT|j}|j}|dkr t|dd}|dkr.|j}t||}y(t|ddtj|}t||\}}Wn,t t t fk rt d|||fYnX||k rt d|||f|j dkrtj||f} | r| dkr|ttd| n0| d kr|ttd | n|ttd | dS|jd d} ||kr4| }|j d kr^|j||j||tn||k rz|jt|| fn|j dkr|tt|ddt|ddn|jrtj} tj} ||f| kr| ||f\}}n|| kr| |}y(|tt|ddt|ddWn*tk rDt d|||j fYnX|j|dS)Nrr)levelz(Can't pickle %r: it's not found as %s.%sz2Can't pickle %r: it's not the same object as %s.%srrzd?Z7e7ee8d<d@dAZ9e9ee:d<dBdCZ;e;eed<dFdGZ?e?ee@d<dHdIZAeAeeBd<dJdKZCeCeeDd<dLdMZEeEeeFd<dNdOZGeGeeHd<dPdQZIeIeeJd<dRdSZKeKeeLd<dTdUZMeMeeNd<dVdWZOeOeePd<dXdYZQeQeeRd<dZd[ZSd\d]ZTeTeeUd<d^d_ZVeVeeWd<d`daZXeXeeYd<dbdcZZeZee[d<dddeZ\e\ee]d<dfdgZ^e^ee_d<dhdiZ`e`eead<djdkZbebeecd<dldmZdedeeed<dndoZfdpdqZgdrdsZheheeid<dtduZjejeekd<dvdwZleleemd<dxdyZneneeod<dzd{Zpepeeqd<d|d}Zrereesd<d~dZteteeud<ddZveveewd<ddZxexeeyd<ddZzezee{d<ddZ|e|ee}d<ddZ~e~eed<ddZeeed<ddZeeed<ddZeeed<ddZeeed<ddZeeed<ddZeeed<ddZeeed<dS) _UnpicklerTASCIIstrict)rencodingerrorscCs2|j|_|j|_i|_||_||_d|_||_dS)Nr) r_file_readliner _file_readrrJrKrr)rrrrJrKrrrrsz_Unpickler.__init__cCst|dstd|jjft|j|j|_|jj|_|jj |_ g|_ g|_ |j j |_ d|_ |j}|j}y*x$|d}|s|t||d|qlWWn"tk r}z|jSd}~XnXdS)NrMz4Unpickler.__init__() was not called by %s.__init__()rr)rrrrr|rMrL _unframerrr metastackstackappendrrEOFErrorrr)rrrkeyZstopinstrrrrs(    z_Unpickler.loadcCs |j}|jj|_|jj|_|S)N)rPrOpoprQ)rrrrrpop_marks  z_Unpickler.pop_markcCs tddS)Nz%unsupported persistent id encountered)r)rrrrrpersistent_load%sz_Unpickler.persistent_loadcCs<|jdd}d|ko tkns2td|||_dS)Nrrzunsupported pickle protocol: %d)rrrr)rrrrr load_proto*s z_Unpickler.load_protorcCs8td|jd\}|tjkr(td||jj|dS)Nz sys.maxsize: %d)r rrr rrNr)rrrrrr1s  z_Unpickler.load_framec CsLy|jddjd}Wntk r6tdYnX|j|j|dS)Nrrz2persistent IDs in protocol 0 must be ASCII stringsr)rdecodeUnicodeDecodeErrorrrQrV)rrrrr load_persid8s  z_Unpickler.load_persidcCs|jj}|j|j|dS)N)rPrTrQrV)rrrrrload_binpersidAs z_Unpickler.load_binpersidcCs|jddS)N)rQ)rrrr load_noneFsz_Unpickler.load_nonecCs|jddS)NF)rQ)rrrr load_falseJsz_Unpickler.load_falsecCs|jddS)NT)rQ)rrrr load_trueNsz_Unpickler.load_truecCsL|j}|tddkrd}n |tddkr4d}n t|d}|j|dS)NrFTr)rrrrrQ)rryvalrrrload_intRs z_Unpickler.load_intcCs|jtd|jdddS)Nztd|jd\}|dkr"td|j|}|jt|dS)NzdrXr)rQr r)rrrr load_binfloatsz_Unpickler.load_binfloatcCs"|jdkr|S|j|j|jSdS)Nr)rJrYrK)rrrrr_decode_strings z_Unpickler._decode_stringcCsl|jdd}t|dkrF|d|dkrF|ddkrF|dd}ntd|j|jtj|ddS) Nrrrs"'z)the STRING opcode argument must be quotedrrr)rrtrrQrkr  escape_decode)rryrrr load_strings (z_Unpickler.load_stringcCs@td|jd\}|dkr"td|j|}|j|j|dS)Nzsz(_Unpickler.load_dict..rr)rUrangertrQ)rdr)rr load_dicts z_Unpickler.load_dictcCs|st|t st|drly ||}Wqvtk rh}z&td|jt|ftjdWYdd}~XqvXn |j|}|j |dS)NZ__getinitargs__zin constructor for %s: %sr) rrrrrrrexc_inforrQ)rklassrrerrrrr _instantiates  0 z_Unpickler._instantiatecCsL|jddjd}|jddjd}|j||}|j||jdS)Nrrrr)rrY find_classrrU)rrrrrrr load_insts z_Unpickler.load_instcCs"|j}|jd}|j||dS)Nr)rUrTr)rrrrrrload_obj!s z_Unpickler.load_objcCs2|jj}|jj}|j|f|}|j|dS)N)rPrTrrQ)rrrrrrr load_newobj(s  z_Unpickler.load_newobjcCs>|jj}|jj}|jj}|j|f||}|j|dS)N)rPrTrrQ)rrrrrrrrload_newobj_ex/s    z_Unpickler.load_newobj_excCsF|jddjd}|jddjd}|j||}|j|dS)Nrzutf-8rr)rrYrrQ)rrrrrrr load_global7s z_Unpickler.load_globalcCsJ|jj}|jj}t|tk s,t|tk r4td|j|j||dS)NzSTACK_GLOBAL requires str)rPrTrrrrQr)rrrrrrload_stack_global>s   z_Unpickler.load_stack_globalcCs|jdd}|j|dS)Nrr)r get_extension)rrArrr load_ext1Fsz_Unpickler.load_ext1cCs td|jd\}|j|dS)Nzrr:rr;rr<rrrrrrrrrDUPrrrrrrrrrrrrrrrr!rr$rr*rr+rr0rrrrrrrrrrrGs$                                                                   rGT)rcCst|||dj|dS)N)r)rr)rrrrrrr_dumpsrcCs(tj}t|||dj||j}|S)N)r)rkrlrrgetvalue)rrrrxresrrr_dumpssrrHrI)rrJrKcCst||||djS)N)rrJrK)rGr)rrrJrKrrr_load srcCs0t|trtdtj|}t||||djS)Nz%Can't load pickle from unicode string)rrJrK)rrrrkrlrGr)srrJrKrrrr_loadss   r) r r rrrrrrrcCsddl}|jS)Nr)doctestZtestmod)rrrr_test*srrz$display contents of the pickle files)Z description pickle_filebr*zthe pickle file)rnargshelpz-tz--test store_truezrun self-test suite)actionrz-vz)run verbosely; only affects self-test run)N)N)typesrcopyregrrrr itertoolsr functoolsrrr Zstructr r rbrkr r@__all__r bytearrayZ bytes_typesZformat_versionZcompatible_formatsrr Exceptionr r rrZorg.python.corer r8rrrrrrrrrrrrrrrrrrrrr!rr?r(r'r$rrrrrrrrrrr*rrr+rrrrrr:r;r<rrrrrrrrr r rrr r/r0r4rr>rrurdirrgr|rrrrrrGrrrr_picklerrrrrrrrargparseArgumentParserparser add_argumentZFileType parse_argsrZtestrZ print_helppprintrxrrrrrs,        $* -0