a *NaqF @sdUddlZddlZddlZddlmZmZmZmZmZm Z m Z ddl Z ddl Z ddl Z ddl mZGdddeZee jjejddddZejejd d d Ze ee jjfeee eeeeffd d dZGdddeZGdddeZGdddeZeeedZeee eeeeeeffed<e jeeeeefeeeeddddZ dS)N)AnyDictListOptionalType TYPE_CHECKINGUnion)clic@seZdZejeeeeefddddZedddZ eddd Z ddd d Z ej j dd d Zeej jeej j fdddZeej j dddZddddZeeefdddZdS) GitlabCLIN)glwhatactionargsreturncCstj|tjjd|_|jj|_|dd|_ | |_ ||_ ||_ ttjj|jjd|_trn|jjdusnJ|jj|j |j_|||_|jjr|jjD]:\}}||j vr|}||j |||j |<qdS)N) namespace-_Manager)r Z what_to_clsgitlabv4objectscls__name__cls_namereplacer lowerr r rgetattrmgr_clsr_pathmgr_typesitemskeysZ set_from_cliget)selfr r r r attr_nameZtype_clsobjr'h/private/var/folders/js/6pj4vh5d4zd0k6bxv74qrbhr0000gr/T/pip-target-22xwyzbs/lib/python/gitlab/v4/cli.py__init__s(    zGitlabCLI.__init__)rcCsNd|j|jf}t||r&t||Sd|j}t||rFt||S|S)Nzdo_%s_%szdo_%s)r r hasattrr do_custom)r$methodr'r'r(__call__Bs     zGitlabCLI.__call__cCstj|j|jd}|ri}|jjrB|jjD]}|j|||<q.t|jt j j st rht |jjtshJ|j|jj||jj<||j|}|jdd}t||fi|jSt|j|jfi|jSdS)Nrr)r custom_actionsrr r_from_parent_attrsr issubclassrrmixinsGetWithoutIdMixinr isinstance_id_attrstrpoprr)r$Zin_objdatakr& method_namer'r'r(r+Ps zGitlabCLI.do_customc Csrz<|jjjt|jddd}|j}tjj |Wn0t yl}zt d|WYd}~n d}~00dS)NZ project_idT)lazyz!Impossible to download the export)r Zprojectsr#intrexportsdownloadsysstdoutbufferwrite Exceptionr die)r$projectr8er'r'r(do_project_export_downloadcs z$GitlabCLI.do_project_export_downloadc Cs`trt|jtjjsJz|j|j}Wn0tyZ}zt d|WYd}~n d}~00|S)NzImpossible to create object) rr4rrr2Z CreateMixincreaterrCr rDr$resultrFr'r'r( do_createls"zGitlabCLI.do_createc Csftrt|jtjjsJz|jjfi|j}Wn0ty`}zt d|WYd}~n d}~00|S)NzImpossible to list objects) rr4rrr2Z ListMixinlistrrCr rDrIr'r'r(do_listus"zGitlabCLI.do_listc Cst|jtjjrbz|jjfddi|j}Wn0ty\}zt d|WYd}~n d}~00|St rt|jtjj szJt|j j tsJ|j|j j }z|jj|fddi|j}Wn0ty}zt d|WYd}~n d}~00|S)NidzImpossible to get objectr;F)r4rrr2r3r#rrCr rDrZGetMixinrr5r6r7)r$rJrFrNr'r'r(do_gets""zGitlabCLI.do_getc Cstr*t|jtjjsJt|jjts*J|j |jj}z|jj |fi|j Wn0t y}zt d|WYd}~n d}~00dS)NzImpossible to destroy object)rr4rrr2Z DeleteMixinrr5r6rr7deleterCr rD)r$rNrFr'r'r( do_deleteszGitlabCLI.do_deletec Cstrt|jtjjsJt|jtjjr.d}n&trDt|j j t sDJ|j |j j }z|j||j }Wn0ty}ztd|WYd}~n d}~00|S)NzImpossible to update object)rr4rrr2Z UpdateMixinr1rr3rr5r6rr7updaterCr rD)r$rNrJrFr'r'r( do_updates"zGitlabCLI.do_update)r __module__ __qualname__rGitlabr6rr)rr-r+rGbase RESTObjectrKrZRESTObjectListrrMrrOrQrSr'r'r'r(r s #    r )r sub_parserrc sjd}ttjj|}dD]L}t||s.q||jddd|jrr|jD]}jd| ddd dqR|d kr|j D]}jd| ddddqjd ddjd ddjd ddd|dkrj durj dd}jd|d d|dkrlt tj jsDj durDj dd}jd|d d|jD] }jd| ddddqJ|dkr|jjD] }jd| ddd dq~|jjD] }jd| ddddq|dkrj durj dd}jd|d d|jjD],}|j krjd| ddd dq|jjD],}|j kr<jd| ddddqs  z1_populate_sub_parser_by_class..cs0g|](}|jkrjd|ddddqSr\rrFrZr_rardr'r(res  cs0g|](}|jkrjd|ddddqSr^r_rardr'r(re#s  cs0g|](}|jkrjd|ddddqSrfr_rardr'r(re*s  )rrrrrr* add_parserr`r0rZ _list_filtersr5r1r2r3Z_optional_get_attrsZ _create_attrsr[optionalZ _update_attrsr r/) rrYZ mgr_cls_namerZ action_namercZid_attrnamer[rhdummyr'rdr(_populate_sub_parser_by_classs                                   rk)parserrcCs|jdddd}d|_g}tjjjD]4}t|ts8q(t |tj j r(|j dur(| |j q(|jtdd|D]8}t|}||}|jdd d d}t||d|_qt|S) Nobjectr zObject to manipulate.)titledesthelpTr)keyr ZwhactionzAction to execute.)Zadd_subparsersr[rrr__dict__valuesr4typer1rWZ RESTManagerZ_obj_clsappendsortoperator attrgetterr Z cls_to_whatrgrk)rlZ subparsersclassesrZarg_nameZ object_groupZobject_subparsersr'r'r( extend_parser3s*     rz)r&fieldsrcs0t|tr|Sr*fdd|jDS|jS)Ncsi|]\}}|vr||qSr'r')rbr9vr{r'r( Wzget_dict..)r4r6 attributesr!)r&r{r'r}r(get_dictPs  rc@sVeZdZeeeeeffeddddZeeee j j feeeddddZ dS) JSONPrinterNdkwargsrcKsddl}t||dS)Nrjsonprintdumps)r$rrrr'r'r(display\szJSONPrinter.displayr8r{rrc s(ddl}t|fdd|DdS)Nrcsg|]}t|qSr'rrbr&r}r'r(reirz,JSONPrinter.display_list..r)r$r8r{rrr'r}r( display_listaszJSONPrinter.display_list rrTrUrr6rrrrrrWrXrr'r'r'r(r[s "rc@sVeZdZeeeeeffeddddZeeee j j feeeddddZ dS) YAMLPrinterNrcKs>zddl}t|j|ddWnty8tdYn0dS)NrFZdefault_flow_style\PyYaml is not installed. Install it with `pip install PyYaml` to use the yaml output featureyamlrZ safe_dump ImportErrorexit)r$rrrr'r'r(rms zYAMLPrinter.displayrc sLz,ddl}t|jfdd|DddWntyFtdYn0dS)Nrcsg|]}t|qSr'rrr}r'r(rerz,YAMLPrinter.display_list..Frrr)r$r8r{rrr'r}r(rys zYAMLPrinter.display_listrr'r'r'r(rls "rc@sVeZdZeeeeeffeddddZeeee j j feeeddddZ dS) LegacyPrinterNrc  s^|dd}|dd}|d}tr2|dus2Jtttftddfdd }|rt|trl|||dS|jrt ||jd}t d |j|f|j }|jr| |j|||ntrt|t jjsJ|jrt ||j}t d |jd d |f|jrZt ||jpd } | d ddd} d |j| f} t| dkrR| ddd} t | dS)NverboseFpaddingrr&)rrrcs~t|D]l}||}t|trZtdd||ddf|d}j|d||dq tdd||dd|fq dS) Nz%s%s: rrr.T)rrr&z%s%s: %s)sortedr"r4dictrrr)rrr9r|Z new_paddingr$r'r( display_dicts z+LegacyPrinter.display..display_dictz%s: %srrNone  rOLz...)r#rrr6rr<r4rr5rrrr7rrWrXrZ_short_print_attrlen) r$rrrrr&rrNattrsvalueliner'rr(rs:          zLegacyPrinter.displayrcKsP|dd}|D]:}t|tjjr:|jt||||dnt|tdqdS)NrFrr&r)r#r4rrWrXrrr)r$r8r{rrr&r'r'r(rs  zLegacyPrinter.display_listrr'r'r'r(rs "2r)rlegacyrPRINTERS)r r r rroutputr{rc Cst||||d}|}t|} t|tr<| j|d|dnt|trX| j|||dnjt|tjj r~| jt ||||dnDt|t rt |n0t|t rtjj|nt|drt |dS)N)r r r rTr)rdecode)r rr4rrrLrrrWrXrr6rbytesr?r@rArBr*r) r r r rrrr{Zg_clir8printerr'r'r(runs        r)!argparserwr?typingrrrrrrrrZ gitlab.baseZgitlab.v4.objectsr rmr rWrXZ_SubParsersActionrkArgumentParserrzr6rrrrr__annotations__rVboolrr'r'r'r(sH $   #C