B YI~d @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`ZddaZedbZfdcZgehdddeeiDGdfdgdgZjGdhdidiZkdjdkZldldmZmdndoZndpdqZoGdrdsdsZpGdtduduZqddvdwdxdyZrddvdwdzd{Zsdvd|d}d~ddZtdvd|d}d~ddZuy0ddlvmZmZmZmwZwmxZxmyZymzZzm{Z{m|Z|Wn4e#k r^epeqZwZxereseteuf\ZyZzZ{Z|YnXddZ}e~dkrddlZejddZejdeddddejdddddejddddeZejre}n>ejsen,ddlZx"ejD]Ze{eZeeqWdS)) 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+/opt/alt/python37/lib64/python3.7/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|]}td|r|qS)z[A-Z][A-Z0-9_]+$)rematch).0xrrr srfc@sFeZdZdZdZddZddZddZdd d Zd d Z ddZ dS)_FramerricCs||_d|_dS)N) file_write current_frame)rrhrrrrsz_Framer.__init__cCst|_dS)N)ioBytesIOri)rrrr start_framingsz_Framer.start_framingcCs*|jr&|jdkr&|jddd|_dS)NrT)force)ritell commit_frame)rrrr end_framings z_Framer.end_framingFcCsf|jrb|j}||jks|rb|}|j}t||jkrP|ttdt|||t |_dS)Nzz&Can't get local attribute {!r} on {!r}z Can't get attribute {!r} on {!r})splitAttributeErrorformatgetattr)objnameZsubpathparentrrr _getattribute!s rc Cszt|dd}|dk r|Sx\ttjD]J\}}|dks(|dkrBq(yt||d|krZ|SWq(tk rpYq(Xq(WdS)Nr__main__r)rlistsysmodulesitemsrr)rr module_namemodulerrr whichmodule.s  rcCsh|dkr dS|d?d}|j|ddd}|dkrd|dkrd|dd krd|d d @dkrd|dd}|S) NrrrlittleT) byteordersignedr) bit_lengthto_bytes)renbytesresultrrr encode_long?s rcCstj|dddS)NrT)rr)int from_bytes)rwrrr decode_long]src@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_importscCs|dkr t}|dkrt}n"d|kr.tksy |tt|ddWntk r\tdYnXdS)NF)rrrz2persistent IDs in protocol 0 must be ASCII strings) rrrx BINPERSIDPERSIDrrUnicodeEncodeErrorr )rrrrrr+s  z_Pickler.save_persc Cst|tstdt|s"td|j}|j}t|dd} |jdkr| dkr|\} }} t| dsntd | |dk r| |j k rtd | |jd kr|| |||| |t n,t | j | f|| }|||d |tn|jdkr^| d kr^|d } t| dstd|dk r8| |j k r8td|dd}|| |||tn|||||t|dk rt||jkr|t||jt|d n |||dk r|||dk r|||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 classrr __newobj__rz+args[0] from __newobj__ args has no __new__z0args[0] from __newobj__ args has the wrong classr)rrr callablerrxrrrrr NEWOBJ_EXrrREDUCENEWOBJrrPOPrr_batch_appends_batch_setitemsBUILD) rfuncargsstateZ listitemsZ dictitemsrrrxZ func_nameclskwargsrrrr7sd           "      z_Pickler.save_reducecCs|tdS)N)rxNONE)rrrrr save_nonesz_Pickler.save_nonecCs4|jdkr||rtntn||r*tntdS)Nr)rrxNEWTRUENEWFALSETRUEFALSE)rrrrr save_bools z_Pickler.save_boolcCs.|jr~|dkrN|dkr.|ttd|dS|dkrN|ttd|dSd|krbdkr~nn|ttd|dS|jd krt|}t|}|d kr|t td||n|t td||dSd|krdkrnn|t t | d d n|tt | d d dS)Nrrzdrr)rrxBINFLOATr FLOATrr)rrrrr save_floatsz_Pickler.save_floatcCs|jdkr@|s |jtd|dn|jtjt|ddf|ddSt|}|dkrj|tt d||nf|dkr|jdkr| t t d ||n<||j j kr| tt d ||n|tt d ||||dS) Nrr)rlatin1rzdSq>WdS)Nrr) rrxrAPPENDiterrr _BATCHSIZErsrAPPENDS)rrrrxreittmprrrrr9s*       z_Pickler._batch_appendscCs<|jr|tn|tt||||dS)N)rrx EMPTY_DICTrDICTrrr)rrrrr save_dictTs   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) rrxrSETITEMr&rrr'rsrSETITEMS) rrrrxkvr)r*rrrrras2     z_Pickler._batch_setitemscCs|j}|j}|jdkr0|jtt|f|ddS|t||t|}xXtt ||j }t |}|dkr|t x|D] }||qzW|t ||j krLdSqLWdS)Nr)rr)rrxrrsetr EMPTY_SETrr&rr'rsrADDITEMS)rrrrxr)Zbatchritemrrrsave_sets$     z_Pickler.save_setcCs|j}|j}|jdkr0|jtt|f|ddS|tx|D] }||q>Wt||jkr|t | |jt|ddS|t | |dS)Nr)rr) rrxrr frozensetrrrrr r FROZENSETr)rrrrxr5rrrsave_frozensets    z_Pickler.save_frozensetc CsX|j}|j}|dkr t|dd}|dkr.|j}t||}y(t|ddtj|}t||\}}Wn.t t t fk rt d|||fdYnX||k rt d|||f|j dkrt||f} | r| dkr|ttd| n0| d kr|ttd | n|ttd | dS|d d} ||kr6| }|j d kr`|||||tn||k r||t|| fn|j dkr|tt|ddt|ddn|jrtj} tj} ||f| kr| ||f\}}n|| kr| |}y(|tt|ddt|ddWn,tk rHt d|||j fdYnX||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_readrrNrOrr)rrrrNrOrrrrsz_Unpickler.__init__c Cst|dstd|jjft|j|j|_|jj|_|jj |_ g|_ g|_ |j j |_ d|_ |j}|j}y*x$|d}|s|t||d|qlWWn$tk r}z|jSd}~XYnXdS)NrQz4Unpickler.__init__() was not called by %s.__init__()rr)rrrrr{rQrP _unframerr~r metastackstackappendrrEOFErrorrr)rr~rkeyZstopinstrrrr's(    z_Unpickler.loadcCs |j}|j|_|jj|_|S)N)rTrSpoprU)rrrrrpop_markEs  z_Unpickler.pop_markcCs tddS)Nz%unsupported persistent id encountered)r)rrrrrpersistent_loadKsz_Unpickler.persistent_loadcCs:|dd}d|kr"tks0ntd|||_dS)Nrrzunsupported pickle protocol: %d)r~rrr)rrrrr load_protoPs z_Unpickler.load_protorcCs8td|d\}|tjkr(td||j|dS)Nz sys.maxsize: %d)r r~rr rrRr)rrrrrrWs  z_Unpickler.load_framecCsLy|ddd}Wntk r6tdYnX|||dS)Nrrz2persistent IDs in protocol 0 must be ASCII strings)rdecodeUnicodeDecodeErrorrrUrZ)rrrrr load_persid^s  z_Unpickler.load_persidcCs|j}|||dS)N)rTrXrUrZ)rrrrrload_binpersidgs z_Unpickler.load_binpersidcCs|ddS)N)rU)rrrr load_nonelsz_Unpickler.load_nonecCs|ddS)NF)rU)rrrr load_falsepsz_Unpickler.load_falsecCs|ddS)NT)rU)rrrr load_truetsz_Unpickler.load_truecCsL|}|tddkrd}n |tddkr4d}n t|d}||dS)NrFTr)rrrrrU)rrwvalrrrload_intxs z_Unpickler.load_intcCs|td|dddS)Nztd|d\}|dkr"td||}|t|dS)Nzdr\r)rUr r~)rrrr load_binfloatsz_Unpickler.load_binfloatcCs"|jdkr|S||j|jSdS)Nr )rNr]rO)rrrrr_decode_strings z_Unpickler._decode_stringcCsl|dd}t|dkrF|d|dkrF|ddkrF|dd}ntd||t|ddS)Nrrrs"'rz)the STRING opcode argument must be quoted)rrsrrUror  escape_decode)rrwrrr load_strings (z_Unpickler.load_stringcCs@td|d\}|dkr"td||}|||dS)Nz*sz(_Unpickler.load_dict..rr)rYrangersrU)rdr)rr load_dict(s z_Unpickler.load_dictc Cs|st|trt|drjy ||}Wqttk rf}z$td|jt|ftdWdd}~XYqtXn ||}| |dS)NZ__getinitargs__zin constructor for %s: %sr) rrrrrrrexc_inforrU)rklassrrerrrrr _instantiate4s  0 z_Unpickler._instantiatecCsL|ddd}|ddd}|||}|||dS)Nrr)rr] find_classrrY)rrrrrrr load_inst@s z_Unpickler.load_instcCs"|}|d}|||dS)Nr)rYrXr)rrrrrrload_objGs z_Unpickler.load_objcCs2|j}|j}|j|f|}||dS)N)rTrXrrU)rrrrrrr load_newobjNs  z_Unpickler.load_newobjcCs>|j}|j}|j}|j|f||}||dS)N)rTrXrrU)rrrrrrrrload_newobj_exUs    z_Unpickler.load_newobj_excCsF|ddd}|ddd}|||}||dS)Nrzutf-8)rr]rrU)rrrrrrr load_global]s z_Unpickler.load_globalcCsJ|j}|j}t|tk s,t|tk r4td||||dS)NzSTACK_GLOBAL requires str)rTrXrrrrUr)rrrrrrload_stack_globalds   z_Unpickler.load_stack_globalcCs|dd}||dS)Nrr)r~ get_extension)rrErrr load_ext1lsz_Unpickler.load_ext1cCs td|d\}||dS)Nzrr?rr@rrrrrrrr rDUPrrrrrrrrrrrrrrrr%rr(rr.rr/rr4rrrrrrrrrrrKs$                                                                   rKT)rcCst|||d|dS)N)r)rr)rrrrrrr_dump0srcCs(t}t|||d||}|S)N)r)rjrkrrgetvalue)rrrrvZresrrr_dumps3srrLrM)rrNrOcCst||||dS)N)rrNrO)rKr)rrrNrOrrr_load:srcCs0t|trtdt|}t||||dS)Nz%Can't load pickle from unicode string)rrNrO)rrrrjrkrKr)srrNrOrrrr_loads>s   r) r r rrrrrrrcCsddl}|S)Nr)doctestZtestmod)rrrr_testWsrrz$display contents of the pickle files) 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 structr r rbrjr rD__all__r  bytearrayZ bytes_typesZformat_versionZcompatible_formatsrr Exceptionr r rrZorg.python.corer r<rrrr rrrrrrrrrrrrrrrrr%rrCr,r+r(rrrrr#r"rrrrr.rrr/rrrrrr>r?r@rrrrrrrrrr rrr r3r4r8rrBrrurdirrgr{rrrrrrKrrrr_picklerrrrrrrrargparseArgumentParserparser add_argumentFileType parse_argsrZtestr print_helpZpprintrvrrrrrs,        ?* 40