
    5i?.                         d Z ddlmZmZmZmZ ddlZddlmc m	Z	 ddl
mZmZmZ ddlmZ ddlmZmZmZ dd	lmZmZmZ dd
lmZmZ d Zd Zd Zd Zd Zd Z d Z!y)zQ
This submodule contains workflow-based commands for the dx
command-line client.
    )print_functionunicode_literalsdivisionabsolute_importN   )process_dataobject_args%process_single_dataobject_output_argsprocess_instance_type_arg   )io_val_to_str)resolve_existing_pathresolve_pathis_analysis_id)err_exit
DXCLIErrorInvalidState)try_calltry_call_err_exitc                 ~   t        t        |        t        t        |        d }| j                  \t	        | j                        r| j                  }n:t        t
        | j                  d      \  }}}t        j                  |d   |      }| j                  3t        j                  }t        j                  j                  dd      }d }n<t        t        j                  j                  j                  | j                        \  }}}| j                  !	 t        | j                  d      \  }| _        }	 t        j                   | j"                  | j$                  | j&                  | j                  ||| j(                  | j*                  | j,                  | j.                  | j0                  || j2                  |      }	| j4                  rt7        |	j9                                y t        j                  j:                  j=                  |	j;                  d	d	
      | j>                         y #  Y xY w#  tA                Y y xY w)Nentityexpectedidproject	DX_CLI_WD/folder)titlesummarydescriptionoutput_folderr   nametagstypeshidden
propertiesdetailsr   parents	init_fromT)incl_propertiesincl_details)!r   r   r	   initr   r   dxpyget_handleroutputWORKSPACE_IDconfiggetutilsresolverr   r"   new_dxworkflowr   r    r!   r$   r%   r&   r'   r(   r)   briefprintget_iddescribe
print_descverboser   )
argsr*   init_project_init_folderinit_resultr   r   r#   _ignore
dxworkflows
             s/home/marpiech/ifpan-abm-pgxpred/analysis/marpiech-gwas-test/venv/lib/python3.12/site-packages/dxpy/cli/workflow.pynew_workflowrD   !   s   $d+2D9Iyy$))$		I6>?T?CyyHP7R3L, ((T):LQI{{##c2 ()<)<)I)I4;; W%	3?@R@R]e3f0GT'
((tzz4<<595E5E7;7I7I18t.2iitzz0415f15T
 ::*##%&JJ**:+>+>tbf+>+g+/<<9!	 
s     H' 4B,H. !AH. 'H+.H<c                     t        t        | d      \  }}}	 ||d   j                  d      st        d| z   dz         	 |d   |fS #  t	                Y xY w)a  
    :param path: a path or ID to a workflow object
    :type path: string
    :returns: tuple of (workflow ID, project ID)

    Returns the workflow and project IDs from the given path if
    available; otherwise, exits with an appropriate error message.
    r   r   r   z	workflow-zCould not resolve "z" to a workflow object)r   r   
startswithr   r   )pathr   _folderpathentity_results       rC   get_workflow_id_and_projectrJ   L   ss     +33H$Ya*b'G[- d(;(F(F{(S2T9<TTUU )T ''
s   'A Ac           	      \   t        | j                        \  }}t        t        j                  j
                  j                  | j                  | j                        }t        j                  j                  j                  |      }t        |j                  | d       d }| j                  	 t        | j                  d      \  }}}n| j                  | j                  }t        t         |        t        j"                  ||      }t        |j$                  || j&                  | j(                  ||j*                  | j,                        }	| j.                  rt1        |	       y t        j                  j2                  j5                  |j3                                y #  | j                  }Y xY w)NFrequire_all_inputsr   r   r   )r#   stage_idr   stage_inputinstance_type)rJ   workflowr   r.   r4   r5   get_exec_handler
executablealiascliexec_ioExecutableInputsupdate_from_argsr"   r   relative_output_folderr
   
DXWorkflow	add_stager#   rN   inputsrP   r7   r8   r:   r;   )
r=   workflow_idr   exec_handlerexec_inputs
folderpathrA   _nonerB   rN   s
             rC   r[   r[   ]   sR   6t}}EK DJJ//@@ OO JJ(L ((""33LAK[))4EJ J%	,)5d6H6HS[)\&GZ 
	$	$	000
 &-g>J
,,$!YY!%)$/$6$6&*&8&8:H zzh

&&z':':'<='	,++Js   ,F F+c                 (   t        | j                        \  }}t        j                  ||      }|j	                         }t         t        j                         t        j                         z   dz   t        j                         z   dz   j                  d"i |       t                t        d|d   z          t        d|j                  d      |j                  d      ndz          t        |d	         d
k(  rt                t        d       t        |d	         D ]n  \  }}||d<   t                |d   d|d<   t         t        j                         dz   t        j                         z   dz   j                  d"i |       t         dj                  d"i ||j                  d      du r2dt        j                         z   dz   t        j                         z   dz   ndz          |d   |d   j!                  d      r|d   }nd|d   |d   ndz   }t        dj                  |             d|v s|d   s!t        ddj#                  |d   D cg c]$  }d j                  |t%        |d   |         !      & c}      z          q y c c}w )#Nr   z{name}z ({id})zTitle: r   zOutput Folder: outputFolder-stagesr   z6 No stages; add stages with the command "dx add stage"ir#   z	<no name>z	Stage {i}z: {name} ({id})zExecutable      {executable}
accessibleFz (inaccessible) r   r   z<workflow output folder>/zOutput Folder   {folder})r   inputzBound input     z
                z{key}={value})keyvalue )rJ   rQ   r.   rZ   r:   r8   printingBOLDGREENENDCformatr3   len	enumerate	UNDERLINEREDrF   joinr   )	r=   r]   r   rB   descrf   stagestage_output_folderrl   s	            rC   list_stagesr|      sh   6t}}EKg>J D	
^8==?X^^--88==?JYV
^
^
fae
fg	G	)d7m
#$	
488N;S;_txx7eh
ij
4>aFGd8n- 5c
= 'E&M_x!!#k1HMMOCFWW__hbghi3,33<e<		,'50 HLLN"^3hmmoEK68: 	; ?&5?+E+Ec+J"'/"=TYZbTcToxuw"x(//7J/KLeg$$$ >& $**s-gWZH[:\*]&   &s   )Jc                 2   t        | j                        \  }}	 t        | j                        | _        t	        j
                  ||      }t        |j                  | j                        }| j                  rt        |       y t        d|z          y #  Y bxY w)Nr   zRemoved stage )
rJ   rQ   intrz   r.   rZ   r   remove_stager7   r8   )r=   r]   r   rB   rN   s        rC   r   r      sw    6t}}EK_
 g>J
//<Hzzh)*s   B Bc           	      ,   t        | j                        \  }}t        | j                  | j                  | j
                  | j                  | j                  | j                  g      st        d       y | j                  !	 t        | j                  d      \  }| _        }t        j                  ||      }t        |j                  | j                  | j                  | j
                  | j                  | j                  | j                         y #  Y txY w)NNo updates requested; none mader   r   r   )r   unset_titler    r!   r"   unset_output_folder)rJ   rQ   anyr   no_titler    r!   r"   no_output_folderr8   r   r.   rZ   r   update)r=   r]   r   rA   rB   s        rC   update_workflowr      s    6t}}EK

DMM4<<9I9I4K]K]%%' (/0%	3?@R@R]e3f0GT'
 g>JZ::\\))--!%!6!68	s   ? D Dc                 p   t        | j                        \  }}t        j                  ||      }t	        t
        |        |j                  }	 t        | j                        | _        t        | j                  | j                  | j                  | j                  | j                  | j                  | j                   | j"                  | j$                  g	      st'        d       y d }| j                  t	        t        j(                  j*                  j,                  | j                  | j.                        }t        j0                  j2                  j5                  |      }t	        |j6                  | d       |j8                  }n| j                  s| j                   s| j"                  rt        j(                  j*                  j-                  |j;                  | j                        d         }t        j0                  j2                  j5                  |      }t	        |j6                  | d       |j8                  }nd }d }	| j                  	 t=        | j                  d      \  }
}	}n| j                  | j                  }		 |j?                  | j                  || j@                  | j                  | j                  |	|| j$                  |	       y #  Y hxY w#  | j                  }	Y fxY w# tB        $ r}d	tE        |      v rd
}d|jF                  v r`|jF                  d   rQ|dz  }|djI                  |jF                  d   D cg c]  }tK        jL                  |dd       nc c}w c}      z  }n|dz  }|dz  }tO        tP        tQ        |             ntS                Y d }~y Y d }~y d }~w tS                Y y xY w)Nr   r   FrL   rS   r   r   )rS   forcer#   
unset_namer   rO   rP   edit_version
compatiblezJThe requested executable could not be verified as a compatible replacementincompatibilitiesz for the following reasons:

z- z  )initial_indentsubsequent_indent.z4
Rerun with --force to replace the executable anyway)expected_exceptions	exception)*rJ   rQ   r.   rZ   r   r
   editVersionr~   rz   r   rS   r#   no_namer"   rY   rk   
input_jsonfilenamerP   r8   r4   r5   rR   rT   rU   rV   rW   rX   r\   	get_stager   update_stager   r   strr(   rx   ro   fillr   r   r   )r=   r]   r   rB   initial_edit_versionnew_exec_handlerr_   rO   existing_exec_handlerr`   rA   ra   eerr_msgincompats                  rC   r   r      s)   6t}}EKg>J &-%11_
 DLL$:L:L++TZZ$--""$ % 	/0"#DJJ$7$7$H$H$(OO$(JJ0 hh&&778HI--tN!((	t$-- $

 3 3 D DZEYEYZ^ZdZdEefrEs thh&&778MN--tN!(( J%	,)5d6H6HS[)\&GZ 
	$	$	000


+;&*jj%)YY+/<<'1,7.2.@.@-A 	  	CM>	,++J   3q6!bG"aii/AII>Q4R::499 78ii@S6T&V +3 '/mmHCGFJ'L &V &V W W
 3NNGz'?RS Ts>   K
 K =AK% 
KK"%	N5.AN$<M?N$$N5)"__doc__
__future__r   r   r   r   r.   dxpy.utils.printingr4   ro   parsersr   r	   r
   utils.describer   utils.resolverr   r   r   
exceptionsr   r   r   rj   r   r   rD   rJ   r[   r|   r   r   r   rn       rC   <module>r      s_   "
 S R  & &1 1 * R R = = +)V("#>J D+84Kr   