
    5iK                        d Z ddlmZmZmZmZ ddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlmZ ddlZddlmZmZmZmZmZmZmZmZmZmZmZ ddlmZ dd	lm Z  d
 Z!d Z"g dZ#d Z$d Z%d<dZ&d=dZ'e(fdZ)d Z*d Z+d Z,e(fdZ-d Z.d Z/d>dZ0d?dZ1d Z2d Z3d Z4d=dZ5d Z6d Z7d Z8d! Z9d" Z:d# Z;d$ Z<d@d%Z=d& Z>d@d'Z?d@d(Z@d) ZAd@d*ZBd+ ZCd@d,ZDd- ZEd. ZFd=d/ZGd0 ZHd1 ZId@d2ZJd@d3ZKd4 ZLd5 ZMd6 ZNd7 ZOdAd8ZPd9 ZQ	 	 dBd:ZRd; ZSy)Cz
This submodule contains helper functions for parsing and printing the
contents of describe hashes for various DNAnexus entities (projects,
containers, dataobjects, apps, and jobs).
    )print_functionunicode_literalsdivisionabsolute_importN)defaultdict   )REDGREENBLUEYELLOWWHITEBOLD	UNDERLINEENDC	DELIMITERget_delimiterfill)format_timedelta   )
basestringc                 D   | dk(  r#t               t               z   | z   t               z   S | dk(  r#t               t               z   | z   t               z   S | dv rt               | z   t               z   S | dk(  rt               | z   t               z   S t	               | z   t               z   S )Nfaileddone)runningin_progresspartially_failed)r   r	   r   r
   r   states    u/home/marpiech/ifpan-abm-pgxpred/analysis/marpiech-gwas-test/venv/lib/python3.12/site-packages/dxpy/utils/describe.py
JOB_STATESr    %   s    v~%..	&v%'$&00	,	,w''	$	$uu}tv%%x%$&((    c                     | dk(  rt               | z   t               z   S | dk(  rt               | z   t               z   S | dk(  rt               | z   t               z   S | S )Nopenclosingclosed)r   r   r
   r   s    r   DATA_STATESr&   1   sY    x%$&((	)	x%$&((	(	w''r!   )bytesKBMBGBTBc                 0   | dt         d   z   S | dk(  rd}d}nTt        j                  t        j                  | d            }t	        t        t        j                  |dz        d            }|dk(  rdndt        |       d|dz  z  z  z  d	z   t         |   z   S )
zf
    Formats a byte size as a string.

    The returned string is no more than 9 characters long.
    z0 r   
         z%d%.2fr    )
SIZE_LEVELmathfloorlogintminfloat)size	magnitudelevels      r   get_size_strr<   >   s     |jm##qy	JJtxxb12	C

9>2A67QJDFuT{Qr]/JKcQT^_dTeeer!   c                     t        | t              r| S d| v r(ddj                  t        t        | d               z   dz   S d| v r(ddj                  t        t        | d               z   dz   S y)Nz$and(z AND )z$orz OR zType spec could not be parsed)
isinstancer   joinmapparse_typespecthings    r   rC   rC   O   sj    %$	5W\\#neFm"DEEKK	%V[[^U5\!BCCcII.r!   c                 h   |ry| d   j                  d      re| j                         }|d   dd  |d<   d| v s| j                  d      rdt        ||d|      z   d	| d
   dz   S t        ||d|      d	| d
   dz   S d}d}|rd| v s| j                  d      rd}|dz  }||rdnd| d
   z   z  }|xs
 d| v xs d| v }|r||rdnddz   z  }d}|r
|| d   z  }d}d| v r|s|dz  }nd}|dt	        | d         z   z  }d| v r%|s|dz  }|dt        j                  | d         z   z  }|r|dz  }|r|r|dz  }|S )Nclassarray   defaultoptional[F)include_classshow_optapp_help_versionz [-inamez=... [...]]]z=... [...]] Tz-itype=r1   r>   , ztype zdefault=r?   ])
startswithcopygetget_io_descrC   jsondumps)		parameterrM   rN   rO   scalar_parameterdescis_optionalinclude_parensis_firsts	            r   rY   rY   Y   s    Ig.99'B$>>+ %5W$=ab$A!	!Y]]:%>%5]]b  vF  G  G  bk  lr  bs  Ju  u  u/}W\o  A  [d  ek  [l  Dn  n  nDK	!Y]]:%>KCKD%T261BBBD"Sf	&9SY)=SN(cS88H	'""DLDH.6):;;;IDLD
TZZ	)(<===KKr!   c           
         | y|g }| D cg c]  }|d   |vs| }}t        t              }|D ]%  }||j                  d         j                  |       ' g }|j                  d g       D ]  }|j                  t	        |              |D ]M  }||j                  dj                  |             ||   D ]  }|j                  dt	        |      z          ! O t        |      dkD  r|j                  d       t        |      dk(  ry	t               d
t               z   j                  |      S dj                  |D cg c]  }t        |dd       c}      S c c}w c c}w )NnullrP   groupz{g}:)gz    r   z3<advanced inputs hidden; use --verbose to see more>-
z
                z                  i)subsequent_indentwidth_adjustment)
r   listrX   appendrY   formatlenr   rA   r   )specskip_fieldsparamfiltered_specgroupslist_of_paramsrd   s          r   get_io_specrt      s   |(,Quf[0PUQMQF 1uyy!"))%01 ND"% 2k%012 ==fmmem45E] 	=E!!&U);";<	=	= ;!ST
>a"}&,,^<<##M[%]DI &*%<B;>&@ %] ^ 	^/ R.%]s   EE E!c                    t        | |      xr t        |       dk(  xr@ t        | j                  d      t              xr t        | j                  d      t              xss t        |       dk(  xrc t        | j                  d      |      xrF t        | d   j                  d      t              xr" t        | d   j                  d      t              S )z
    :param thing: something that might be a job-based object reference hash
    :param reftype: type that a job-based object reference would be (default is dict)
    r   fieldjobr   $dnanexus_linkr@   rm   rX   r   rE   reftypes     r   
is_job_refr|      s    
 eW% O
e*/ 77+Z875):6
N %jAo MUYY'78'BMU#3488A:NM U#3488?LOr!   c                 $    d| v r| d   d   S | d   S )zX
    :returns: Job ID from a JBOR

    Assumes :func:`is_job_ref` evaluates to True
    rx   rw    rD   s    r   get_job_from_jborr      s'     5 %&u--U|r!   c                 $    d| v r| d   d   S | d   S )zc
    :returns: Output field name from a JBOR

    Assumes :func:`is_job_ref` evaluates to True
    rx   rv   r~   rD   s    r   get_field_from_jborr      s'     5 %&w//W~r!   c                 4    d| v r| d   j                  d      S y)z{
    :returns: Array index of the JBOR if applicable; None otherwise

    Assumes :func:`is_job_ref` evaluates to True
    rx   indexN)rX   rD   s    r   get_index_from_jborr      s&     5 %&**733r!   c                     t        | |      xrO t        |       dk(  xr? t        | j                  d      |      xr" t        | d   j                  d      t              S )Nr   rx   metadatary   rz   s     r   is_metadata_refr      s`    eW% HE
aH599-.8H 	5)*..z:JGHr!   c                 v    t        |       dz   t        |       z   }t        |       }||dt        |      z   z  }|S )N:.)r   r   r   str)valansr   s      r   jbor_to_strr      sD    
C
 3
&)<S)A
AC$EsSZJr!   c                 |   t        |       rt        |       S t        | t              rSd| v rOt        | d   t              r| d   S d| d   v rd| d   v r| d   d   dz   | d   d   z   S t        j                  |       S t        | t              r=t        |       dk(  ryddj                  | D cg c]  }t        |       c}      z   d	z   S t        | t              rGd
dj                  | j                         D cg c]  \  }}|dz   t        |      z    c}}      z   dz   S t        j                  |       S c c}w c c}}w )Nrx   projectidr   r   z[]z[ rT   z ]z{ : z })r|   r   r@   dictr   rZ   r[   rj   rm   rA   io_val_to_stritems)r   itemkeyvalues       r   r   r      s5   #3	C	#3s#:c*+Z8'((#.//DC@P<Q4Q'(3c9C@P<QRV<WWW::c?"	C	s8q=$))S$IT]4%8$IJJTQQ	C	diiUXU^U^U` azsEtmE.B!B abbeiiizz#	 %J as   )D3
6D8c                    t        |       dk(  r||z   dz   S |t        |      }||z   |d|z  z   j                  | j                         D cg c]"  \  }}t        |dz   t	        |      z   dd      $ c}}      z   S c c}}w )Nr   rf   r1    = z	         F)rh   break_long_words)rm   rA   r   r   r   )
job_outputprefixtitle	title_lenr   r   s         r   job_output_to_strr      s    
:!~##E
I~I!5 ; ;mwm}m}m=A_i_bdi >B#+P]^cPdBdUZTY>[ =A !B B 	B =As   'A=c                 p   fd}|i }| yt        |       dk(  rt        |      dk(  ryt               dt               z   j                  | j                         D cg c]  \  }}||z    ||t	        |            z    c}}|j                         D cg c]  \  }}d|z   |z   t	        |      z   dz    c}}z         S | j                         D cg c]A  \  }}t        |dz   |z   dz    ||t	        |            z   dt        z  dt        dz   z  d	
      C }}}|j                  |j                         D cg c]@  \  }}t        d|z   dz   |z   dz   t	        |      z   dz   dt        z  dt        dz   z  d	
      B c}}       dj                  |      t        d  S c c}}w c c}}w c c}}w c c}}w )Nc                 @    | v rt               |z   t               z   S |S N)r   r   )r   r   highlight_fieldss     r   highlight_valuez%get_io_field.<locals>.highlight_value  s%    ""8e#df,,Lr!   rf   r   rg   rL   rU   r1   r   F)initial_indentrh   r   )rm   r   rA   r   r   r   FIELD_NAME_WIDTHextend)io_hashdefaultsdelimr   r   r   r   liness      `    r   get_io_fieldr     s     
7|qS]a/"}&,,  |C  |I  |I  |K  .LmwmprwsU{_SR_`eRf=g/g  .Lqyqq  rB  .CcmcfhmsSy5/@=QVCW/WZ]/]  .C.C D 	D $+==?	4  S%	 cCi%'#-]SXEY0ZZ%(+;%;(+/?!/C(D',. 4 4
 	 )1(8	: %#u	 39s?U2S8=;OORUU*-0@*@-04Dq4H-I,13 : 	;
 yy 0 122 .L .C4
:s   "F 
!F&AF,;AF2
c                    | |k(  ry t        |      rt        |      }||vrr	 ddlm}  |t	        |            j                  d      }|H|j                  t        |            }t        |      }|t        |t              r||   ||<   n|||<   y y y y y t        |t              r-t        t        |            D ]  }t        | |   ||   |        y t        |t              r d|vr|D ]  }	t        | |	   ||	   |        y y y #  Y y xY w)Nr   )job_describeoutputrx   )r|   r   dxpy.apir   r   rX   r   r   r@   rj   rangerm   get_resolved_jborsr   )
resolved_thing
orig_thingresolved_jborsjbor_strr   r   field_value
jbor_indexir   s
             r   r   r   !  s3   #*z*>)1)*;J*GHLLXV
)",..1DZ1P"QK!4Z!@J!-%k487B:7NN843>x0 5 9	 *	 *  
J	%s:' 	QA~a0*Q-P	Q	J	%*:**L 	UC~c2JsO^T	U +M	% s   A-D Dc                    ddl m} ddlm} g }| D ]  }|d   d   }d }|j	                  d      r	 t        j                  |      j                         j                  d      }|rZt        j                  |      }|j                  |j                         j                  d      d	z   |j                         z   d
z          |r|j                  |d   d	z   |z   d
z           |S # |$ r d }Y -w xY w)Nr   )find_one_data_object)DXErrorr   rx   zfile-AssetBundlerP    (r?   )bindings.searchr   
exceptionsr   rV   dxpyDXFileget_propertiesrX   DXRecordrk   describeget_id)rE   r   r   bundlesr   bundle_dxlinkassetbundle_asset_records           r   render_bundleddependsr   =  s    6$G FT
#34##G,&*kk-&@&O&O&Q&U&UVc&d#& MM*=>ENN5>>#3#7#7#?$#F#WZ]#]^ NN4<$.>DEF N  s   BC""C,+C,c                     g }| D ][  }t        j                   |      }|j                  dd       d|v rd|d   z   nd|d<   |j                   dj                  di |       ] |S )Npackage_manageraptversionr   rQ   z"{package_manager}: {name}{version}r~   )rW   
setdefaultrk   rl   )rE   renderedr   deps       r   render_execdependsr   R  st    H Liio(%01:c1As9~-rIC<CCJcJK	L
 Or!   c                 |   g }|d   +|j                  | dj                  |d   |d         f       n|j                  | |d   f       |j                  d|d   |j                  d      du rd	t               z   d
z   t	               z   dz   ndz   f       d|v r|d uxr d|d   v xr |d   d   |k7  }|d   d   }|rd|z   dz   }d|d   v r,|j                  d|d	z   t        |d   d         z   dz   f       n|j                  d|f       |r|j                  d|d   d   f       |D ]  }t        |d   |d           y )NrP   z{name} ({id})r   )rP   r   z  Executable
executable
accessibleFr   inaccessibler?   rQ   	executionparentAnalysisrL   rU   r   z  Executionz  Cached fromr   r   )rk   rl   rX   r	   r   r    print_field)r   stageas_stage_oflines_to_printis_cached_resultexecution_id_strlines          r   render_stager   [  s   NV} uo&<&<%-TYZ^T_&<&`abueDk23>5+>$yy6%? !35L>9DFBSHEG,I J K e&d2 O7G5Q\K]7] O -.>?;N 	 -d3"%55;eK((!!=2BT2IJW\]hWijqWrLs2svy2y"z{!!=2B"CD!!?E+4FGW4X"YZ &DGT!W%&r!   c                 X    t        t        j                  j                  | dz              S N  )r   datetimefromtimestamp	timestamps    r   render_short_timestampr   y  s"    x  ..y$?@@r!   c                 b    t         j                   j                  | dz        j                         S r   )r   r   ctimer   s    r   render_timestampr   |  s&    **9d?;AACCr!   "   c           
      B   t               1t        j                  j                  | t               z   |z   dz          y t        j                  j                  | dt        t        |       z
  z  z   t        |ddt        z  dt        z        j                         z   dz          y )Nrg   r1   d   )widthr   rh   )r   sysstdoutwriter   rm   r   lstriplabelr   s     r   r   r     s    "

0584?@

C+CJ677$uEHNQRbNbQTUeQe;g hngmgop 		r!   c           
          t         j                  j                  | t        dt        t        |       z
  z        z   |z   dz          y )Nr1   rg   )r   r   r   r   r   rm   r   s     r   print_nofill_fieldr     s9    JJUYs.>U.K'LMMPUUX\\]r!   c                 v    t        | t        |      dk(  rd       y t        d      j                  |             y )Nr   rf   rT   )r   rm   r   rA   )r   valuess     r   print_list_fieldr     s+    s6{a/SYt_5I5I&5QSr!   c                 F    t        | t        j                  |d             y )NF)ensure_ascii)r   rZ   r[   )r   
json_values     r   print_json_fieldr     s    tzz*5ABr!   c                 
   g d}t        d| d          t        d| d          d| v rt        d| d          d| v rt        d	| d          d
| v r|sd| vrt        d| d
          d| v r|rt        dt        | d                d| v r(t        d| d   | d   j                  d      rdndd         d| v r|s| d   t        d| d          d| v rt        d| d          d| v rt        d| d          d| v rt        d| d          d| v rt        d| d          d| v rt        d| d          d| v r| d   rt        d | d          d!| v r| d!   rt        d"| d!          d#| v r|rt        d$| d#          d%| v r| d%   rt        d&| d%          t        d't	        | d(                d)| v r-t        d*| d)   d+   | d)   d+   j                  d,      d-z   d         t        d.t	        | d/                t        d0d1| d2   z  d3z          d4| v rt        d5d1| d4   z  d3z          d6| v rt        d7d8| d6   z         d9| v sd:| v r6d9| v rd;| d9   d<z  fz  nd=}d:| v rd;| d:   d<z  fz  nd=}t        d>|d?|d@       dA| v r{t        | dA   | dA   nd| dB   C      }| j                  dA      | j                  dD      d,}n0| j                  dD      |dEt        | dD   | dB   C      d@}ndF|z  }t        dG|       dH| v r_| dH   | dH   nd}| j                  dH      | j                  dI      d,}n"| j                  dJ      |dK| dJ   dL}ndM|z  }t        dN|       dO| v r{t        | dO   | dO   nd| dB   C      }| j                  dO      | j                  dP      d,}n0| j                  dP      |dEt        | dP   | dB   C      d@}ndF|z  }t        dQ|       dR| v rt        dS| dR          dT| v rt        dUt        | dT                dV| v rt        dW| dV          dX| v rLt        dY| dX   j                         D cg c]#  \  }}||j                  d      rdndd  dZz   |z   % c}}       d[| v rt        d\| d[          d]| v r6t        d^| d]   j                         D cg c]  \  }}|d_z   |z    c}}       d`| v rt        da| d`          db| v rt        dc| db          dd| v rt        de| dd          df| v rt        dgt	        | d/                dh| v rt        di| dh          dj| v rt        dk| dj          | D ]  }	|	|vst        |	| |	           y c c}}w c c}}w )lN)+r   rG   rP   summarydescription	protected
restrictedcreatedmodified	dataUsagesponsoredDataUsagetagsr;   foldersobjectspermissions
properties	appCachesbillTor   	createdBytotalSponsoredEgressBytesconsumedSponsoredEgressBytescontainsPHIdatabaseUIViewOnlyexternalUploadRestrictedregionstorageCostpendingTransferatSpendingLimit"currentMonthComputeAvailableBudget&currentMonthEgressBytesAvailableBudget"currentMonthStorageAvailableBudgetcurrentMonthComputeUsagecurrentMonthEgressBytesUsage currentMonthExpectedStorageUsagedefaultSymlinkdatabaseResultsRestricted	destroyAtr   rR   appappNameIDr   ClassrG   rP   Namer  Summaryr  Descriptionr   Versionr  	Billed touser-   r   r  zPending transfer tor;   zAccess levelr  Regionr  	Protectedr  
Restrictedr  zContains PHIr  zDatabase UI View Onlyr  zExternal Upload Restrictedr!  zDefault Symlinkr"  zDatabase Results RestrictedCreatedr  r  
Created byuserrf   r   Last modifiedr  z
Data usager0   r  z GBr	  zSponsored datar  zStorage costz$%.3f/monthr  r  z%.2f GBg      Az??zSponsored egressz	 used of z totalr  currencymetar  z of z%s of unlimitedzCompute usage for current monthr  rQ   r  z
 Bytes of z Bytes totalz%s Bytes of unlimitedzEgress usage for current monthr   r  z(Expected storage usage for current monthr  zAt spending limit?r  z# Filesr  Foldersr  Permissionsr   r
  Tagsr  
PropertiesrS   r  z
App cachesrR   zContainer typer   zAssociated projectr#  zTo be destroyedr$  zAssociated App IDr%  zAssociated App)
r   r   rV   r   r   findformat_currencyrX   r   r   )
r^   verboserecognized_fieldstotal_egress_strconsumed_egress_strcurrent_usagemsgr   r   rv   s
             r   print_project_descrE    s   
 d4j!g'~FDL)DItI/'Yd-BM4#67DWIs4	?34 4K$x.d8n6O6OPW6X^_1`"abD g6G1H1T.5F0GH$NDM24Hd8n- dd;&78ttL'9:m)<=t#-A(B0$7K2LM!T)d3M.N5t<V7WX4G*D1A,BC"d*t4O/P6=X8YZ 	+DO<=dL${"3F";D<Mf<U<Z<Z[^<_bc<c<d"ef!1$z2B!CDv[(99UBCt#$v5I0J'Je&STNMD4G$GH"d*.LPT.T9TA %-H(IK(W'YYGK 	 "@4!G (40N+OR]+]*__MQ 	&.ACST	W!T)'DQkLlLx-G(H~  GK  LV  GW  X88./7DHHEi<j<rCXX:;G&3_TJnEovz  |F  wG  6H  IC#m3C5s;%-@DEc@d@p;<vw8823;@TCXX>?K2?FnAopC)M9C4c:)T1'TXY{T|  UI-O(P  OP  W[  \f  Wg  h8867?DHHMqDrDzCXX:;G&3_TJnEovz  |F  wG  6H  IC#m3C>DD -t4E/FG DIs4	?34DDO4W[\iWjWpWpWrseScnnW-156<uDs	
 ~f.tDQ]L^LdLdLf'gjc5c	E(9'ghdtK'89 ~$d6l3D($y/:d%'7Z8H'IJ}'e5D$d9o6 1))UDK01- t
 (hs   ((T<Uc                 p    | j                  d      }|s"t        |t              r|j                  dg       S g S )NdetailsadvancedInputs)rX   r@   r   )r^   r?  rG  s      r   get_advanced_inputsrI    s3    hhy!Gz'40{{+R00Ir!   c                 f   g d}t        d| d          t        d| d          d| v r(t        d| d   | d   j                  d      rd	nd
d         t        d| d          t        d| d          t        d| d          t        d| d   | d   j                  d      rd	nd
d         t        dt        | d                t        dt        | d                t        d| d          d| v rt        d| d   t	        | d         nd       t        d| d          t        d| d          t        d | d!          | d!   sg }| d"   }t        |t              rd#|v r
|s|d#   }|d#= d$| vs| d$   d
k  rt        d%d       nt        d%t        | d$                d&| v r| d&   t        d'| d&          d(| v r| d(   t        d)| d(          d*| v r| d*   t        d+| d*          t        d,| d-          d"| v rt        d.| d"          t        d/| d0          t        d1| d2          d3| v rt        d4t        | d3   |5             t        d6t        | d7                t        d8| d9   d:          d;| d9   v rt        d<| d9   d;          d=| d9   v rt        d=t        | d9   d=                d>| d9   v rt        d>t        | d9   d>                d?| d9   v rt        d@| d9   d?          d;| v rt        d<| d;          dA| v rt        dBt	        | dA                dC| v rt        dD| dC          | D ]  }||vst        || |           y )EN)r   rG   rP   r   aliasesr  r  r  deleted	publishedr   subtitler  
categoriesaccessdxapi	inputSpec
outputSpecrunSpec	resourcesr  	installed
openSourcer  appletinstallsbillingrG  developerNotesauthorizedUserstreeTurnaroundTimeThresholdr&  r   r'  rG   r  r,  r-  r.  r   r(  rP   r+  r   AliasesrK  r3  r  r2  r  r5  r  zCreated fromrX  r]  Tree TAT thresholdrf   	InstalledrV  zOpen sourcerW  DeletedrL  rG  rH  rM  	Publishedr   TitlerN  Subtitler  r)  
CategoriesrO  DetailsAccessrP  API versionrQ  rR  
Input Specro   Output SpecrS  InterpreterrT  interpreterrU  	ResourcesbundledDependsexecDependssystemRequirementsSys RequirementsrY  z
# Installsr\  AuthorizedUsers)r   rV   r   r   r   r   r@   r   r   rt   r   r   )r^   r?  r@  advanced_inputsrG  rv   s         r   print_app_descru  $  s   Kd4j!g'4KhT(^5N5Nw5W]^0_!`aV%	4	?+YY0d;/T+5F5Q5QRY5Z`a0bcd	+DO<=!1$z2B!CDX/$,(VZ[xVy  WF#d3P.Q*R  LO  	P[${"34]D$67YY0	?y/gt$)9W)D")*:";()d"d;&7!&;S)%5d;6G%HId?tG}8g/$z"2">
D$45i!<	4	?3tL'9:YY84>2M4=1$|[k9JXg-hi}k$|:L.MNtI}'EFd9o- d9ok.JK4	?2 !13HiYiIj3klY/ 0B4	?S`Ca0bc#tI6 !3T)_EY5Z[$T+%67TL#d:&6"78D *D1B,CD 1))UDK01r!   c           
         g d}d}t        d| d          t        d| d          d| v r(t        d| d   | d   j                  d	      rd
ndd         t        d| d          t        d| d          t        d| d          t        d| d   | d   j                  d	      rd
ndd         t        dt        | d                t        dt        | d                d| v rt        d| d   t	        | d         nd       t        d| j                  dd             | j                  dd      s d| vs| d   dk  rt        dd       nt        dt        | d                d| v r| d   t        d | d          d!| v r| d!   t        d"| d!          d#| v r| d#   t        d$| d#          t        d%| d&          d'| v rt        d(| d'          t        d)| d*          t        j                  }|rct        j                  j                  |d+d,d-ii.      d,   }|r8|| d/   v r0| d/   |   d0   }t        d1|       d|v rt        d2|d          |j                  d3      5|j                  d4      $t        d5t        |d3   t        ||      6             |j                  d7      )|j                  d8      t        d9t        |d7                |j                  d4      d-}t        d:t        |d4                |j                  d8      t        d;t        |d8                d<|v r.t        |d<         D ]  \  }}t        d=t	        |      z   |        d>| v rt        d?| d>          |r
t!                | D ]  }	|	|vst        |	| |	           y )@N)r   rG   rP   r   rK  r  r  r  rL  rM  r   r  rO  rQ  r  r  rZ  r[  r\  regionalOptionsr]  Fr&  r   r'  rG   r  r,  r-  r.  r   r(  rP   r+  r   r^  rK  r3  r  r2  r  r5  r  r]  r_  rf   ra  rL  rM  rb  r   rc  rN  rd  r  r)  re  rO  rG  rf  rh  rQ  fieldsr  T)input_paramsrw  workflowDescribezWorkflow regionzWorkflow IDrR  inputsri  rj  rS  outputsrk  Workflow InputsWorkflow OutputsstagesStage r\  rs  )r   rV   r   r   r   r   rX   r   WORKSPACE_IDapiproject_describer   rt   rI  	enumerater   print_locked_workflow_note)
r^   r?  r@  is_locked_workflowcurrent_projectr  workflow_descr   r   rv   s
             r   print_globalworkflow_descr  e  s   ^ d4j!g'4KhT(^5N5Nw5W]^0_!`aV%	4	?+YY0d;/T+5F5Q5QRY5Z`a0bcd	+DO<=!1$z2B!CD$,(VZ[xVy  WF#d3P.Q*R  LO  	PYE :;88Iu%d"d;&7!&;S)%5d;6G%HId?tG}8g/$z"2">
D$45i!<	4	?3tL'9:YY8M4=1 ++XX..hYacgXhMi.jkstF&D):$;; $%6 7 ?@R S-v6=(}T/BC $$[1=-BSBST\B]Be&|[{A[i|  ~K  MT  jU  6V  W $$\2>=CTCTU^C_Cg&}k-P\B]6^_!%%h/;)-&&'8+mT\F]:^_!%%i0<&'9;}U^G_;`a},$-mH.E$F ?5$XA%6>?D *D1B,CD"$ 1))UDK01r!   c                 H    | d   t        d      z   | d   z   t        d      z   S )NrP   r   rR   r?   )r   )col_descs    r   get_col_strr    s)    Fio-0@@9S>QQr!   c                 ^   g d}d}t        d| d          t        d| d          d| v rt        d| d          d	| v rt        d
| d	          t        d| d          d| v rt        dt        | d                d| v rt        d| d   rdnd       d| v rt        d| d          d| v rAt        d| d   j                         D cg c]  \  }}dj	                  ||g       c}}       d| v rt        d| d          |rd| v rt        d| d          d| v rt        d| d          t        dt        | d                d| v rIt        d | d   d!   d"d         d#| d   v r-t        d$| d   d#          |rd%| d   v rt        d&| d   d%          t        d't        | d(                d)| v rt        d*t        | d)                d+| v rt        d,| d+          d-| v rt        d.| d-          d/| v rt        d0| d/          d1| v r|rt        d2| d1          d3| v rt        d4| d3   | d3   nd5       d6| v rt        d7| d6   t        | d6         nd5       d8| v rt        d9| d8          d:| v rt        d;| d:          | j                  d<      5| j                  d=      $t        d>t        | d<   t        | |      ?             | j                  d@      )| j                  dA      t        dBt        | d@                | j                  d=      dC}t        dDt        | d=                | j                  dA      t        dEt        | dA                dF| v rt        dG| dF   dH          dI| dF   v rt        dJ| dF   dI          dK| dF   v rt        dKt        | dF   dK                dL| dF   v rt        dLt        | dF   dL                dM| dF   v rt        dN| dF   dM          dO| v r.t        | dO         D ]  \  }}t        dPt        |      z   |        dQ| v rt        dQ| dQ   d          dR| v rM| dR   Ht        dS| dR   d          t        dTt        | dR   d                t        dUt!        | dR   d                | D ]2  }||v r	|dVk(  rt        dW| dV          |dXk(  rV| d   dYk(  r5dZ}	d[| v r| d[   rt#        d\      d]z   }	t        d^t%        | dX         |	z          `t        d^t        | dX                y|d_k(  rt        d`t        | d_                |dak(  rt'        | da         dbkD  rfdct#        dddet'        dc      z
  z        z   t)        | da   db         z   }
| da   dfd  D ]  }|
dgt#        dh      z   t)        |      z   z  }
! t+        |
       t        dc| da          $t        || |          5 |rt-                y y c c}}w )iN)$r   rG   r   folderrP   r  r
  typeshiddenrG  linksr  r  r   r   rN  r  rR  rS  rT  r  rQ  rP  r  r  	sponsoredr[  r  r{  r|  latestAnalysiseditVersionoutputFolderinitializedFrom	temporaryr]  Fr&  r   r'  rG   r   Projectr  Folderr(  rP   r   Stater  
Visibilityvisibler  Typesr  r<  rS   r
  r;  rG  rf  r  zOutgoing linksr2  r  r  r3  r4  r.  rw   z via the jobr   z runningr5  r  r  zEdit Versionr   rc  rN  rd  r  r)  r  r*  r  zOutput Folderrf   r]  r_  rP  rg  rQ  rh  rR  r{  ri  rj  rS  r|  rk  Tr}  r~  rT  rl  rm  rU  rn  ro  rp  rq  rr  r  r  r  r  zLast executionz  run atz  statemediaz
Media typer9   filerQ   r  rT   zsponsored by DNAnexusSizelengthLengthcolumnsr   Columnsr1      r   rg   z                )r   r&   r   r   rA   r   r   r   rX   r   rt   rI  r   r   r  r   r    r   r<   rm   r  printr  )r^   r?  r@  r  kvr   r   rv   sponsored_strcoldescscolumns               r   print_data_obj_descr    sC   8 d4j!g'DItI/4Hd8n-V%$G[g784LtH~89N$$w-0tT,EWE]E]E_'`TQ!Q(8'`a~f.9$DO4$)4=9	+DO<=dL${"3F";AB"?@D%%[(9%(@A<4+<<J[(9,(GH!1$z2B!CDNC](;$<=$GT']+TJZ 01DItI/M4#67OT.=Q=]T.%9cfg$,(VZ[xVy  WF#d3P.Q*R  LO  	P44>2$M4=1 xx(TXXh-?-G<T+5FTghlnuTv)wxxx)dhhy.A.I=+d<6H*IJ&!,k$x..IJ'-{4	?/KLDM4	?=#AB$y/)[$y/+*FGtI.-/DT)_UeEf/ghDO+],>tI}?],^_4	?2/iAU1VW4!$x.1 	3HAuCF*E2	3D %t,='>t'DE4D)9$:$F$d+;&<T&BCJ 06F1G	1R STIz$/?*@*IJK 5%%L$w-8&=F*$&M"d*tK/@(1$:Q(QT&\(B](RSDL(9:("Hc$x.&9:)#tI'!+(9S2c)n;L5M+NNQ\]abk]lmn]oQppH"&y/!""5 S D9V+<$<{6?R$RRS(O$YY@ U4356 "$ { (as    V)c                 B   	 t        j                  g dt         j                  t         j                        }|j                  | j	                               \  }}|j                         }|j                  dd      j                         S #  | j                         cY S xY w)N)z
ssh-keygenz-lfz
/dev/stdin)stdinr   z no commentrQ   )
subprocessPopenPIPEcommunicateencodedecodereplacestrip)ssh_host_keykeygenr   stderrs       r   printable_ssh_host_keyr     s    9!!"EZ__eoetetu!--l.A.A.CD --/~~mR06688	$!!##s   AB
 
Bc                    g d}t        d| d          | j                  d      t        dt        | d                t        d| d          d| v r| d   t        d	| d          d
| v r| d
   t        d| d
          t        d| d          d| v rt        d| d          d| v r(t        d| d   | d   j                  d      rdndd         d| v rt        d| d          d| v rt        d| d          t        d| d          d| v rt        d| d          n[| j                  dd      j                  d      rt        d | d          n*d!| v rt        d"| d!          nd#| v rt        d | d#   d          d$| v r| d$   t        d%| d$          d&| v rt        d'| d&          t        d(t	        | d)                d*| v rt        d+| d*          d,| v r!| d,   t        d-d.       nt        d-| d,          | d/   t        d0d.       nt        d0| d/          | j                  d1      t        d2t        | d1                d3| v r| d3   t        d4| d3          d5| v r#| d5   t        d6| d5          t        d7| d8          d9| v rNt        t        | d#   d9   | d9               D ]-  \  }\  }}|d:   |d:<   t        d;t        |      z   || d   <       / d=| v rt        d>| d=          d?| v rI| d@   j                         D ci c]  \  }}|| d?   vs|| }}}t        dAt        | d?   |B             nt        dAt        | d@                i }	| j                  d?| d@         }
| dC   D ],  }||
v s| dC   |   |
|   k7  st        | dC   |   |
|   |	       . t        |	      dk7  r-t        dDt        |	t               dEz   t               z   F             t        dGt        | dH                dI| v rt        dJ| dI          t        dK| j                  dL      rdI| dL   v r| dL   dI   nd.       t        dM| dN   dd         t        dOt        | dP                | j                  dQ      t        dRt        | dQ                dS| v r~dT| v rt        dUt        | dS                nat        dUdVj!                  t        | dS         t#        j$                  t'        t)        j(                               | dS   dWz  z
  X      Y             dT| v rIt        dZd[j!                  t        | dT         t#        j$                  | dT   | dS   z
  dWz  X      Y             | j                  d      d5k(  rkd\| v rg| d\   rb| d\   d]   d^   d_v rUt        d`daj!                  t        | d\   d]   db         t#        j$                  | d\   d]   db   | dP   z
  dWz  X      c             t        ddt        | de                df| v rt+        dg| df          dh| v rt+        di| dh          dj| v rt        dk| dj          dl| v rt        dm| dl          dn| v rI| dn   D| dn   d   | d   k7  r6| dn   d   }| dn   j                  d      |do| dn   d   z  z  }t        dp|       dq| v rt+        dr| dq          ds| v r6t+        dt| ds   j                         D cg c]  \  }}|duz   |z    c}}       dv| v rdw| dv   v r| dv   dw   }d|v rt        dx|d          t        dy|d          |d   | j                  d!| j                  dd            k(  }t        dz|rdn	t-               |d   z   |rd{n	t               z          |d   | d   k(  }|dI   | dI   k(  xs | }t        d||rdn	t-               |d   z   |rdn	t               z   d}z   |rdn	t-               z   |dI   z   |r|rd{n|rdn	t               z          g }|d?   D ]%  }|d?   |   | d?   |   k7  s|j/                  |       ' t        d~t        |d?   |             |j                  d      }t1        |t2              rl|| j                  d      k(  r#t        dt5        j6                  |      d{z          n5t        dt-               t5        j6                  |      z   t               z          | j                  d      s.| j                  d      t        dt9        | d   | d                | j                  d      t        dt9        | d   | d                | j                  d      &t        dt;        | j                  d      d             | j                  d      &t        dt;        | j                  d      d             | j                  d      &t        dt;        | j                  d      d             | j                  d      rt=        d| d          | j                  d      rt        dt?        | d                d| v rt=        d| d          d| v rt        dt        | d                d| v rt        dt        | d                d| v rt        d| d          d| v rt=        d| d          d| v rt=        d| d          d| v rt=        d| d          d| v rt=        d| d          d| v rt=        d| d          | D ]  }||vst=        || |           y c c}}w c c}}w )N)Dr   tryrG   r   	workspacer  r$  rX  r   workflowr   rootExecutionr   	parentJobparentJobTry	originJobanalysisr   functionrunInputoriginalInputinputr   r  
launchedByr  r  failureReasonfailureMessager   r  waitingOnChildren	dependsOnrU  projectCacherG  r
  r  rP   instanceTyperq  executableNamefailureFromr  
tryCreatedstartedRunningstoppedRunningstateTransitionsdelayWorkspaceDestructionr  
totalPriceisFreeinvoiceMetadatapriority
sshHostKeyinternetUsageIPsspotWaitTimemaxTreeSpotWaitTimemaxJobSpotWaitTimespotCostSavingspreserveJobOutputstreeTurnaroundTime#selectedTreeTurnaroundTimeThreshold'selectedTreeTurnaroundTimeThresholdFromrunSystemRequirements!runSystemRequirementsByExecutable$mergedSystemRequirementsByExecutablerunStageSystemRequirementsr&  r   r  Tryr'  rG   rP   zJob namer  zExecutable namezProject contextr   r  r/  r  r,  r-  r.  r   r  	Workspacer  zCache workspacern  rU  r$  Appr   rQ   globalworkflowWorkflowrX  Appletr  r  zInstance Typer  Priorityr  r   r  zRoot executionr  z
Origin jobrf   r  z
Parent jobr  zParent job tryr   zParent analysisr  AnalysisStager   r  r   r  )r   r  Functionr  r  Input)r   r  zResolved JBORsz=>)r   Outputr   r  zOutput folderzPreserve Job Outputs Folderr  zLaunched byr  r2  r  r  zTry createdr  r  zStarted runningz{t} (running for {rt})r   seconds)trtzStopped runningz{t} (Runtime: {rt})r  newState)r   r   
terminatedFinishedz{t} (Wall-clock time: {wt})setAt)r  wtr5  r  r  zPending subjobsr  z
Depends onr  zFailure reasonr  zFailure messager   try %dzFailure is fromr
  r;  r  r<  rS   rG  
clonedFromz	Re-run ofz namedz usingz (same)z output folderr   z input)r   rq  z	 sys reqsr  r  zTotal Pricer6  r7  r  zSpot Cost Savingsr  zSpot Wait TimeT)
in_secondsr  zMax Tree Spot Wait Timer  zMax Job Spot Wait Timer  zInvoice Metadatar  zSSH Host Keyr  zInternet Usage IPsr  zTree TATr  zSelected tree TAT thresholdr  zSelected tree TAT fromrr  r  zRun Sys Reqsr  zRun Sys Reqs by Execr  zMerged Sys Reqs By Execr  zRun Stage Sys Reqs) r   rX   r   rV   r    r  zipr   r   r   r   r   rm   r
   r   r   rl   r   	timedeltar6   timer   r   rk   r@   r   rZ   r[   r>  r   r   r  )r^   r?  r@  r   r   analysis_stager  r  default_fieldsr   input_with_jborsfailure_fromr   r   cloned_hashsame_executablesame_projectsame_folderdifferent_inputsr   cloned_sys_reqsrv   s                         r   print_execution_descr  +  s   ] d4j!xx"E3tE{+,g'~$v,2JV-4D)9$:$F%t,<'=>!4	?34Hd8n-4K$x.d8n6O6OPW6X^_1`"abdKk!23%tN';<Kk!23}E4;'	,	#	.	./?	@J\ 23	T	Hd8n-	t	JZ 0 67$~"6"BOT.%9:TJZ 01DM23$$d?&;<d$c*d;&78K L#&L${"34xx+$c$~*>&?@4 !-)40@+ABTd:.:JZ 01GT']+4*3CZ8H8RTXYaTb4c*d 	K&A&~!/!<E+CF*EtDzJ	K TJZ 01T+/+@+F+F+Hf41aAUYZdUeLe!Q$ff7Lj1AN$[\7Lo1F$GHNxx
D,AB'] V  T']1%59I!9L%LtG}Q/1A!1DnUV >a+\.QVQX[_Q_bfbhQh-jkxd8n!=>4OT(^4-W[W_W_`tWu  {C  GK  L`  Ga  {at4H/I(/S  gj  ktL1!"56	+DO<=xx)M#3D4F#GH4t#)+;DAQ<R+ST)+C+J+JM]^bcs^tMu%%c$))+.>tDT?UW[?[.[\ ,K ,^ _4%'<'C'Ct$456!!40@+A$GWBX+X[_*_` (D (b 	c xxJ&+=+E$OaJb"#B'
37WW
$A$H$H"4(:#;B#?#HI%%t4F/G/KG/TUYZcUd/dgk.kl %I %n o !1$z2B!CDd"*D1D,EFdtK'89$$d?&;<4%t,<'=>m!4!@T-EXY]E^bfgkblElM*40""5)5I](;E(BBBL%|4~f.tDQ]L^LdLdLf'gjc5c	E(9'ghD\T)_<9ol3;[%67+f"56),7488HdhhW\^`Na;bbO2fh'5#6*9Ytv#G H 'y1T)_DL%h/4>AUEUK(268'	2+3#/RTV+=?B+C $/RFH+> (1	+2
 ,8KYT_beiek+m n  "#J/ 2z*40D4DT4JJ$++D12 xk*6M`p)qr)oo.BCO/40"dhh/C&DD&{DJJ4OR[4[\&{FHtzz/?Z4Z]a]c4cd88H$((<"8"DM?43EDQ[L\#]^xx!".'>O9PW[\fWg)hixx+$&6txx7O\`&abxx%&2-/?I^@_lp/qrxx$%1,.>txxH\?]jn.opxx!"+T2C-DExx>+A$|BT+UVT!-t4F/GHt#JD)=$> ?@,413t<a7b3cd0D8,d3\.]^t#+T2F-GH4'.E)FG*d2/6Y1Z[-52D9_4`a#t+-t4P/QR 1))UDK01k gh (hs   1kkk
c                 "    ddd}| |v r||    S dS )a8  
    This is a (temporary) hardcoded mapping between currency_list.json in nucleus and standard
    locale string useful for further formatting

    :param dx_code: An id of nucleus/commons/pricing_models/currency_list.json collection
    :return: standardised locale, eg 'en_US'; None when no mapping found
    en_USen_GB)r   r   Nr~   )dx_codecurrency_locale_maps     r   locale_from_currency_coder    s(     &'2+26I+Iw'StSr!   c                     | dk  rdnd}||d   dk(  r|d   ndz  }|d   dk(  rd|d   z  nd}d	j                  t        |             }||z   |z   S )
a  
    Formats currency value into properly decorated currency string based on provided currency metadata.
    Please note that this is very basic solution missing some of the localisation features (such as
    negative symbol position and type.

    Better option is to use 'locale' module to reflect currency string decorations more accurately.

    See 'format_currency'

    :param value:
    :param meta:
    :return:
    r   rf   rQ   symbolPositionleftsymbolrightz %sz{:,.2f})rl   abs)r   r8  r   suffixformatted_values        r   format_currency_from_metar    so     AIS2F
%5 6& @d8nbHF'+,<'='HUT(^#bF&&s5z2OO#f,,r!   c                     	 |t        |d         }|t        | |      S t        j                  t        j                  |       t        j
                  | d      S # t        j                  $ r t        | |      cY S w xY w)a  
    Formats currency value into properly decorated currency string based on either locale (preferred)
    or if that is not available then currency metadata. Until locale is provided from the server
    a crude mapping between `currency.dxCode` and a locale string is used instead (eg 0: 'en_US')

    :param value: amount
    :param meta: server metadata (`currency`)
    :return: formatted currency string
    dxCodeT)grouping)r  r  locale	setlocaleLC_ALLr6  Error)r   r8  currency_locales      r   r>  r>    ss    
6"7XGO",UD99V]]O<??5488<< 6(556s   A :A A=<A=c                    t        d| d          d| v r3d| v r/d| v r+t        d| d   dz   | d   dk7  r| d   dz   ndz   | d   z          d	| v rt        d
| d	          d}d| v rt        || d          d| v rt        d| d          y y )Nr&  r   firstmiddlelastr(  r1   rQ   emailEmailzDefault bill tor  appsInstalledzApps installed)r   r   )r^   bill_to_labels     r   print_user_descr.  (  s    d4j!$8t+$FDMC/TRZ^_aMaDNS4Hgijmqrxmyyz$GT']+%M4M4>2$)4+@A r!   c                 0    | D ]  }t        || |           y r   )r   )r^   rv   s     r   print_generic_descr0  6  s     -U,-r!   c                    t        | t              rH| j                  d      s7ddlm}  || j                  d            r| d   j                  d      d   | d<   | d   dv rt        | |       y| d   d	k(  rt        | |       y| d   d
k(  rt        | |       y| d   dv rt        | |       y| d   dk(  rt        |        y| d   dv rt        |        yt        | |       y)z
    :param desc: The describe hash of a DNAnexus entity
    :type desc: dict

    Depending on the class of the entity, this method will print a
    formatted and human-readable string containing the data in *desc*.
    rG   r   )	is_hashidr   rf   r   )r   r  	container)r?  r$  r  )rw   r  r4  )orgteamN)r@   r   rX   utils.resolverr2  splitrE  ru  r  r  r.  r0  r  )r^   r?  r2  s      r   
print_descr8  :  s     $dhhw&7.TXXd^$ J,,S1!4DMG}==41	g%	tW-	g*	*!$8	g-	-T73	g&	 	g/	)4 D'2r!   c                     |du rd| d   z   nd}| d   dv r)t               t               z   | d   z   t               z   |z   S | d   |z   S )NTz : r   rQ   rG   rX  r  rP   )r   r
   r   )r^   print_idaddendums      r   get_ls_descr=  V  sY    %-%5utDz!2HG}..v$v,.7(BBF|h&&r!   c                 .    t        t        | fi |       y r   )r  r=  r^   kwargss     r   print_ls_descrA  ^  s    	+d
%f
%&r!   c                      t               dz   t        d      z   dz   t        d      z   dz   t        d      z   dz   t        d      z   d	z   t        d
      z   t               z   S )Nr  z   r5  z       r  z      r(  r   r&  r?   )r   r   r   r~   r!   r   get_ls_l_headerrC  b  s    F&''	23  x() 	 t_	%
 
 S>" F r!   c                  *    t        t                      y r   )r  rC  r~   r!   r   print_ls_l_headerrE  l  s    	/
r!   c            
          dddddddddd	S )NT)	r   rG   r  r  r  rP   r   r9   r   r~   r~   r!   r   get_ls_l_desc_fieldsrG  p  s'    
 
r!   c                    d| v rNt        | d         }| d   dk7  rt               | d   z   t               z   }n t               | d   z   t               z   }nd}d}d}|r|| d   | d   dk7  rdndz   z  }|| d   z  }| d   d	v r#t	               t               z   |z   t               z   }d}d
| v r| d   dk(  rt        | d
         }nd| v rt        | d         dz   }dt        ddt        |      z
        z  }|t        dd|z
  z        z   t        | d         z   t        d      z   |z   t        |dz         z   |z   t        d      z   |r| d   t        d      z   ndz   | d   z   t        d      z   S )zO
    desc must have at least all the fields given by get_ls_l_desc_fields.
    r   r%   rQ   r   r  /rP   rG   r:  r9   r  r  z rowsr1   	      r  r   r   r   r   r?   )
rm   r   r   r
   r   r<   r   maxr   r   )r^   include_folderinclude_project	state_len	state_strname_strsize_strsize_paddings           r   get_ls_l_descrT  ~  s    $W&	=H$4=0469I$w-/$&8I		HDNT(^s-BcKKVHG}..6EG#h.7H~$w-61V-	T	tH~&0QCM 122Lc1y=)*+-CDDT-UVcN%& lS()* -55 dO	 FUY)C. @Z\	^ aeei`j	k
 cN r!   c                 .    t        t        | fi |       y r   )r  rT  r?  s     r   print_ls_l_descrV    s    	-
'
'(r!   c                    | d   du xs | d   dk(  xs |}|rt               dnd}| d   }	| d   dk(  r|	d	| d
   z   z  }	| j                  dd      }
|r|t               dz   t               z   z  }|t               t	               z   z  }| d   dk(  r|t               z  }||
t               z   z  }|
|	k7  r|
dz   |	k7  r|d|	z   dz   z  }|r|t               dz   t               z   z  }|t        d      t        | d         z   t        d      z   | d   z   z  }|r|dz   S |r(| j                  d      |d| j                  d      z  z  }|t        d|r|rdn|rdndz         z  }|| d   dd t        d      z   z  }|t        | d         z  }g }|r'|j                  t               dz   t               z          | d   dk(  r| j                  d       r| d   d!v rZ| j                  d"      rIt        j                  t        | d"   | d    z
        d#z  $      }|j                  d%t        |      z          no| d   d&k(  rgt        t        t!        j                          | d    d#z  z
        d'      }d(j#                  t        j                  |$      )      }|j                  |       |r|dd*j%                  |      z   dz   z  }|rt        d|r|rdn|rdndz         }| j                  d+      dk7  r|t'        | d+   |,      z  }|S | d   d-k(  rUd.| v rQ||t               z   | d.   z   t               z   d/z   t)        | j                  d0d      |j+                  d      1      z   z  }|S )2a  
    :param desc: hash of execution's describe output
    :param has_children: whether the execution has children to be printed
    :param single_result: whether the execution is displayed as a single result or as part of an execution tree
    :param is_cached_result: whether the execution should be formatted as a cached result
    :param show_try: whether to include also try no
    :param as_try_group_root: whether the execution should be formatted as an artifical root for multiple tries
    r  NrG   r  z* rQ   r  rw   r   r  rP   z	<no name>rL   z:mainr   r?   rU   r   z) r   z triesr  r  rg   u   │ z  r  r.  r1   r  cachedr  )r   r   r  waiting_on_outputr  r   r  zruntime r   r   zrunning for {rt})r  rT   r   )r   r   r  r   r  )rh   )r   rX   r   r   r   r   r   r    r   rk   r   r   r  r6   r   rL  r  rl   rA   r   r   r   )r^   has_childrensingle_resultshow_outputsr   show_tryas_try_group_rootis_not_subjobresultcanonical_execution_nameexecution_namecached_and_runtime_strsruntimeseconds_runningrD  r   s                   r   get_find_executions_stringrf    s    %-]g*1L]P]M#(?dRF#$45G} C$z*:$:: XXfk2N $&3,''
dftvoFG}
")+
ntv%%F11nW6LPh6h$11C77$&3,'' io
4= 99IdOKdSWjXXF  DHHUO/)dhhuo-- i=\XePTkmoppF
d< $y~55F
$T)_55F &&vx(':TV'CDG}88$%G} UUZ^ZbZbcsZt",,S>N9OPTUePf9f5gim5mn'..zCL/HIg)+"%c$))+d;K6Ld6R*R&SUV"W(//83E3Eo3^/_'..s3$#:;;cAA4m7[hSWnprs88H%'XvFFF
 M	 ']h&?d+Bftvo_(==FMPTUYU]U]^nprUsgmgtgtuygzQ| | |F Mr!   c                      t        dd       y )NNotezThis workflow has an explicit input specification (i.e. it is locked), and as such stage inputs cannot be modified at run-time.)r   r~   r!   r   r  r    s     RSr!   )TTFr   )rg   zOutput: N)NrS   r~   )F)FF)FTFFF)T__doc__
__future__r   r   r   r   r   r  rZ   r3   r   rW   r!  r  collectionsr   r   printingr	   r
   r   r   r   r   r   r   r   r   r   pretty_printr   compatr   r    r&   r2   r<   rC   rY   rt   r   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rE  rI  ru  r  r  r  r  r  r  r  r>  r.  r0  r8  r=  rA  rC  rE  rG  rT  rV  rf  r  r~   r!   r   <module>ro     sj  & S R , , ,   #  n n n n * 
) /
f"/*X^@ # O			 $( H.B3<U8*&<AD  	^TCB1H?1BB1HRr%h9A1H	T-,6.B-38''%P) VZY^HTSr!   