B _1 @s4dddddddddd g Zd d lZd d lZd d lZd d lZyeWneZYnXyd d lm Z Wn e k rd d l m Z YnXyd d l m Z Wnd d l m Z YnXd dlmZddZd%ddZdd ZddZddZd&ddZddZddZd'ddZd(d dZd)d!d"Zd*d#dZd+d$dZd S),yaml_fixjson_fix load_yaml load_jsonextract_subtext compare_repncompare_stringscompare_yaml_filescompare_json_filessimple_yaml_parserN) OrderedDict)StringIO)open_possibly_compressed_filecCsRy t|}|SYnXy t|}|SYnXy t|}|SYnX|S)N)intfloateval)strvalr=/tmp/pip-unpacked-wheel-c5cl1q8n/pyutilib/misc/pyyaml_util.py yaml_eval s rc Csd}d}x|D]}|}d}xt|rd}|dkr:q"|dkrHq"|dkrVPd}x$|t|kr~||dkr~|d 7}q\W||d krq"|dkr||krd|fS|}||kr||fS||kr"||d kr,|dkrg}||d d}t|dkr|t|nt||\}}d}||q"|dkr:i}|d } | d} | d }t|dkrxt||| <q"t||\}}d}||| <q"WqW||fS) NrTFz---z...r  #-:)striplenappendrrecursive_yaml_parsersplit) stream_depthdepthdataZLinelineflagdvaluetokenskeyrrrr!3sZ           r!cCs6t|tr*t|}t|d}||St|dS)Nr ) isinstance basestringrr!close)r#_streamZrepnrrrr hs   cCst|ts|S|ddS)Nrz\x3a)r-r.replace)rrrrrqs cCst|S)N)r)rrrrrwsrrc Cst|trt|}n|}|dkr(||kg}t|dk}xh|D]`}td|}|sf||rfd}q>|dk r|dkr||rPq>|r>|d|kr>||q>Wt|tr| d |S)Nr z[ ]+Tr) r-r.rrrer"r startswithr r/join) r# begin_strend_strcommentr0ansstatusr'r+rrrr{s&      cCs ddl}t|}|j||jdS)Nr )Loader)yamlr loadZ SafeLoader)rr;Zistreamrrrrscs2ddl}fddfdd|j|dS)Nr csg}tjdkrfx|D]L}t|}|tkr4|d}n"|tkrF|}n|tkrV|}||qWnVxT|D]L}t|}|tkr|d}n"|tkr|}n|tkr|}||qlW|S)N)r zutf-8) sys version_infotypeunicodeencodedictlistr bytes)r&r8rval_type)_to_dict_to_listrrrHs*       zload_json.._to_listcsi}tjdkrx|D]d\}}t|tkr6|d}t|}|tkrR|d}n"|tkrd|}n|tkrt|}|||<qWnrxp|D]d\}}t|t kr|d}t|}|t kr|d}n"|tkr؈|}n|tkr|}|||<qW|S)N)r=r zutf-8) r>r? iteritemsr@rArBrCrDitemsrE)r&r8r,rrF)rGrHrrrGs2          zload_json.._to_dict) object_hook)jsonloads)rrLr)rGrHrrsTc Cst|t|krNt|ttgkr0t|ttgksNtd|t|t|ft|tkr|st|t|krtd|t|t|f|rt|t|krtd|t|t|fd}d}d}x|t|krX|t|krXy8t||||||dt |d||d|d 7}Wn*t k rLt d }t |YnX|d 7}qW|t|krtd ||t|t||fnjt|tkst|tkr\|rt|t|krtd |t|t|fxh|D]`} | |kr,td || t|t|ft|| || ||d t | ||dqWnt|tksxt|tkrt|ttgkrt|ttgkr|dk rt|||krtd||||fn(||krtd|t|t|fdS)Nz3(%s) Structural difference: baseline: %s output: %szB(%s) Baseline has longer list than output: baseline: %s output: %szM(%s) Baseline list length does not equal output list: baseline: %s output: %sr r[]) toleranceprefixexact using_yamlrzM(%s) Could not find item %d in output list: baseline: %s output: %s ERROR: %szE(%s) Baseline and output have different keys: baseline: %s output: %szJ(%s) Baseline key %s that does not exist in output:baseline: %s output: %s.zT(%s) Floating point values differ: baseline=%.17g and output=%.17g (tolerance=%.17g)z+(%s) Values differ: baseline: %s output: %s)r@rrIOErrorpprintpformatrDrrr Exceptionr>exc_infoprintrCr keysmathfabs ValueError) baselineoutputrRrSrTrUjimsgr,rrrrs       $ cCs|r8yt|}t|}Wqtk r4tdYqXny t|}Wn@tk r`tdYn&tk rtdt|YnXy t|}Wn&tk rtdt|YnXt|||||ddS)Nz9Cannot compare YAML strings because YAML is not availablez9Cannot compare JSON strings because JSON is not availablezProblem parsing JSON baselinezProblem parsing JSON output)rRrTrU)r ImportErrorrWrrZr\r)rarbrRrTrUZ baseline_repnZ output_repnrrrr!s8    c CsRt|} t| ||d} | t|} t| ||d} | t| | |||ddS)N)r5r6)rRrTrU)rrr/r) baseline_fname output_fnamerRbaseline_begin baseline_end output_begin output_endrTrUZINPUTrarbrrr compare_filesEs  rmc Cst||||||||dd S)NF)rRrirjrkrlrTrU)rm)rgrhrRrirjrkrlrTrrrr ]sc Cst||||||||dd S)NT)rRrirjrkrlrTrU)rm)rgrhrRrirjrkrlrTrrrrqs)r)rNr)rNrOTT)rNTT)rNrrrNTT)rNrrrNT)rNrrrNT)__all__rXr^r2r>rArr. collectionsr rfZ ordereddictr ioZpyutilib.misc.comparisonrrr!r rrrrrrrrmr rrrrrsj    5  ? I "