pBFj";ddlZddlZddlmZddlZddlZddlm Z m Z ddl m Z m Z mZddlmZmZddlmZmZdd lmZdd lmZd d gZd ZdZdZdZGddZdZGdde Z Gdde Z!Gdde Z"Gdde"Z#Gdde"Z$Gdde Z%Gd d!e Z&Gd"d#e Z'd$Zd%ZdS)&N)StringIO)decodeencode) BaseHandlerregister unregister)REVERSE_TYPE_MAPTYPE_MAP) b64decode b64encode)register_handlers)unregister_handlersrrc xt|tjr|St |fi|SN) isinstancenpgenericitemr)objkwargss CC:\PYTHON\_runtimes\venv\Lib\site-packages\jsonpickle/ext/pandas.py pd_encoders:#rz""xxzz #   c t|fi|Srr)srs r pd_decoders !  v  rc|sgSg}|d}d}|ddD])}||kr|dz }|||g|}d}*|||g|S)z Encodes a list of type codes using Run-Length Encoding (RLE). This allows for object columns in dataframes to contain items of different types without massively bloating the encoded representation. rrN)append) types_listencoded current_typecounttyps r rle_encoder's  Ga=L E!""~ ,   QJEE NNL%0 1 1 1LEE NNL%())) NrcLg}|D]\}}||g|z|S)z\ Decodes a Run-Length Encoded (RLE) list back into the original list of type codes. )extend) encoded_listdecodedr&r%s r rle_decoder,4s<G"&& Uuu}%%%% Nrc(eZdZdefdZddZdZdS)PandasProcessoric"||_||_dS)a :param size_threshold: nonnegative int or None valid values for 'size_threshold' are all nonnegative integers and None. If size_threshold is None, dataframes are always stored as csv strings :param compression: a compression module or None valid values for 'compression' are {zlib, bz2, None} if compression is None, no compression is applied N)size_threshold compression)selfr0r1s r__init__zPandasProcessor.__init__?s-&rNc|jht||jkrP|jr1|j|}d|d<t ||d<d|d<n ||d<d|d<||d<|S)NTcompvaluesFtxtmeta)r0lenr1compressrr )r2bufdatar8s rflatten_pandaszPandasProcessor.flatten_pandasLs   *s3xx$:M/M/M $&// ==#V &s^^DNDKK DNDKV  rc"|ddr |d}nWt|d}|ddr,|j|}|di}||fS)Nr7Tr6r5Fr8)getr r1 decompressr)r2r<r;r8s rrestore_pandaszPandasProcessor.restore_pandasZs 88E4  @x.CCDN++Cxx&& @&11#66==??xx##T{rr)__name__ __module__ __qualname__zlibr3r=rArrr.r.>sP&)t ' ' ' '         rr.c||did}|ddg}g}i}g}i}i}|D]\} } | dr|| | || <5| dr t || <U| dr|| d || <| || <t |||| ||fS) NdtypesFresetheaderrdatetimecomplex timedeltaobject)dtyperK parse_dates converters)restorer?items startswithr!rMdict) r8context meta_dtypesrKrQrR timedeltasparse_datetime_v2rPkvs rmake_read_csv_paramsr]fs7//$((8R"8"8/FFKXXh $ $FKJJ E!!##  1 << # #    q ! ! !#$ a \\) $ $ #JqMM \\+ & &    a E!HHE!HH KJ      rc4eZdZeZdZdZdZdS)PandasDfHandlerct}t|jtjr d|jD}|jj}d}n'|j}|jj}d}t|jtjr%d|jj D}|jj}d} n'|j}|jj}d} i} g} |jD]} || } | j j}|dkr| d rC| d}|| | <| d| | | <| tj|d| | | <| tj|d t!|d }t#| }|||t!|d || |d }t!| d }||||}|S) Nc,g|]}t|SrFtuple).0cols r z+PandasDfHandler.flatten..s999cuSzz999rTFc,g|]}t|SrFrb)rdidxs rrfz+PandasDfHandler.flatten..sCCC3E#JJCCCrrOcht|ttttt jfSr)rlistrVsetrcrndarrayxs rz)PandasDfHandler.flatten..sjT4eRZ,PQQrc t|Sr)rrms rroz)PandasDfHandler.flatten..s rpy/jpkeys) dtypes_rleindex index_namescolumns column_names is_multiindexis_multicolumns)r.rrwpd MultiIndexnamestolistnamerur6rPapplyanyr!r r?rr'r=)r2rr<pprwrxrz index_valuesrvry data_columns type_codesrecol_data dtype_nameserialized_values index_encoded rle_typesr8 data_encodeds rflattenzPandasDfHandler.flattensg    ck2= 1 1 $99S[999G;,L"OOk((**G;+L#O ci / / "CC#)2BCCCL)/K MM9++--L).K!M  ; F FC3xH!,JX%%>>QQ#%% J)17J7J(K(K(R(R(T(T%(9L%%%g....)1(9(9L%%%hl:x&H&HIIII%-OO$5$5 S!!!(,z8"D"DEEEE|$777 z** $"&gD111(*.  l666   tT:: rc|j|\}} t|d}n;#t$r.t jdd||cYSwxYw |d}n;#t$r.t jdd||cYSwxYwt|}t|dd}| d d r5tj || d  }n|}i} i} t||D]D\} } || } | d krd| D}|| | <%| | | <tj | d}|| | <Etj| }||_|jD]u} | | d} t#j|}|| ||| <L#t$rd| d}t j|YrwxYwt|dd}| dd r5tj || d }n)tj|| d}||_d |vrU| d d r | d |j_n| d |j_|S)NTrrzjsonpickle versions at and above v3.4 have a different encoding scheme for pandas dataframes. If you're not decoding an object encoded in pre-v3.4 jsonpickle, please file a bug report on our GitHub!) stacklevelrtzjsonpickle versions at and above v3.4 have a different encoding scheme for pandas dataframes. Please update your jsonpickle and re-encode these objects!rwrzFrxr}rqc,g|]}t|SrFr)rdrs rrfz+PandasDfHandler.restore..s@@@tfTll@@@rrOz9jsonpickle was unable to properly deserialize the column zL into its inferred dtype. Please file a bugreport on the jsonpickle GitHub! ruryrvr)rrAr Exceptionwarningswarn restore_v3_3KeyErrorr,r?r{r| from_tupleszipr DataFramerwrrPastypeIndexrur}r)r2rrr8rrrcolumns_decodedrwdf_datarHre type_coder col_values dtype_strdfrPmsgrrus rrSzPandasDfHandler.restores!W33C88 d *!,T:::LL * * * M@     $$S)) ) ) ) * *\*II * * * MR     $$S)) ) ) ) * ** !it<<< 88%u - - &m//txx'?'?0GG&G!':66 ( (NC#C(HG##@@x@@@ ) ' ,0HEE 's \' " " : # #C 311I #++S'..//3 # # #J"%JJJ  c"""""  #d7m$777 88OU + + IM--DHH]$;$;.EEH\0G0GHHHE T ! !xx)511 ;#'88N#;#;   "&((>":":  s315A)(A)-A665B.-B.82G++$HHc|j|\}}t||j\}}}|dd}|drt jt|fi|nt j }|D]} t j || || < | |}| t|dd|r ||j_|S)Ncolumn_level_namesr6ruT)inplace)rrAr]rWr?stripr{read_csvrr to_timedeltar set_indexrrwr}) r2r<csvr8paramsrYrZrrres rrzPandasDfHandler.restore_v3_3)sG**400 T0DT4<0X0X- -"XX&:DAAH~##%% BK 0 0 0 0 0  / /Cobg..BsGG YY( ) ) VDM**D 999  21BJ  rN)rBrCrDr.rrrSrrFrrr_r_sV   BBBBHZZZxrr_c.eZdZeZdZdZdS)PandasSeriesHandlerc|j|d<|j|jd|d<|j|jd|d<|S)z/Flatten the index and values for reconstructionrFrIrur6)rrWrrur6)r2rr<s rrzPandasSeriesHandler.flattenBsRxV  ,,SYe,DDW --cj-FFX rc|d}|j|dd}|j|dd}tj|||S)zRestore the flattened datarruFrIr6)rur)rWrSr{Series)r2r<rrur6s rrSzPandasSeriesHandler.restoreJs^F| $$T']%$@@%%d8nE%BByu48888rNrBrCrDr.rrrSrFrrrr?s?   B99999rrcBeZdZeZejZdZdZ dZ dS)PandasIndexHandlercd|jiS)Nrrr2rs r name_bundlerzPandasIndexHandler.name_bundlerVs!!rc||}tddt|ji|}t |}|j|||}|S)NrPrF)rrVstrrPrr~rr=)r2rr< name_bundler8r;s rrzPandasIndexHandler.flattenYsh'',, 88#ci..8K88SZZ\\""w%%c466 rc|j|\}}|dd}d|D}|jt |fd|i|}|S)NrPcHi|]\}}|dv d|tnd| S)>rr}rNc|SrrFrms rroz7PandasIndexHandler.restore...ds1rrb)rdr[r\s r z.PandasIndexHandler.restore..csI   1%%% rs 888888888800000000''''''''??????CCCCCC  5 6!!!.%%%%%%%%P@vvvvvkvvvr99999+999&4'''''1'''$$$$$0$$$     [    +(K, < < <     r